Changes in / [679864e1:242d458]


Ignore:
Files:
318 added
450 deleted
174 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r679864e1 r242d458  
    1313src/Makefile
    1414
     15# genereted by premake
     16src/examples/gc_no_raii/build
     17
    1518# build directories
    1619.deps
     
    1821bin
    1922lib
     23include
    2024
    2125# src executables, for lib and bin
    2226src/driver/cc1
    2327src/driver/cfa
    24 src/cfa-cpp
     28src/driver/cfa-cpp
     29
     30src/libcfa/builtins.cf
     31src/libcfa/extras.cf
    2532src/libcfa/libcfa-prelude.c
    2633
    2734# generated by bison and lex from cfa.yy and lex.ll, respectively
    2835src/Parser/parser.output
    29 
    30 # generated by latex
    31 doc/refrat/refrat.aux
    32 doc/refrat/refrat.bbl
    33 doc/refrat/refrat.blg
    34 doc/refrat/refrat.brf
    35 doc/refrat/refrat.dvi
    36 doc/refrat/refrat.idx
    37 doc/refrat/refrat.ilg
    38 doc/refrat/refrat.ind
    39 doc/refrat/refrat.log
    40 doc/refrat/refrat.out
    41 doc/refrat/refrat.pdf
    42 doc/refrat/refrat.ps
    43 doc/refrat/refrat.toc
  • INSTALL

    r679864e1 r242d458  
    33
    44Cforall is built using GNU Make and the GNU Autoconf system.  It also requires
    5 g++ version 4, bison and flex.  On systems where GNU Make is the default make
    6 it may suffice to build the system by entering the commands
     5g++ version >= 4.6, bison and flex.  On systems where GNU Make is the default
     6make, the system is built by entering the commands:
    77
    88        ./configure
     
    1717
    1818--prefix=/some/directory controls the path prefix common to all installed
    19   cfa-cc components.  Some components will be installed in /some/directory/bin,
     19  cfa-cc components.  Some components are installed in /some/directory/bin,
    2020  others in /some/directory/lib.  If unspecified, this defaults to /usr/local.
     21  To use (a subdirectory of) your home directory, ${HOME}/some/dir works, but
     22  it is important not to put quotes around the directory path; Cforall may
     23  appear to build, but the installed version may not work properly.
    2124
    2225--with-backend-compiler=PROGRAM specifies the installed path of gcc.  It
  • Makefile.am

    r679864e1 r242d458  
    1111## Created On       : Sun May 31 22:14:18 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Mon Jun  1 20:20:40 2015
    14 ## Update Count     : 5
     13## Last Modified On : Fri Jun 17 14:56:18 2016
     14## Update Count     : 13
    1515###############################################################################
    1616
     
    1919EXTRA_DIST = Docs                       # non-source files
    2020BACKEND_CC = @BACKEND_CC@               # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
     21
     22MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
  • Makefile.in

    r679864e1 r242d458  
    5151CONFIG_CLEAN_FILES =
    5252CONFIG_CLEAN_VPATH_FILES =
     53AM_V_GEN = $(am__v_GEN_@AM_V@)
     54am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     55am__v_GEN_0 = @echo "  GEN   " $@;
     56AM_V_at = $(am__v_at_@AM_V@)
     57am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     58am__v_at_0 = @
    5359SOURCES =
    5460DIST_SOURCES =
     
    111117ALLOCA = @ALLOCA@
    112118AMTAR = @AMTAR@
     119AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    113120AUTOCONF = @AUTOCONF@
    114121AUTOHEADER = @AUTOHEADER@
     
    118125CC = @CC@
    119126CCDEPMODE = @CCDEPMODE@
     127CFA_BACKEND_CC = @CFA_BACKEND_CC@
    120128CFA_BINDIR = @CFA_BINDIR@
     129CFA_FLAGS = @CFA_FLAGS@
    121130CFA_INCDIR = @CFA_INCDIR@
    122131CFA_LIBDIR = @CFA_LIBDIR@
     
    136145EGREP = @EGREP@
    137146EXEEXT = @EXEEXT@
    138 GCC_PATH = @GCC_PATH@
    139147GREP = @GREP@
    140148INSTALL = @INSTALL@
     
    215223SUBDIRS = src/driver src src/libcfa     # order important, src before libcfa because cfa-cpp used to build prelude
    216224EXTRA_DIST = Docs                       # non-source files
     225MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
    217226all: config.h
    218227        $(MAKE) $(AM_MAKEFLAGS) all-recursive
     
    629638        @echo "This command is intended for maintainers to use"
    630639        @echo "it deletes files that may require special tools to rebuild."
     640        -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
    631641clean: clean-recursive
    632642
  • aclocal.m4

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

    r679864e1 r242d458  
    11/* config.h.in.  Generated from configure.ac by autoheader.  */
     2
     3/* Location of include files. */
     4#undef CFA_BACKEND_CC
    25
    36/* Location of cfa command. */
    47#undef CFA_BINDIR
     8
     9/* compilation flags for cfa libraries and test programs. */
     10#undef CFA_FLAGS
    511
    612/* Location of include files. */
     
    1016#undef CFA_LIBDIR
    1117
    12 /* Location of cfa files. */
     18/* Location of cfa install. */
    1319#undef CFA_PREFIX
    1420
     
    2026/* Define to 1 if using `alloca.c'. */
    2127#undef C_ALLOCA
    22 
    23 /* Path/name of C compiler. */
    24 #undef GCC_PATH
    2528
    2629/* Define to 1 if you have `alloca', as a function or macro. */
  • configure

    r679864e1 r242d458  
    566566PACKAGE_URL=''
    567567
    568 ac_unique_file="src/main.cc"
    569568# Factoring default headers for most tests.
    570569ac_includes_default="\
     
    640639CXXFLAGS
    641640CXX
     641CFA_FLAGS
    642642CFA_LIBDIR
    643643CFA_BINDIR
    644644CFA_INCDIR
    645645CFA_PREFIX
     646CFA_BACKEND_CC
    646647BACKEND_CC
    647 GCC_PATH
    648648MAINT
    649649MAINTAINER_MODE_FALSE
     
    672672INSTALL_SCRIPT
    673673INSTALL_PROGRAM
     674AM_BACKSLASH
     675AM_DEFAULT_VERBOSITY
     676AM_DEFAULT_V
     677AM_V
    674678target_alias
    675679host_alias
     
    713717ac_user_opts='
    714718enable_option_checking
     719enable_silent_rules
    715720enable_maintainer_mode
    716721with_backend_compiler
     
    13471352  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
    13481353  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
     1354  --enable-silent-rules          less verbose build output (undo: `make V=1')
     1355  --disable-silent-rules         verbose build output (undo: `make V=0')
    13491356  --disable-maintainer-mode  disable make rules and dependencies not useful
    13501357                          (and sometimes confusing) to the casual installer
     
    24062413
    24072414
    2408 
     2415#AC_CONFIG_SRCDIR([src/main.cc])
    24092416ac_config_headers="$ac_config_headers config.h"
    24102417
     2418# Check whether --enable-silent-rules was given.
     2419if test "${enable_silent_rules+set}" = set; then :
     2420  enableval=$enable_silent_rules;
     2421fi
     2422
     2423case $enable_silent_rules in
     2424yes) AM_DEFAULT_VERBOSITY=0;;
     2425no)  AM_DEFAULT_VERBOSITY=1;;
     2426*)   AM_DEFAULT_VERBOSITY=1;;
     2427esac
     2428am_make=${MAKE-make}
     2429{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
     2430$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
     2431if ${am_cv_make_support_nested_variables+:} false; then :
     2432  $as_echo_n "(cached) " >&6
     2433else
     2434  if $as_echo 'TRUE=$(BAR$(V))
     2435BAR0=false
     2436BAR1=true
     2437V=1
     2438am__doit:
     2439        @$(TRUE)
     2440.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
     2441  am_cv_make_support_nested_variables=yes
     2442else
     2443  am_cv_make_support_nested_variables=no
     2444fi
     2445fi
     2446{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
     2447$as_echo "$am_cv_make_support_nested_variables" >&6; }
     2448if test $am_cv_make_support_nested_variables = yes; then
     2449    AM_V='$(V)'
     2450  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
     2451else
     2452  AM_V=$AM_DEFAULT_VERBOSITY
     2453  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
     2454fi
     2455AM_BACKSLASH='\'
     2456
     2457
     2458if test "x${CXXFLAGS}" = "x"; then
     2459   export CXXFLAGS="-std=c++11 -g ${CXXFLAGS}"  # defaults, no -O2 for debugging and failures
     2460else
     2461   export CXXFLAGS="-std=c++11 ${CXXFLAGS}"     # flags from configure command
     2462fi
    24112463
    24122464am__api_version='1.11'
     
    29102962  MAINT=$MAINTAINER_MODE_TRUE
    29112963
    2912         # may require auto* software to be installed
     2964                        # may require auto* software to be installed
    29132965
    29142966# Installation paths
     
    29172969# Check whether --with-backend-compiler was given.
    29182970if test "${with_backend_compiler+set}" = set; then :
    2919   withval=$with_backend_compiler; backcompiler=$withval
    2920 else
    2921   backcompiler=""
    2922 fi
    2923 
    2924   if test x$backcompiler != x; then
    2925         cat >>confdefs.h <<_ACEOF
    2926 #define GCC_PATH "${backcompiler}"
    2927 _ACEOF
    2928 
    2929         BACKEND_CC=${backcompiler}
    2930   else
     2971  withval=$with_backend_compiler; backendcompiler=$withval
     2972else
     2973  backendcompiler=""
     2974fi
     2975
     2976if test "x$backendcompiler" != "x"; then
     2977        BACKEND_CC=${backendcompiler}
     2978else
    29312979        # Extract the first word of "gcc", so it can be a program name with args.
    29322980set dummy gcc; ac_word=$2
    29332981{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
    29342982$as_echo_n "checking for $ac_word... " >&6; }
    2935 if ${ac_cv_path_GCC_PATH+:} false; then :
     2983if ${ac_cv_path_BACKEND_CC+:} false; then :
    29362984  $as_echo_n "(cached) " >&6
    29372985else
    2938   case $GCC_PATH in
     2986  case $BACKEND_CC in
    29392987  [\\/]* | ?:[\\/]*)
    2940   ac_cv_path_GCC_PATH="$GCC_PATH" # Let the user override the test with a path.
     2988  ac_cv_path_BACKEND_CC="$BACKEND_CC" # Let the user override the test with a path.
    29412989  ;;
    29422990  *)
     
    29482996    for ac_exec_ext in '' $ac_executable_extensions; do
    29492997  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    2950     ac_cv_path_GCC_PATH="$as_dir/$ac_word$ac_exec_ext"
     2998    ac_cv_path_BACKEND_CC="$as_dir/$ac_word$ac_exec_ext"
    29512999    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
    29523000    break 2
     
    29563004IFS=$as_save_IFS
    29573005
    2958   test -z "$ac_cv_path_GCC_PATH" && ac_cv_path_GCC_PATH="N/A"
    29593006  ;;
    29603007esac
    29613008fi
    2962 GCC_PATH=$ac_cv_path_GCC_PATH
    2963 if test -n "$GCC_PATH"; then
    2964   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCC_PATH" >&5
    2965 $as_echo "$GCC_PATH" >&6; }
     3009BACKEND_CC=$ac_cv_path_BACKEND_CC
     3010if test -n "$BACKEND_CC"; then
     3011  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BACKEND_CC" >&5
     3012$as_echo "$BACKEND_CC" >&6; }
    29663013else
    29673014  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     
    29693016fi
    29703017
    2971 
    2972         if test "$GCC_PATH" = "N/A"; then
     3018        # check gcc installed
     3019        if test "x$BACKEND_CC" = "x"; then
    29733020                as_fn_error $? "some version of gcc is needed. Get it at ftp://ftp.gnu.org" "$LINENO" 5
    29743021                exit 1
    29753022        fi
     3023fi
    29763024
    29773025cat >>confdefs.h <<_ACEOF
    2978 #define GCC_PATH "${GCC_PATH}"
    2979 _ACEOF
    2980 
    2981         BACKEND_CC=${GCC_PATH}
    2982   fi
     3026#define CFA_BACKEND_CC "${BACKEND_CC}"
     3027_ACEOF
     3028
    29833029
    29843030
     
    29993045        cfa_incdir="${cfa_prefix}/include"
    30003046else
    3001         cfa_incdir=${$includedir}
     3047        cfa_incdir=${includedir}
    30023048fi
    30033049
     
    30333079
    30343080CFA_LIBDIR=${cfa_libdir}
     3081
     3082
     3083
     3084cat >>confdefs.h <<_ACEOF
     3085#define CFA_FLAGS "${CFAFLAGS}"
     3086_ACEOF
     3087
     3088CFA_FLAGS=${CFAFLAGS}
    30353089
    30363090
     
    57525806
    57535807
    5754 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/libcfa/Makefile"
     5808ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/tests/Makefile src/libcfa/Makefile"
    57555809
    57565810
     
    64986552    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
    64996553    "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;;
     6554    "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
    65006555    "src/libcfa/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcfa/Makefile" ;;
    65016556
  • configure.ac

    r679864e1 r242d458  
    55AC_INIT([cfa-cc],[1.0.0],[cforall@plg.uwaterloo.ca])
    66AC_CONFIG_AUX_DIR([automake])
    7 AC_CONFIG_SRCDIR([src/main.cc])
     7#AC_CONFIG_SRCDIR([src/main.cc])
    88AC_CONFIG_HEADERS([config.h])
     9AM_SILENT_RULES([no])
     10
     11if test "x${CXXFLAGS}" = "x"; then
     12   export CXXFLAGS="-std=c++11 -g ${CXXFLAGS}"  # defaults, no -O2 for debugging and failures
     13else
     14   export CXXFLAGS="-std=c++11 ${CXXFLAGS}"     # flags from configure command
     15fi
    916
    1017AM_INIT_AUTOMAKE
    11 AM_MAINTAINER_MODE(enable)      # may require auto* software to be installed
     18AM_MAINTAINER_MODE(enable)                      # may require auto* software to be installed
    1219
    1320# Installation paths
    1421
    15 AC_ARG_WITH(backend-compiler,
    16             [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
    17             backcompiler=$withval, backcompiler="")
    18   if test x$backcompiler != x; then
    19         AC_DEFINE_UNQUOTED(GCC_PATH, "${backcompiler}")
    20         BACKEND_CC=${backcompiler}
    21   else
    22         AC_PATH_PROG(GCC_PATH, gcc, N/A)
    23         if test "$GCC_PATH" = "N/A"; then
     22AC_ARG_WITH(backend-compiler,
     23        [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
     24        backendcompiler=$withval, backendcompiler="")
     25if test "x$backendcompiler" != "x"; then
     26        BACKEND_CC=${backendcompiler}
     27else
     28        AC_PATH_PROG(BACKEND_CC, gcc, [])       # check gcc installed
     29        if test "x$BACKEND_CC" = "x"; then
    2430                AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
    2531                exit 1
    2632        fi
    27         AC_DEFINE_UNQUOTED(GCC_PATH, "${GCC_PATH}", [Path/name of C compiler.])
    28         BACKEND_CC=${GCC_PATH}
    29   fi
    30 AC_SUBST(BACKEND_CC)
     33fi
     34AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${BACKEND_CC}", [Location of include files.])
     35AC_SUBST(CFA_BACKEND_CC)
    3136
    3237if test "x$prefix" = "xNONE"; then
     
    3439else
    3540        cfa_prefix=${prefix}
    36 fi 
    37 AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa files.])
     41fi
     42AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa install.])
    3843AC_SUBST(CFA_PREFIX, ${cfa_prefix})
    3944
     
    4146        cfa_incdir="${cfa_prefix}/include"
    4247else
    43         cfa_incdir=${$includedir}
    44 fi 
     48        cfa_incdir=${includedir}
     49fi
    4550AC_DEFINE_UNQUOTED(CFA_INCDIR, "${cfa_incdir}", [Location of include files.])
    4651AC_SUBST(CFA_INCDIR, ${cfa_incdir})
     
    5055else
    5156        cfa_bindir=${bindir}
    52 fi 
     57fi
    5358AC_DEFINE_UNQUOTED(CFA_BINDIR, "${cfa_bindir}", [Location of cfa command.])
    5459AC_SUBST(CFA_BINDIR, ${cfa_bindir})
     
    5863else
    5964        cfa_libdir=${libdir}
    60 fi 
     65fi
    6166AC_DEFINE_UNQUOTED(CFA_LIBDIR, "${cfa_libdir}", [Location of cc1 and cfa-cpp commands.])
    6267AC_SUBST(CFA_LIBDIR, ${cfa_libdir})
     68
     69AC_DEFINE_UNQUOTED(CFA_FLAGS, "${CFAFLAGS}", [compilation flags for cfa libraries and test programs.])
     70AC_SUBST(CFA_FLAGS, ${CFAFLAGS})
    6371
    6472# Checks for programs.
     
    101109        src/Makefile
    102110        src/examples/Makefile
     111        src/tests/Makefile
    103112        src/libcfa/Makefile
    104113        ])
  • doc/refrat/Makefile

    r679864e1 r242d458  
    11## Define the appropriate configuration variables.
    22
    3 TeXLIB = .::
    4 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex
    5 BibTeX = BSTINPUTS=${TeXLIB} && export BSTINPUTS && bibtex
     3TeXLIB = .:../LaTeXmacros:../LaTeXmacros/listings:../LaTeXmacros/enumitem:../bibliography/:
     4LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error
     5BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
    66
    77## Define the text source files.
     
    3232
    3333clean :
    34         rm -f *.bbl *.aux *.dvi *.idx *.ilg *.ind *.brf *.out *.log *.toc *.blg *.pstex_t \
     34        rm -f *.bbl *.aux *.dvi *.idx *.ilg *.ind *.brf *.out *.log *.toc *.blg *.pstex_t *.cf \
    3535                ${FIGURES} ${PICTURES} ${PROGRAMS} ${GRAPHS} ${basename ${DOCUMENT}}.ps ${DOCUMENT}
    3636
     
    4343        dvips $< -o $@
    4444
    45 ${basename ${DOCUMENT}}.dvi : Makefile ${GRAPHS} ${PROGRAMS} ${PICTURES} ${FIGURES} ${SOURCES} ${basename ${DOCUMENT}}.tex ${basename ${DOCUMENT}}.bib
     45${basename ${DOCUMENT}}.dvi : Makefile ${GRAPHS} ${PROGRAMS} ${PICTURES} ${FIGURES} ${SOURCES} ${basename ${DOCUMENT}}.tex \
     46                ../LaTeXmacros/common.tex ../LaTeXmacros/indexstyle ../bibliography/cfa.bib
    4647        # Conditionally create an empty *.ind (index) file for inclusion until makeindex is run.
    4748        if [ ! -r ${basename $@}.ind ] ; then touch ${basename $@}.ind ; fi
     
    5354        -${BibTeX} ${basename $@}
    5455        # Make index from *.aux entries and input index at end of document
    55         makeindex -s indexstyle ${basename $@}.idx
     56        makeindex -s ../LaTeXmacros/indexstyle ${basename $@}.idx
    5657        ${LaTeX} ${basename $@}.tex
    5758        # Run again to get index title into table of contents
    5859        ${LaTeX} ${basename $@}.tex
     60
     61predefined :
     62        sed -f predefined.sed ${basename ${DOCUMENT}}.tex > ${basename $@}.cf
    5963
    6064## Define the default recipes.
  • doc/refrat/predefined.sed

    r679864e1 r242d458  
    1 /\\begin{predefined}/,/\\end{predefined}/ !d
    2 /\\begin{predefined}/,/\\end{predefined}/ s/\\use{.*}//g
    3 /\\begin{predefined}/ d
    4 /\\end{predefined}/ d
     1/^\\predefined/,/^\\end{lstlisting}/ !d
     2/^\\begin{lstlisting}/,/^\\end{lstlisting}/ s/@\\use{.*}@//g
     3/^\\predefined/ d
     4/^\\begin{lstlisting}/ d
     5/^\\end{lstlisting}/ d
  • doc/refrat/refrat.tex

    r679864e1 r242d458  
     1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%
     2%%
     3%% Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     4%%
     5%% The contents of this file are covered under the licence agreement in the
     6%% file "LICENCE" distributed with Cforall.
     7%%
     8%% refrat.tex --
     9%%
     10%% Author           : Peter A. Buhr
     11%% Created On       : Wed Apr  6 14:52:25 2016
     12%% Last Modified By : Peter A. Buhr
     13%% Last Modified On : Wed Jun 22 14:18:30 2016
     14%% Update Count     : 77
     15%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     16
    117% 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)
    226
    327\documentclass[openright,twoside]{report}
     
    529
    630% Latex packages used in the document.
    7 
    8 \usepackage{fullpage,times}
     31\usepackage[T1]{fontenc}                                % allow Latin1 (extended ASCII) characters
     32\usepackage{textcomp}
     33\usepackage[latin1]{inputenc}
     34\usepackage{fullpage,times,comment}
     35\usepackage{epic,eepic}
     36\usepackage{upquote}                                                                    % switch curled `'" to straight
    937\usepackage{xspace}
    10 \usepackage{varioref}
    11 \usepackage{listings}
    12 \usepackage{latexsym}                                   % \Box
    13 \usepackage{mathptmx}                                   % better math font with "times"
     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
     42\usepackage{mathptmx}                                   % better math font with "times"
     43\usepackage[usenames]{color}
    1444\usepackage[pagewise]{lineno}
    1545\renewcommand{\linenumberfont}{\scriptsize\sffamily}
     46\input{common}                                          % bespoke macros used in the document
    1647\usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref}
    1748\usepackage{breakurl}
    18 \urlstyle{sf}
     49\renewcommand{\UrlFont}{\small\sf}
     50
     51\setlength{\topmargin}{-0.45in}                                                 % move running title into header
     52\setlength{\headsep}{0.25in}
    1953
    2054%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    2256% Names used in the document.
    2357
    24 \newcommand{\CFA}{Cforall\xspace}               % set language text name
    25 \newcommand{\CFAA}{C$\forall$\xspace}   % set language symbolic name
    26 \newcommand{\CC}{C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
    27 \def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name)
     58\newcommand{\Version}{1.0.0}
     59
     60\newcommand{\Textbf}[2][red]{{\color{#1}{\textbf{#2}}}}
     61\newcommand{\Emph}[2][red]{{\color{#1}\textbf{\emph{#2}}}}
     62\newcommand{\R}[1]{\Textbf{#1}}
     63\newcommand{\B}[1]{{\Textbf[blue]{#1}}}
     64\newcommand{\G}[1]{{\Textbf[OliveGreen]{#1}}}
    2865
    2966%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    3067
    31 % Specialized macros used in the document.
    32 
    33 \newcommand{\italic}[1]{\emph{\hyperpage{#1}}}
    34 \newcommand{\definition}[1]{\textbf{\hyperpage{#1}}}
    35 \newcommand{\see}[1]{\emph{see} #1}
    36 
    37 \makeatletter
    38 % Define some commands that produce formatted index entries suitable for cross-references.
    39 % ``\spec'' produces entries for specifications of entities.  ``\impl'' produces entries for their
    40 % implementations, and ``\use'' for their uses.
    41 
    42 %  \newcommand{\bold}[1]{{\bf #1}}
    43 %  \def\spec{\@bsphack\begingroup
    44 %             \def\protect##1{\string##1\space}\@sanitize
    45 %             \@wrxref{|bold}}
    46 \def\impl{\@bsphack\begingroup
    47           \def\protect##1{\string##1\space}\@sanitize
    48           \@wrxref{|definition}}
    49 \newcommand{\indexcode}[1]{{\lstinline$#1$}}
    50 \def\use{\@bsphack\begingroup
    51          \def\protect##1{\string##1\space}\@sanitize
    52          \@wrxref{|hyperpage}}
    53 \def\@wrxref#1#2{\let\thepage\relax
    54     \xdef\@gtempa{\write\@indexfile{\string
    55     \indexentry{#2@{\lstinline$#2$}#1}{\thepage}}}\endgroup\@gtempa
    56     \if@nobreak \ifvmode\nobreak\fi\fi\@esphack}
    57 \makeatother
    58 %\newcommand{\use}[1]{\index{#1@{\lstinline$#1$}}}
    59 %\newcommand{\impl}[1]{\index{\protect#1@{\lstinline$\protect#1$}|definition}}
    60 
    61 \newcommand{\define}[1]{\emph{#1\/}\index{#1}}
    62 \newenvironment{rationale}{%
    63   \begin{quotation}\noindent$\Box$\enspace
    64 }{%
    65   \hfill\enspace$\Box$\end{quotation}
    66 }%
    67 \newcommand{\rewrite}{\(\Rightarrow\)}
    68 \newcommand{\rewriterules}{\paragraph{Rewrite Rules}\hskip1em\par\noindent}
    69 \newcommand{\examples}{\paragraph{Examples}\hskip1em\par\noindent}
    70 \newcommand{\semantics}{\paragraph{Semantics}\hskip1em\par\noindent}
    71 \newcommand{\constraints}{\paragraph{Constraints}\hskip1em\par\noindent}
    72 \newenvironment{predefined}{%
    73   \paragraph{Predefined Identifiers}%
    74 %  \begin{code}%
    75 }{%
    76 %  \end{code}
    77 }%
    78 
    79 \def\syntax{\paragraph{Syntax}\trivlist\parindent=.5in\item[\hskip.5in]}
    80 \let\endsyntax=\endtrivlist
    81 \newcommand{\lhs}[1]{\par{\emph{#1:}}\index{#1@{\emph{#1}}|italic}}
    82 \newcommand{\rhs}{\hfil\break\hbox{\hskip1in}}
    83 \newcommand{\oldlhs}[1]{\emph{#1: \ldots}\index{#1@{\emph{#1}}|italic}}
    84 \newcommand{\nonterm}[1]{\emph{#1\/}\index{#1@{\emph{#1}}|italic}}
    85 \newcommand{\opt}{$_{opt}$\ }
    86 
    87 \renewcommand{\reftextfaceafter}{\unskip}
    88 \renewcommand{\reftextfacebefore}{\unskip}
    89 \renewcommand{\reftextafter}{\unskip}
    90 \renewcommand{\reftextbefore}{\unskip}
    91 \renewcommand{\reftextfaraway}[1]{\unskip, p.~\pageref{#1}}
    92 \renewcommand{\reftextpagerange}[2]{\unskip, pp.~\pageref{#1}--\pageref{#2}}
    93 \newcommand{\VRef}[2][Section]{\ifx#1\@empty\else{#1}\nobreakspace\fi\vref{#2}}
    94 \newcommand{\VPageref}[2][page]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}}
    95 
    96 % replace/adjust characters that look bad in sanserif
    97 \makeatletter
    98 \lst@CCPutMacro
    99 \lst@ProcessOther{"2D}{\lst@ttfamily{-{}}{{\ttfamily\upshape -}}} % replace minus
    100 \lst@ProcessOther{"3C}{\lst@ttfamily{<}{\texttt{<}}} % replace less than
    101 \lst@ProcessOther{"3E}{\lst@ttfamily{<}{\texttt{>}}} % replace greater than
    102 \lst@ProcessOther{"5E}{\raisebox{0.4ex}{$\scriptstyle\land\,$}} % circumflex
    103 \lst@ProcessLetter{"5F}{\lst@ttfamily{\char95}{{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}}} % replace underscore
    104 %\lst@ProcessOther{"7E}{\raisebox{-.4ex}[1ex][0pt]{\textasciitilde}} % lower tilde
    105 \lst@ProcessOther{"7E}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}} % lower tilde
    106 \@empty\z@\@empty
    107 
    108 \newcommand{\Index}{\@ifstar\@sIndex\@Index}
    109 \newcommand{\@Index}[2][\@empty]{\lowercase{\def\temp{#2}}#2\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi}
    110 \newcommand{\@sIndex}[2][\@empty]{#2\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi}
    111 \makeatother
    112 
    113 \lstdefinelanguage{CFA}[ANSI]{C}%
    114   {morekeywords={asm,_Atomic,catch,catchResume,choose,_Complex,context,disable,dtype,enable,
    115         fallthru,finally,forall,ftype,_Imaginary,lvalue,restrict,throw,throwResume,try,type,},
    116 }
    117 
    118 \lstset{
    119 language=CFA,
    120 columns=fullflexible,
    121 basicstyle=\sf\small,
    122 tabsize=4,
    123 xleftmargin=\parindent,
    124 escapechar=@,
    125 %fancyvrb=true,
    126 %showtabs=true,
    127 keepspaces=true,
    128 showtabs=true,
    129 tab=,
    130 }
    131 
    132 \setcounter{secnumdepth}{3}     % number subsubsections
    133 \setcounter{tocdepth}{3}                % subsubsections in table of contents
     68\setcounter{secnumdepth}{3}                             % number subsubsections
     69\setcounter{tocdepth}{3}                                % subsubsections in table of contents
    13470\makeindex
     71
     72%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     73
     74\title{\Huge
     75\vspace*{1in}
     76\CFA (\CFL) Reference Manual and Rationale
     77}% title
     78
     79\author{\huge
     80Glen Ditchfield and Peter A. Buhr
     81}% author
     82
     83\date{
     84DRAFT \\ \today
     85}% date
    13586
    13687%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    13889\begin{document}
    13990\pagestyle{headings}
    140 \linenumbers                                    % comment out to turn off line numbering
    141 
    142 \title{\CFA (\CFAA) Reference Manual and Rationale}
    143 \author{Glen Ditchfield}
    144 \date{DRAFT\\\today}
    145 
     91% changed after setting pagestyle
     92\renewcommand{\chaptermark}[1]{\markboth{\thechapter\quad #1}{\thechapter\quad #1}}
     93\renewcommand{\sectionmark}[1]{\markboth{\thesection\quad #1}{\thesection\quad #1}}
    14694\pagenumbering{roman}
    147 \pagestyle{plain}
     95\linenumbers                                            % comment out to turn off line numbering
    14896
    14997\maketitle
    150 
     98\thispagestyle{empty}
    15199\vspace*{\fill}
    152 \thispagestyle{empty}
    153100\noindent
    154101\copyright\,2015 Glen Ditchfield \\ \\
    155102\noindent
    156 This work is licensed under the Creative Commons Attribution 4.0 International License. To view a
    157 copy of this license, visit {\small\url{http://creativecommons.org/licenses/by/4.0}}.
     103This work is licensed under the Creative Commons Attribution 4.0 International License.
     104To view a copy of this license, visit {\small\url{http://creativecommons.org/licenses/by/4.0}}.
    158105\vspace*{1in}
    159106
     
    168115\chapter*{Introduction}\addcontentsline{toc}{chapter}{Introduction}
    169116
    170 This document is a reference manual and rationale for \CFA, a polymorphic extension of the C
    171 programming language. It makes frequent reference to the {\c11} standard \cite{ANS:C11}, and
    172 occasionally compares \CFA to {\CC} \cite{c++}.
    173 
    174 The manual deliberately imitates the ordering of the {\c11} standard (although the section numbering
    175 differs). Unfortunately, this means that the manual contains more ``forward references'' than
    176 usual, and that it will be hard to follow if the reader does not have a copy of the {\c11} standard
    177 near-by. For a gentle introduction to \CFA, see the companion document ``An Overview of
    178 \CFA'' \cite{Ditchfield96:Overview}.
    179 
    180 \begin{rationale}
    181 Commentary (like this) is quoted with quads. Commentary usually deals with subtle points, the
    182 rationale behind a rule, and design decisions.
     117This document is a reference manual and rationale for \CFA, a polymorphic extension of the C programming language.
     118It makes frequent reference to the {\c11} standard \cite{C11}, and occasionally compares \CFA to {\CC} \cite{C++}.
     119
     120The manual deliberately imitates the ordering of the {\c11} standard (although the section numbering differs).
     121Unfortunately, this means the manual contains more ``forward references'' than usual, making it harder to follow if the reader does not have a copy of the {\c11} standard.
     122For a simple introduction to \CFA, see the companion document ``An Overview of \CFA''
     123\cite{Ditchfield96:Overview}.
     124
     125\begin{rationale}
     126Commentary (like this) is quoted with quads.
     127Commentary usually deals with subtle points, the rationale behind a rule, and design decisions.
    183128\end{rationale}
    184129
    185130% No ``Scope'' or ``Normative references'' chapters yet.
     131
     132
    186133\setcounter{chapter}{2}
    187134\chapter{Terms, definitions, and symbols}
    188 Terms from the {\c11} standard used in this document have the same meaning as in the {\c11}
    189 standard.
     135
     136Terms from the {\c11} standard used in this document have the same meaning as in the {\c11} standard.
    190137
    191138% No ``Conformance'' or ``Environment'' chapters yet.
     139
     140
    192141\setcounter{chapter}{5}
    193142\chapter{Language}
     143
     144
    194145\section{Notation}
    195 The syntax notation used in this document is the same as is used in the {\c11} standard, with one
    196 exception: ellipsis in the definition of a nonterminal, as in ``\emph{declaration:} \ldots'',
    197 indicates that these rules extend a previous definition, which occurs in this document or in the
    198 {\c11} standard.
     146The syntax notation used in this document is the same as in the {\c11} standard, with one exception: ellipsis in the definition of a nonterminal, as in ``\emph{declaration:} \ldots'', indicates that these rules extend a previous definition, which occurs in this document or in the {\c11} standard.
    199147
    200148
     
    204152\subsection{Scopes of identifiers}\index{scopes}
    205153
    206 \CFA's scope rules differ from C's in one major respect: a declaration of an identifier may
    207 overload\index{overloading} outer declarations of lexically identical identifiers in the same
    208 \Index{name space}, instead of hiding them. The outer declaration is hidden if the two declarations
    209 have \Index{compatible type}, or if one declares an array type and the other declares a pointer type
    210 and the element type and pointed-at type are compatible, or if one has function type and the other
    211 is a pointer to a compatible function type, or if one declaration is a \lstinline$type$\use{type} or
    212 \lstinline$typedef$\use{typedef} declaration and the other is not.  The outer declaration becomes
    213 \Index{visible} when the scope of the inner declaration terminates.
    214 \begin{rationale}
    215 Hence, a \CFA program can declare an \lstinline$int v$ and a \lstinline$float v$ in the same
    216 scope; a {\CC} program can not.
     154\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.
     155The 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.
     156The outer declaration becomes \Index{visible} when the scope of the inner declaration terminates.
     157\begin{rationale}
     158Hence, a \CFA program can declare an ©int v© and a ©float v© in the same scope;
     159a {\CC} program can not.
    217160\end{rationale}
    218161
     
    221164\index{linkage}
    222165
    223 \CFA's linkage rules differ from C's in only one respect: instances of a particular identifier with
    224 external or internal linkage do not necessarily denote the same object or function. Instead, in the
    225 set of translation units and libraries that constitutes an entire program, any two instances of a
    226 particular identifier with \Index{external linkage} denote the same object or function if they have
    227 \Index{compatible type}s, or if one declares an array type and the other declares a pointer type and
    228 the element type and pointed-at type are compatible, or if one has function type and the other is a
    229 pointer to a compatible function type. Within one translation unit, each instance of an identifier
    230 with \Index{internal linkage} denotes the same object or function in the same circumstances.
     166\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.
     167Instead, 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.
     168Within one translation unit, each instance of an identifier with \Index{internal linkage} denotes the same object or function in the same circumstances.
    231169Identifiers with \Index{no linkage} always denote unique entities.
    232170\begin{rationale}
    233 A \CFA program can declare an \lstinline$extern int v$ and an \lstinline$extern float v$; a C
    234 program cannot.
    235 \end{rationale}
     171A \CFA program can declare an ©extern int v© and an ©extern float v©;
     172a C program cannot.
     173\end{rationale}
     174
     175
     176\setcounter{subsection}{8}
     177\subsection{Generic Types}
     178
     179
     180\subsubsection{Semantics}
     181
     182\CFA provides a capability for generic types;
     183using this capability a single "generic type generator" can be written that can represent multiple concrete type instantiations by substitution of the "type parameters" of the generic type for concrete types.
     184Syntactically a generic type generator is represented by putting a forall specifier on a struct or union declaration, as defined in \VRef{forall}.
     185An instantiation of the generic type is written by specifying the type parameters in parentheses after the name of the generic type generator:
     186\begin{lstlisting}
     187forall( otype T | sumable( T ) ) struct pair {
     188        T x;
     189        T y;
     190};
     191pair( int ) p = { 3, 14 };
     192\end{lstlisting}
     193
     194The 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©.
     195The instantiation then has the semantics that would result if the type parameters were substituted into the type generator declaration by macro substitution.
     196
     197Polymorphic functions may have generic types as parameters, and those generic types may use type parameters of the polymorphic function as type parameters of the generic type:
     198\begin{lstlisting}
     199forall( otype T ) void swap( pair(T) *p ) {
     200        T z = p->x;
     201        p->x = p->y;
     202        p->y = z;
     203}
     204\end{lstlisting}
     205
     206
     207\subsubsection{Constraints}
     208
     209To avoid unduly constraining implementors, the generic type generator definition must be visible at any point where it is instantiated.
     210Forward declarations of generic type generators are not forbidden, but the definition must be visible to instantiate the generic type.  Equivalently, instantiations of generic types are not allowed to be incomplete types.
     211
     212\examples
     213\begin{lstlisting}
     214forall( otype T ) struct A;
     215
     216forall( otype T ) struct B {
     217        A(T) *a;                        // legal, but cannot instantiate B(T)
     218};
     219
     220B(T) x;                                 // illegal, *x.a is of an incomplete generic type
     221 
     222forall( otype T ) struct A {
     223        B( T ) *b;
     224};
     225
     226B( T ) y;                               // legal, *x.a is now of a complete generic type
     227
     228// box.h:
     229        forall( otype T ) struct box;
     230        forall( otype T ) box( T ) *make_box( T );
     231        forall( otype T ) void use_box( box( T ) *b );
     232       
     233// main.c:
     234        box( int ) *b = make_box( 42 ); // illegal, definition of box not visible
     235        use_box( b );           // illegal
     236\end{lstlisting}
     237
    236238
    237239\section{Conversions}
    238240\CFA defines situations where values of one type are automatically converted to another type.
    239 These conversions are called \define{implicit conversion}s. The programmer can request
    240 \define{explicit conversion}s using cast expressions.
     241These conversions are called \define{implicit conversion}s.
     242The programmer can request \define{explicit conversion}s using cast expressions.
    241243
    242244
    243245\subsection{Arithmetic operands}
    244 \setcounter{subsubsection}{7}
    245 
    246 
     246
     247
     248\setcounter{subsubsection}{8}
    247249\subsubsection{Safe arithmetic conversions}
    248 In C, a pattern of conversions known as the \define{usual arithmetic conversion}s is used with most
    249 binary arithmetic operators to convert the operands to a common type and determine the type of the
    250 operator's result. In \CFA, these conversions play a role in overload resolution, and
    251 collectively are called the \define{safe arithmetic conversion}s.
    252 
    253 Let \(int_r\) and \(unsigned_r\) be the signed and unsigned integer types with integer conversion
    254 rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$. Let
    255 \(unsigned_{mr}\) be the unsigned integer type with maximal rank.
     250
     251In C, a pattern of conversions known as the \define{usual arithmetic conversion}s is used with most binary arithmetic operators to convert the operands to a common type and determine the type of the operator's result.
     252In \CFA, these conversions play a role in overload resolution, and collectively are called the \define{safe arithmetic conversion}s.
     253
     254Let ©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$.
     255Let ©unsigned$_{mr}$© be the unsigned integer type with maximal rank.
    256256
    257257The following conversions are \emph{direct} safe arithmetic conversions.
     
    259259\item
    260260The \Index{integer promotion}s.
    261 
    262 \item
    263 For every rank $r$ greater than or equal to the rank of \lstinline$int$, conversion from \(int_r\)
    264 to \(unsigned_r\).
    265 
    266 \item
    267 For every rank $r$ greater than or equal to the rank of \lstinline$int$, where \(int_{r+1}\) exists
    268 and can represent all values of \(unsigned_r\), conversion from \(unsigned_r\) to \(int_{r+1}\).
    269 
    270 \item
    271 Conversion from \(unsigned_{mr}\) to \lstinline$float$.
    272 
     261\item
     262For every rank $r$ greater than or equal to the rank of ©int©, conversion from ©int$_r$© to ©unsigned$_r$©.
     263\item
     264For 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}$©.
     265\item
     266Conversion from ©unsigned$_{mr}$© to ©float©.
    273267\item
    274268Conversion from an enumerated type to its compatible integer type.
    275 
    276 \item
    277 Conversion from \lstinline$float$ to \lstinline$double$, and from \lstinline$double$ to
    278 \lstinline$long double$.
    279 
    280 \item
    281 Conversion from \lstinline$float _Complex$ to \lstinline$double _Complex$,
    282 and from \lstinline$double _Complex$ to \lstinline$long double _Complex$.
    283 
     269\item
     270Conversion from ©float© to ©double©, and from ©double© to ©long double©.
     271\item
     272Conversion from ©float _Complex© to ©double _Complex©, and from ©double _Complex© to ©long double _Complex©.
    284273\begin{sloppypar}
    285274\item
    286 Conversion from \lstinline$float _Imaginary$ to \lstinline$double _Imaginary$, and from
    287 \lstinline$double _Imaginary$ to \lstinline$long double$ \lstinline$_Imaginary$, if the
    288 implementation supports imaginary types.
     275Conversion from ©float _Imaginary© to ©double _Imaginary©, and from ©double _Imaginary© to ©long double _Imaginary©, if the implementation supports imaginary types.
    289276\end{sloppypar}
    290277\end{itemize}
    291278
    292 If type \lstinline$T$ can be converted to type \lstinline$U$ by a safe direct arithmetic conversion
    293 and type \lstinline$U$ can be converted to type \lstinline$V$ by a safe arithmetic conversion, then
    294 the conversion from \lstinline$T$ to type \lstinline$V$ is an \emph{indirect} safe arithmetic
    295 conversion.
    296 
    297 \begin{rationale}
    298 Note that {\c11} does not include conversion from \Index{real type}s to \Index{complex type}s in the
    299 usual arithmetic conversions, and \CFA does not include them as safe conversions.
     279If 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.
     280
     281\begin{rationale}
     282Note that {\c11} does not include conversion from \Index{real type}s to \Index{complex type}s in the usual arithmetic conversions, and \CFA does not include them as safe conversions.
    300283\end{rationale}
    301284
    302285
    303286\subsection{Other operands}
     287
     288
    304289\setcounter{subsubsection}{3}
    305 
    306 
    307290\subsubsection{Anonymous structures and unions}
    308291\label{anon-conv}
    309292
    310 If an expression's type is a pointer to a structure or union type that has a member that is an
    311 \Index{anonymous structure} or an \Index{anonymous union}, it can be implicitly
    312 converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's
    313 type. The result of the conversion is a pointer to the member.
     293If 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.
     294The result of the conversion is a pointer to the member.
    314295
    315296\examples
     
    318299        int x, y;
    319300};
    320 void move_by(struct point * p1, struct point * p2) {@\impl{move_by}@
     301void move_by( struct point * p1, struct point * p2 ) {§\impl{move_by}§
    321302        p1->x += p2.x;
    322303        p1->y += p2.y;
    323304}
    324 
    325305struct color_point {
    326306        enum { RED, BLUE, GREEN } color;
    327307        struct point;
    328308} cp1, cp2;
    329 move_to(&cp1, &cp2);
    330 \end{lstlisting}
    331 Thanks to implicit conversion, the two arguments that \lstinline$move_by()$ receives are pointers to
    332 \lstinline$cp1$'s second member and \lstinline$cp2$'s second member.
     309move_to( &cp1, &cp2 );
     310\end{lstlisting}
     311Thanks to implicit conversion, the two arguments that ©move_by()© receives are pointers to ©cp1©'s second member and ©cp2©'s second member.
    333312
    334313
    335314\subsubsection{Specialization}
    336 A function or value whose type is polymorphic may be implicitly converted to one whose type is
    337 \Index{less polymorphic} by binding values to one or more of its \Index{inferred parameter}. Any
    338 value that is legal for the inferred parameter may be used, including other inferred parameters.
    339 
    340 If, after the inferred parameter binding, an \Index{assertion parameter} has no inferred parameters
    341 in its type, then an object or function must be visible at the point of the specialization that has
    342 the same identifier as the assertion parameter and has a type that is compatible\index{compatible
    343   type} with or can be specialized to the type of the assertion parameter.  The assertion parameter
    344 is bound to that object or function.
    345 
    346 The type of the specialization is the type of the original with the bound inferred parameters and
    347 the bound assertion parameters replaced by their bound values.
     315A function or value whose type is polymorphic may be implicitly converted to one whose type is \Index{less polymorphic} by binding values to one or more of its \Index{inferred parameter}.
     316Any value that is legal for the inferred parameter may be used, including other inferred parameters.
     317
     318If, after the inferred parameter binding, an \Index{assertion parameter} has no inferred parameters in its type, then an object or function must be visible at the point of the specialization that has the same identifier as the assertion parameter and has a type that is compatible\index{compatible type} with or can be specialized to the type of the assertion parameter.
     319The assertion parameter is bound to that object or function.
     320
     321The type of the specialization is the type of the original with the bound inferred parameters and the bound assertion parameters replaced by their bound values.
    348322
    349323\examples
    350324The type
    351325\begin{lstlisting}
    352 forall( type T, type U ) void (*)( T, U );
     326forall( otype T, otype U ) void (*)( T, U );
    353327\end{lstlisting}
    354328can be specialized to (among other things)
    355329\begin{lstlisting}
    356 forall( type T ) void (*)( T, T );              // U bound to T
    357 forall( type T ) void (*)( T, real );   // U bound to real
    358 forall( type U ) void (*)( real, U );   // T bound to real
     330forall( otype T ) void (*)( T, T );             // U bound to T
     331forall( otype T ) void (*)( T, real );  // U bound to real
     332forall( otype U ) void (*)( real, U );  // T bound to real
    359333void f( real, real );                                   // both bound to real
    360334\end{lstlisting}
     
    362336The type
    363337\begin{lstlisting}
    364 forall( type T | T ?+?( T, T )) T (*)( T );
     338forall( otype T | T ?+?( T, T ) ) T (*)( T );
    365339\end{lstlisting}
    366340can be specialized to (among other things)
    367341\begin{lstlisting}
    368 int (*)( int );                                         // T bound to int, and T ?+?(T, T ) bound to int ?+?( int, int )
     342int (*)( int );         // T bound to int, and T ?+?(T, T ) bound to int ?+?( int, int )
    369343\end{lstlisting}
    370344
     
    377351a direct safe arithmetic conversion;
    378352\item
    379 from any object type or incomplete type to \lstinline$void$;
    380 \item
    381 from a pointer to any non-\lstinline$void$ type to a pointer to \lstinline$void$;
    382 \item
    383 from a pointer to any type to a pointer to a more qualified version of the type\index{qualified
    384 type};
    385 \item
    386 from a pointer to a structure or union type to a pointer to the type of a member of the structure or
    387 union that is an \Index{anonymous structure} or an \Index{anonymous union};
    388 \item
    389 within the scope of an initialized \Index{type declaration}, conversions between a type and its
    390 implementation or between a pointer to a type and a pointer to its implementation.
     353from any object type or incomplete type to ©void©;
     354\item
     355from a pointer to any non-©void© type to a pointer to ©void©;
     356\item
     357from a pointer to any type to a pointer to a more qualified version of the type\index{qualified type};
     358\item
     359from a pointer to a structure or union type to a pointer to the type of a member of the structure or union that is an \Index{anonymous structure} or an \Index{anonymous union};
     360\item
     361within the scope of an initialized \Index{type declaration}, conversions between a type and its implementation or between a pointer to a type and a pointer to its implementation.
    391362\end{itemize}
    392363
    393364Conversions that are not safe conversions are \define{unsafe conversion}s.
    394365\begin{rationale}
    395 As in C, there is an implicit conversion from \lstinline$void *$ to any pointer type. This is
    396 clearly dangerous, and {\CC} does not have this implicit conversion.
    397 \CFA\index{deficiencies!void * conversion} keeps it, in the interest of remaining as pure a
    398 superset of C as possible, but discourages it by making it unsafe.
     366As in C, there is an implicit conversion from ©void *© to any pointer type.
     367This is clearly dangerous, and {\CC} does not have this implicit conversion.
     368\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.
    399369\end{rationale}
    400370
     
    402372\subsection{Conversion cost}
    403373
    404 The \define{conversion cost} of a safe\index{safe conversion}
    405 conversion\footnote{Unsafe\index{unsafe conversion} conversions do not have defined conversion
    406 costs.} is a measure of how desirable or undesirable it is. It is defined as follows.
     374The \define{conversion cost} of a safe\index{safe conversion} conversion\footnote{Unsafe\index{unsafe conversion} conversions do not have defined conversion costs.} is a measure of how desirable or undesirable it is.
     375It is defined as follows.
    407376\begin{itemize}
    408377\item
     
    413382
    414383\item
    415 The cost of an indirect safe arithmetic conversion is the smallest number of direct conversions
    416 needed to make up the conversion.
     384The cost of an indirect safe arithmetic conversion is the smallest number of direct conversions needed to make up the conversion.
    417385\end{itemize}
    418386
     
    422390\begin{itemize}
    423391\item
    424 The cost of an implicit conversion from \lstinline$int$ to \lstinline$long$ is 1. The cost of an
    425 implicit conversion from \lstinline$long$ to \lstinline$double$ is 3, because it is defined in terms
    426 of conversions from \lstinline$long$ to \lstinline$unsigned long$, then to \lstinline$float$, and
    427 then to \lstinline$double$.
    428 
    429 \item
    430 If \lstinline$int$ can represent all the values of \lstinline$unsigned short$, then the cost of an
    431 implicit conversion from \lstinline$unsigned short$ to \lstinline$unsigned$ is 2:
    432 \lstinline$unsigned short$ to \lstinline$int$ to \lstinline$unsigned$. Otherwise,
    433 \lstinline$unsigned short$ is converted directly to \lstinline$unsigned$, and the cost is 1.
    434 
    435 \item
    436 If \lstinline$long$ can represent all the values of \lstinline$unsigned$, then the conversion cost
    437 of \lstinline$unsigned$ to \lstinline$long$ is 1. Otherwise, the conversion is an unsafe
    438 conversion, and its conversion cost is undefined.
     392The cost of an implicit conversion from ©int© to ©long© is 1.
     393The 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©.
     394
     395\item
     396If ©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©.
     397Otherwise, ©unsigned short© is converted directly to ©unsigned©, and the cost is 1.
     398
     399\item
     400If ©long© can represent all the values of ©unsigned©, then the conversion cost of ©unsigned© to ©long© is 1.
     401Otherwise, the conversion is an unsafe conversion, and its conversion cost is undefined.
    439402\end{itemize}
    440403
     404
    441405\section{Lexical elements}
     406
     407
    442408\subsection{Keywords}
     409
    443410\begin{syntax}
    444411\oldlhs{keyword}
    445         \rhs \lstinline$forall$
    446         \rhs \lstinline$lvalue$
    447         \rhs \lstinline$context$
    448         \rhs \lstinline$dtype$
    449         \rhs \lstinline$ftype$
    450         \rhs \lstinline$type$
     412\rhs ©forall©
     413\rhs ©lvalue©
     414\rhs ©trait©
     415\rhs ©dtype©
     416\rhs ©ftype©
     417\rhs ©otype©
    451418\end{syntax}
    452419
     
    454421\subsection{Identifiers}
    455422
    456 \CFA allows operator \Index{overloading} by associating operators with special function
    457 identifiers. Furthermore, the constants ``\lstinline$0$'' and ``\lstinline$1$'' have special status
    458 for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them
    459 as overloadable identifiers. Programmers can use these identifiers to declare functions and objects
    460 that implement operators and constants for their own types.
     423\CFA allows operator \Index{overloading} by associating operators with special function identifiers.
     424Furthermore, 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.
     425Programmers can use these identifiers to declare functions and objects that implement operators and constants for their own types.
    461426
    462427
     
    466431\begin{syntax}
    467432\oldlhs{identifier}
    468 \rhs \lstinline$0$
    469 \rhs \lstinline$1$
     433\rhs ©0©
     434\rhs ©1©
    470435\end{syntax}
    471436
    472 \index{constant identifiers}\index{identifiers!for constants} The tokens ``\lstinline$0$''\impl{0}
    473 and ``\lstinline$1$''\impl{1} are identifiers. No other tokens defined by the rules for integer
    474 constants are considered to be identifiers.
    475 \begin{rationale}
    476 Why ``\lstinline$0$'' and ``\lstinline$1$''? Those integers have special status in C. All scalar
    477 types can be incremented and decremented, which is defined in terms of adding or subtracting 1. The
    478 operations ``\lstinline$&&$'', ``\lstinline$||$'', and ``\lstinline$!$'' can be applied to any
    479 scalar arguments, and are defined in terms of comparison against 0. A \nonterm{constant-expression}
    480 that evaluates to 0 is effectively compatible with every pointer type.
    481 
    482 In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to
    483 any arithmetic type, and the rules for pointer expressions treat constant expressions evaluating to
    484 0 as a special case. However, user-defined arithmetic types often need the equivalent of a 1 or 0
    485 for their functions or operators, polymorphic functions often need 0 and 1 constants of a type
    486 matching their polymorphic parameters, and user-defined pointer-like types may need a null value.
    487 Defining special constants for a user-defined type is more efficient than defining a conversion to
    488 the type from \lstinline$_Bool$.
    489 
    490 Why \emph{just} ``\lstinline$0$'' and ``\lstinline$1$''? Why not other integers? No other integers
    491 have special status in C. A facility that let programmers declare specific
    492 constants---``\lstinline$const Rational 12$'', for instance---would not be much of an improvement.
    493 Some facility for defining the creation of values of programmer-defined types from arbitrary integer
    494 tokens would be needed. The complexity of such a feature doesn't seem worth the gain.
     437\index{constant identifiers}\index{identifiers!for constants} The tokens ``©0©''\impl{0} and ``©1©''\impl{1} are identifiers.
     438No other tokens defined by the rules for integer constants are considered to be identifiers.
     439\begin{rationale}
     440Why ``©0©'' and ``©1©''? Those integers have special status in C.
     441All scalar types can be incremented and decremented, which is defined in terms of adding or subtracting 1.
     442The operations ``©&&©'', ``©||©'', and ``©!©'' can be applied to any scalar arguments, and are defined in terms of comparison against 0.
     443A \nonterm{constant-expression} that evaluates to 0 is effectively compatible with every pointer type.
     444
     445In 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.
     446However, 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.
     447Defining special constants for a user-defined type is more efficient than defining a conversion to the type from ©_Bool©.
     448
     449Why \emph{just} ``©0©'' and ``©1©''? Why not other integers? No other integers have special status in C.
     450A facility that let programmers declare specific constants---``©const Rational 12©'', for instance---would not be much of an improvement.
     451Some facility for defining the creation of values of programmer-defined types from arbitrary integer tokens would be needed.
     452The complexity of such a feature doesn't seem worth the gain.
    495453\end{rationale}
    496454
     
    498456\subsubsection{Operator identifiers}
    499457
    500 \index{operator identifiers}\index{identifiers!for operators} Table \ref{opids} lists the
    501 programmer-definable operator identifiers and the operations they are associated with. Functions
    502 that are declared with (or pointed at by function pointers that are declared with) these identifiers
    503 can be called by expressions that use the operator tokens and syntax, or the operator identifiers
    504 and ``function call'' syntax. The relationships between operators and function calls are discussed
    505 in descriptions of the operators.
     458\index{operator identifiers}\index{identifiers!for operators} Table \ref{opids} lists the programmer-definable operator identifiers and the operations they are associated with.
     459Functions that are declared with (or pointed at by function pointers that are declared with) these identifiers can be called by expressions that use the operator tokens and syntax, or the operator identifiers and ``function call'' syntax.
     460The relationships between operators and function calls are discussed in descriptions of the operators.
    506461
    507462\begin{table}[hbt]
     
    509464\begin{tabular}[t]{ll}
    510465%identifier & operation \\ \hline
    511 \lstinline$?[?]$ & subscripting \impl{?[?]}\\
    512 \lstinline$?()$ & function call \impl{?()}\\
    513 \lstinline$?++$ & postfix increment \impl{?++}\\
    514 \lstinline$?--$ & postfix decrement \impl{?--}\\
    515 \lstinline$++?$ & prefix increment \impl{++?}\\
    516 \lstinline$--?$ & prefix decrement \impl{--?}\\
    517 \lstinline$*?$ & dereference \impl{*?}\\
    518 \lstinline$+?$ & unary plus \impl{+?}\\
    519 \lstinline$-?$ & arithmetic negation \impl{-?}\\
    520 \lstinline$~?$ & bitwise negation \impl{~?}\\
    521 \lstinline$!?$ & logical complement \impl{"!?}\\
    522 \lstinline$?*?$ & multiplication \impl{?*?}\\
    523 \lstinline$?/?$ & division \impl{?/?}\\
     466©?[?]© & subscripting \impl{?[?]}\\
     467©?()© & function call \impl{?()}\\
     468©?++© & postfix increment \impl{?++}\\
     469©?--© & postfix decrement \impl{?--}\\
     470©++?© & prefix increment \impl{++?}\\
     471©--?© & prefix decrement \impl{--?}\\
     472©*?© & dereference \impl{*?}\\
     473©+?© & unary plus \impl{+?}\\
     474©-?© & arithmetic negation \impl{-?}\\
     475©~?© & bitwise negation \impl{~?}\\
     476©!?© & logical complement \impl{"!?}\\
     477©?*?© & multiplication \impl{?*?}\\
     478©?/?© & division \impl{?/?}\\
    524479\end{tabular}\hfil
    525480\begin{tabular}[t]{ll}
    526481%identifier & operation \\ \hline
    527 \lstinline$?%?$ & remainder \impl{?%?}\\
    528 \lstinline$?+?$ & addition \impl{?+?}\\
    529 \lstinline$?-?$ & subtraction \impl{?-?}\\
    530 \lstinline$?<<?$ & left shift \impl{?<<?}\\
    531 \lstinline$?>>?$ & right shift \impl{?>>?}\\
    532 \lstinline$?<?$ & less than \impl{?<?}\\
    533 \lstinline$?<=?$ & less than or equal \impl{?<=?}\\
    534 \lstinline$?>=?$ & greater than or equal \impl{?>=?}\\
    535 \lstinline$?>?$ & greater than \impl{?>?}\\
    536 \lstinline$?==?$ & equality \impl{?==?}\\
    537 \lstinline$?!=?$ & inequality \impl{?"!=?}\\
    538 \lstinline$?&?$ & bitwise AND \impl{?&?}\\
     482©?%?© & remainder \impl{?%?}\\
     483©?+?© & addition \impl{?+?}\\
     484©?-?© & subtraction \impl{?-?}\\
     485©?<<?© & left shift \impl{?<<?}\\
     486©?>>?© & right shift \impl{?>>?}\\
     487©?<?© & less than \impl{?<?}\\
     488©?<=?© & less than or equal \impl{?<=?}\\
     489©?>=?© & greater than or equal \impl{?>=?}\\
     490©?>?© & greater than \impl{?>?}\\
     491©?==?© & equality \impl{?==?}\\
     492©?!=?© & inequality \impl{?"!=?}\\
     493©?&?© & bitwise AND \impl{?&?}\\
    539494\end{tabular}\hfil
    540495\begin{tabular}[t]{ll}
    541496%identifier & operation \\ \hline
    542 \lstinline$?^?$ & exclusive OR \impl{?^?}\\
    543 \lstinline$?|?$ & inclusive OR \impl{?"|?}\\
    544 \lstinline$?=?$ & simple assignment \impl{?=?}\\
    545 \lstinline$?*=?$ & multiplication assignment \impl{?*=?}\\
    546 \lstinline$?/=?$ & division assignment \impl{?/=?}\\
    547 \lstinline$?%=?$ & remainder assignment \impl{?%=?}\\
    548 \lstinline$?+=?$ & addition assignment \impl{?+=?}\\
    549 \lstinline$?-=?$ & subtraction assignment \impl{?-=?}\\
    550 \lstinline$?<<=?$ & left-shift assignment \impl{?<<=?}\\
    551 \lstinline$?>>=?$ & right-shift assignment \impl{?>>=?}\\
    552 \lstinline$?&=?$ & bitwise AND assignment \impl{?&=?}\\
    553 \lstinline$?^=?$ & exclusive OR assignment \impl{?^=?}\\
    554 \lstinline$?|=?$ & inclusive OR assignment \impl{?"|=?}\\
     497©?^?© & exclusive OR \impl{?^?}\\
     498©?|?© & inclusive OR \impl{?"|?}\\
     499©?=?© & simple assignment \impl{?=?}\\
     500©?*=?© & multiplication assignment \impl{?*=?}\\
     501©?/=?© & division assignment \impl{?/=?}\\
     502©?%=?© & remainder assignment \impl{?%=?}\\
     503©?+=?© & addition assignment \impl{?+=?}\\
     504©?-=?© & subtraction assignment \impl{?-=?}\\
     505©?<<=?© & left-shift assignment \impl{?<<=?}\\
     506©?>>=?© & right-shift assignment \impl{?>>=?}\\
     507©?&=?© & bitwise AND assignment \impl{?&=?}\\
     508©?^=?© & exclusive OR assignment \impl{?^=?}\\
     509©?|=?© & inclusive OR assignment \impl{?"|=?}\\
    555510\end{tabular}
    556511\hfil
     
    560515
    561516\begin{rationale}
    562 Operator identifiers are made up of the characters of the operator token, with question marks added
    563 to mark the positions of the arguments of operators. The question marks serve as mnemonic devices;
    564 programmers can not create new operators by arbitrarily mixing question marks and other
    565 non-alphabetic characters. Note that prefix and postfix versions of the increment and decrement
    566 operators are distinguished by the position of the question mark.
    567 \end{rationale}
    568 
    569 \begin{rationale}
    570 The use of ``\lstinline$?$'' in identifiers means that some C programs are not \CFA programs.
    571 For instance, the sequence of characters ``\lstinline$(i < 0)?--i:i$'' is legal in a C program, but
    572 a \CFA compiler will detect a syntax error because it will treat ``\lstinline$?--$'' as an
    573 identifier, not as the two tokens ``\lstinline$?$'' and ``\lstinline$--$''.
     517Operator identifiers are made up of the characters of the operator token, with question marks added to mark the positions of the arguments of operators.
     518The question marks serve as mnemonic devices;
     519programmers can not create new operators by arbitrarily mixing question marks and other non-alphabetic characters.
     520Note that prefix and postfix versions of the increment and decrement operators are distinguished by the position of the question mark.
     521\end{rationale}
     522
     523\begin{rationale}
     524The 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
     525\CFA compiler detects a syntax error because it treats ``©?--©'' as an identifier, not as the two tokens ``©?©'' and ``©--©''.
    574526\end{rationale}
    575527
     
    578530\begin{itemize}
    579531\item
    580 The logical operators ``\lstinline$&&$'' and ``\lstinline$||$'', and the conditional operator
    581 ``\lstinline$?:$''. These operators do not always evaluate their operands, and hence can not be
    582 properly defined by functions unless some mechanism like call-by-name is added to the language.
    583 Note that the definitions of ``\lstinline$&&$'' and ``\lstinline$||$'' say that they work by
    584 checking that their arguments are unequal to 0, so defining ``\lstinline$!=$'' and ``\lstinline$0$''
    585 for user-defined types is enough to allow them to be used in logical expressions.
    586 
    587 \item
    588 The comma operator\index{comma expression}. It is a control-flow operator like those above.
     532The logical operators ``©&&©'' and ``©||©'', and the conditional operator ``©?:©''.
     533These 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.
     534Note 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.
     535
     536\item
     537The comma operator\index{comma expression}.
     538It is a control-flow operator like those above.
    589539Changing its meaning seems pointless and confusing.
    590540
    591541\item
    592 The ``address of'' operator. It would seem useful to define a unary ``\lstinline$&$'' operator that
    593 returns values of some programmer-defined pointer-like type. The problem lies with the type of the
    594 operator. Consider the expression ``\lstinline$p = &x$'', where \lstinline$x$ is of type
    595 \lstinline$T$ and \lstinline$p$ has the programmer-defined type \lstinline$T_ptr$. The expression
    596 might be treated as a call to the unary function ``\lstinline$&?$''. Now what is the type of the
    597 function's parameter? It can not be \lstinline$T$, because then \lstinline$x$ would be passed by
    598 value, and there is no way to create a useful pointer-like result from a value. Hence the parameter
    599 must have type \lstinline$T *$. But then the expression must be rewritten as ``\lstinline$p = &?( &x )$''
     542The ``address of'' operator.
     543It would seem useful to define a unary ``©&©'' operator that returns values of some programmer-defined pointer-like type.
     544The problem lies with the type of the operator.
     545Consider the expression ``©p = &x©'', where ©x© is of type ©T© and ©p© has the programmer-defined type ©T_ptr©.
     546The expression might be treated as a call to the unary function ``©&?©''.
     547Now 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.
     548Hence the parameter must have type ©T *©.
     549But then the expression must be rewritten as ``©p = &?( &x )©''
    600550---which doesn't seem like progress!
    601551
    602 The rule for address-of expressions would have to be something like ``keep applying address-of
    603 functions until you get one that takes a pointer argument, then use the built-in operator and
    604 stop''. It seems simpler to define a conversion function from \lstinline$T *$ to \lstinline$T_ptr$.
    605 
    606 \item
    607 The \lstinline$sizeof$ operator. It is already defined for every object type, and intimately tied
    608 into the language's storage allocation model. Redefining it seems pointless.
    609 
    610 \item
    611 The ``member of'' operators ``\lstinline$.$'' and ``\lstinline$->$''. These are not really infix
    612 operators, since their right ``operand'' is not a value or object.
    613 
    614 \item
    615 Cast operators\index{cast expression}. Anything that can be done with an explicit cast can be done
    616 with a function call. The difference in syntax is small.
     552The 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''.
     553It seems simpler to define a conversion function from ©T *© to ©T_ptr©.
     554
     555\item
     556The ©sizeof© operator.
     557It is already defined for every object type, and intimately tied into the language's storage allocation model.
     558Redefining it seems pointless.
     559
     560\item
     561The ``member of'' operators ``©.©'' and ``©->©''.
     562These are not really infix operators, since their right ``operand'' is not a value or object.
     563
     564\item
     565Cast operators\index{cast expression}.
     566Anything that can be done with an explicit cast can be done with a function call.
     567The difference in syntax is small.
    617568\end{itemize}
    618569\end{rationale}
     
    621572\section{Expressions}
    622573
    623 \CFA allows operators and identifiers to be overloaded. Hence, each expression can have a number
    624 of \define{interpretation}s, each of which has a different type. The interpretations that are
    625 potentially executable are called \define{valid interpretation}s. The set of interpretations
    626 depends on the kind of expression and on the interpretations of the subexpressions that it contains.
    627 The rules for determining the valid interpretations of an expression are discussed below for each
    628 kind of expression. Eventually the context of the outermost expression chooses one interpretation
    629 of that expression.
    630 
    631 An \define{ambiguous interpretation} is an interpretation which does not specify the exact object or
    632 function denoted by every identifier in the expression. An expression can have some interpretations
    633 that are ambiguous and others that are unambiguous. An expression that is chosen to be executed
    634 shall not be ambiguous.
    635 
    636 The \define{best valid interpretations} are the valid interpretations that use the fewest
    637 unsafe\index{unsafe conversion} conversions. Of these, the best are those where the functions and
    638 objects involved are the least polymorphic\index{less polymorphic}. Of these, the best have the
    639 lowest total \Index{conversion cost}, including all implicit conversions in the argument
    640 expressions. Of these, the best have the highest total conversion cost for the implicit conversions
    641 (if any) applied to the argument expressions. If there is no single best valid interpretation, or if
    642 the best valid interpretation is ambiguous, then the resulting interpretation is
    643 ambiguous\index{ambiguous interpretation}.
    644 
    645 \begin{rationale}
    646 \CFA's rules for selecting the best interpretation are designed to allow overload resolution to
    647 mimic C's operator semantics. In C, the ``usual arithmetic conversions'' are applied to the
    648 operands of binary operators if necessary to convert the operands to types with a common real type.
    649 In \CFA, those conversions are ``safe''. The ``fewest unsafe conversions'' rule ensures that the
    650 usual conversions are done, if possible. The ``lowest total expression cost'' rule chooses the
    651 proper common type. The odd-looking ``highest argument conversion cost'' rule ensures that, when
    652 unary expressions must be converted, conversions of function results are preferred to conversion of
    653 function arguments: \lstinline$(double)-i$ will be preferred to \lstinline$-(double)i$.
    654 
    655 The ``least polymorphic'' rule reduces the number of polymorphic function calls, since such
    656 functions are presumably more expensive than monomorphic functions and since the more specific
    657 function is presumably more appropriate. It also gives preference to monomorphic values (such as the
    658 \lstinline$int$ \lstinline$0$) over polymorphic values (such as the \Index{null pointer}
    659 \lstinline$0$\use{0}). However, interpretations that call polymorphic functions are preferred to
    660 interpretations that perform unsafe conversions, because those conversions potentially lose accuracy
    661 or violate strong typing.
     574\CFA allows operators and identifiers to be overloaded.
     575Hence, each expression can have a number of \define{interpretation}s, each of which has a different type.
     576The interpretations that are potentially executable are called \define{valid interpretation}s.
     577The set of interpretations depends on the kind of expression and on the interpretations of the subexpressions that it contains.
     578The rules for determining the valid interpretations of an expression are discussed below for each kind of expression.
     579Eventually the context of the outermost expression chooses one interpretation of that expression.
     580
     581An \define{ambiguous interpretation} is an interpretation which does not specify the exact object or function denoted by every identifier in the expression.
     582An expression can have some interpretations that are ambiguous and others that are unambiguous.
     583An expression that is chosen to be executed shall not be ambiguous.
     584
     585The \define{best valid interpretations} are the valid interpretations that use the fewest unsafe\index{unsafe conversion} conversions.
     586Of these, the best are those where the functions and objects involved are the least polymorphic\index{less polymorphic}.
     587Of these, the best have the lowest total \Index{conversion cost}, including all implicit conversions in the argument expressions.
     588Of these, the best have the highest total conversion cost for the implicit conversions
     589(if any) applied to the argument expressions.
     590If there is no single best valid interpretation, or if the best valid interpretation is ambiguous, then the resulting interpretation is ambiguous\index{ambiguous interpretation}.
     591
     592\begin{rationale}
     593\CFA's rules for selecting the best interpretation are designed to allow overload resolution to mimic C's operator semantics.
     594In C, the ``usual arithmetic conversions'' are applied to the operands of binary operators if necessary to convert the operands to types with a common real type.
     595In \CFA, those conversions are ``safe''.
     596The ``fewest unsafe conversions'' rule ensures that the usual conversions are done, if possible.
     597The ``lowest total expression cost'' rule chooses the proper common type.
     598The 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©.
     599
     600The ``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.
     601It also gives preference to monomorphic values (such as the ©int© ©0©) over polymorphic values (such as the \Index{null pointer} ©0©\use{0}).
     602However, interpretations that call polymorphic functions are preferred to interpretations that perform unsafe conversions, because those conversions potentially lose accuracy or violate strong typing.
    662603
    663604There are two notable differences between \CFA's overload resolution rules and the rules for
    664 {\CC} defined in \cite{c++}. First, the result type of a function plays a role. In {\CC}, a
    665 function call must be completely resolved based on the arguments to the call in most circumstances.
    666 In \CFA, a function call may have several interpretations, each with a different result type, and
    667 the interpretations of the containing context choose among them. Second, safe conversions are used
    668 to choose among interpretations of all sorts of functions; in {\CC}, the ``usual arithmetic
    669 conversions'' are a separate set of rules that apply only to the built-in operators.
    670 \end{rationale}
    671 
    672 Expressions involving certain operators\index{operator identifiers} are considered to be equivalent
    673 to function calls. A transformation from ``operator'' syntax to ``function call'' syntax is defined
    674 by \define{rewrite rules}. Each operator has a set of predefined functions that overload its
    675 identifier. Overload resolution determines which member of the set is executed in a given
    676 expression. The functions have \Index{internal linkage} and are implicitly declared with \Index{file
    677 scope}. The predefined functions and rewrite rules are discussed below for each of these
    678 operators.
    679 \begin{rationale}
    680 Predefined functions and constants have internal linkage because that simplifies optimization in
    681 traditional compile-and-link environments. For instance, ``\lstinline$an_int + an_int$'' is
    682 equivalent to ``\lstinline$?+?(an_int, an_int)$''. If integer addition has not been redefined in
    683 the current scope, a compiler can generate code to perform the addition directly. If predefined
    684 functions had external linkage, this optimization would be difficult.
    685 \end{rationale}
    686 
    687 \begin{rationale}
    688 Since each subsection describes the interpretations of an expression in terms of the interpretations
    689 of its subexpressions, this chapter can be taken as describing an overload resolution algorithm that
    690 uses one bottom-up pass over an expression tree. Such an algorithm was first described (for Ada) by
    691 Baker~\cite{Bak:overload}. It is extended here to handle polymorphic functions and arithmetic
    692 conversions. The overload resolution rules and the predefined functions have been chosen so that, in
    693 programs that do not introduce overloaded declarations, expressions will have the same meaning in C
    694 and in \CFA.
    695 \end{rationale}
    696 
    697 \begin{rationale}
    698 Expression syntax is quoted from the {\c11} standard. The syntax itself defines the precedence and
    699 associativity of operators. The sections are arranged in decreasing order of precedence, with all
    700 operators in a section having the same precedence.
     605{\CC} defined in \cite{C++}.
     606First, the result type of a function plays a role.
     607In {\CC}, a function call must be completely resolved based on the arguments to the call in most circumstances.
     608In \CFA, a function call may have several interpretations, each with a different result type, and the interpretations of the containing context choose among them.
     609Second, safe conversions are used to choose among interpretations of all sorts of functions;
     610in {\CC}, the ``usual arithmetic conversions'' are a separate set of rules that apply only to the built-in operators.
     611\end{rationale}
     612
     613Expressions involving certain operators\index{operator identifiers} are considered to be equivalent to function calls.
     614A transformation from ``operator'' syntax to ``function call'' syntax is defined by \define{rewrite rules}.
     615Each operator has a set of predefined functions that overload its identifier.
     616Overload resolution determines which member of the set is executed in a given expression.
     617The functions have \Index{internal linkage} and are implicitly declared with \Index{file scope}.
     618The predefined functions and rewrite rules are discussed below for each of these operators.
     619\begin{rationale}
     620Predefined functions and constants have internal linkage because that simplifies optimization in traditional compile-and-link environments.
     621For instance, ``©an_int + an_int©'' is equivalent to ``©?+?(an_int, an_int)©''.
     622If integer addition has not been redefined in the current scope, a compiler can generate code to perform the addition directly.
     623If predefined functions had external linkage, this optimization would be difficult.
     624\end{rationale}
     625
     626\begin{rationale}
     627Since each subsection describes the interpretations of an expression in terms of the interpretations of its subexpressions, this chapter can be taken as describing an overload resolution algorithm that uses one bottom-up pass over an expression tree.
     628Such an algorithm was first described (for Ada) by Baker~\cite{Bak:overload}.
     629It is extended here to handle polymorphic functions and arithmetic conversions.
     630The overload resolution rules and the predefined functions have been chosen so that, in programs that do not introduce overloaded declarations, expressions will have the same meaning in C and in \CFA.
     631\end{rationale}
     632
     633\begin{rationale}
     634Expression syntax is quoted from the {\c11} standard.
     635The syntax itself defines the precedence and associativity of operators.
     636The sections are arranged in decreasing order of precedence, with all operators in a section having the same precedence.
    701637\end{rationale}
    702638
     
    709645\rhs \nonterm{constant}
    710646\rhs \nonterm{string-literal}
    711 \rhs \lstinline$($ \nonterm{expression} \lstinline$)$
     647\rhs ©(© \nonterm{expression} ©)©
    712648\rhs \nonterm{generic-selection}
    713649\end{syntax}
    714650
    715 \paragraph{Predefined Identifiers}%
    716 \begin{lstlisting}
    717 const int 1;@\use{1}@
    718 const int 0;@\use{0}@
    719 forall( dtype DT ) DT *const 0;
    720 forall( ftype FT ) FT *const 0;
     651\predefined
     652\begin{lstlisting}
     653const int 1;§\use{1}§
     654const int 0;§\use{0}§
     655forall( dtype DT ) DT * const 0;
     656forall( ftype FT ) FT * const 0;
    721657\end{lstlisting}
    722658
    723659\semantics
    724 The \Index{valid interpretation} of an \nonterm{identifier} are given by the visible\index{visible}
    725 declarations of the identifier.
    726 
    727 A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type
    728 and value defined by {\c11}. The predefined integer identifiers ``\lstinline$1$'' and
    729 ``\lstinline$0$'' have the integer values 1 and 0, respectively. The other two predefined
    730 ``\lstinline$0$'' identifiers are bound to polymorphic pointer values that, when
    731 specialized\index{specialization} with a data type or function type respectively, produce a null
    732 pointer of that type.
     660The \Index{valid interpretation} of an \nonterm{identifier} are given by the visible\index{visible} declarations of the identifier.
     661
     662A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type and value defined by {\c11}.
     663The predefined integer identifiers ``©1©'' and ``©0©'' have the integer values 1 and 0, respectively.
     664The 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.
    733665
    734666A parenthesised expression has the same interpretations as the contained \nonterm{expression}.
    735667
    736668\examples
    737 The expression \lstinline$(void *)0$\use{0} specializes the (polymorphic) null pointer to a null
    738 pointer to \lstinline$void$. \lstinline$(const void *)0$ does the same, and also uses a safe
    739 conversion from \lstinline$void *$ to \lstinline$const void *$. In each case, the null pointer
    740 conversion is better\index{best valid interpretations} than the unsafe conversion of the integer
    741 \lstinline$0$ to a pointer.
     669The 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 *©.
     670In each case, the null pointer conversion is better\index{best valid interpretations} than the unsafe conversion of the integer ©0© to a pointer.
    742671
    743672\begin{rationale}
    744673Note that the predefined identifiers have addresses.
    745674
    746 \CFA does not have C's concept of ``null pointer constants'', which are not typed values but
    747 special strings of tokens. The C token ``\lstinline$0$'' is an expression of type \lstinline$int$
    748 with the value ``zero'', and it \emph{also} is a null pointer constant. Similarly,
    749 ``\lstinline$(void *)0$ is an expression of type \lstinline$(void *)$ whose value is a null pointer,
    750 and it also is a null pointer constant. However, in C, ``\lstinline$(void *)(void *)0$'' is
    751 \emph{not} a null pointer constant, even though it is null-valued, a pointer, and constant! The
    752 semantics of C expressions contain many special cases to deal with subexpressions that are null
    753 pointer constants.
    754 
    755 \CFA handles these cases through overload resolution. The declaration
    756 \begin{lstlisting}
    757 forall( dtype DT ) DT *const 0;
    758 \end{lstlisting}
    759 means that \lstinline$0$ is a polymorphic object, and contains a value that can have \emph{any}
    760 pointer-to-object type or pointer-to-incomplete type. The only such value is the null pointer.
    761 Therefore the type \emph{alone} is enough to identify a null pointer. Where C defines an operator
    762 with a special case for the null pointer constant, \CFA defines predefined functions with a
    763 polymorphic object parameter.
     675\CFA does not have C's concept of ``null pointer constants'', which are not typed values but special strings of tokens.
     676The C token ``©0©'' is an expression of type ©int© with the value ``zero'', and it \emph{also} is a null pointer constant.
     677Similarly, ``©(void *)0© is an expression of type ©(void *)© whose value is a null pointer, and it also is a null pointer constant.
     678However, in C, ``©(void *)(void *)0©'' is
     679\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.
     680
     681\CFA handles these cases through overload resolution.
     682The declaration
     683\begin{lstlisting}
     684forall( dtype DT ) DT * const 0;
     685\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.
     686The only such value is the null pointer.
     687Therefore the type \emph{alone} is enough to identify a null pointer.
     688Where C defines an operator with a special case for the null pointer constant, \CFA defines predefined functions with a polymorphic object parameter.
    764689\end{rationale}
    765690
     
    767692\subsubsection{Generic selection}
    768693
    769 \constraints The best interpretation of the controlling expression shall be
    770 unambiguous\index{ambiguous interpretation}, and shall have type compatible with at most one of the
    771 types named in its generic association list. If a generic selection has no \lstinline$default$
    772 generic association, the best interpretation of its controlling expression shall have type
    773 compatible with exactly one of the types named in its generic association list.
     694\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.
     695If 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.
    774696
    775697\semantics
     
    782704\lhs{postfix-expression}
    783705\rhs \nonterm{primary-expression}
    784 \rhs \nonterm{postfix-expression} \lstinline$[$ \nonterm{expression} \lstinline$]$
    785 \rhs \nonterm{postfix-expression} \lstinline$($
    786          \nonterm{argument-expression-list}\opt \lstinline$)$
    787 \rhs \nonterm{postfix-expression} \lstinline$.$ \nonterm{identifier}
    788 \rhs \nonterm{postfix-expression} \lstinline$->$ \nonterm{identifier}
    789 \rhs \nonterm{postfix-expression} \lstinline$++$
    790 \rhs \nonterm{postfix-expression} \lstinline$--$
    791 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$}$
    792 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$,$ \lstinline$}$
     706\rhs \nonterm{postfix-expression} ©[© \nonterm{expression} ©]©
     707\rhs \nonterm{postfix-expression} ©(©
     708         \nonterm{argument-expression-list}\opt ©)©
     709\rhs \nonterm{postfix-expression} ©.© \nonterm{identifier}
     710\rhs \nonterm{postfix-expression} ©->© \nonterm{identifier}
     711\rhs \nonterm{postfix-expression} ©++©
     712\rhs \nonterm{postfix-expression} ©--©
     713\rhs ©(© \nonterm{type-name} ©)© ©{© \nonterm{initializer-list} ©}©
     714\rhs ©(© \nonterm{type-name} ©)© ©{© \nonterm{initializer-list} ©,© ©}©
    793715\lhs{argument-expression-list}
    794716\rhs \nonterm{assignment-expression}
    795 \rhs \nonterm{argument-expression-list} \lstinline$,$
     717\rhs \nonterm{argument-expression-list} ©,©
    796718         \nonterm{assignment-expression}
    797719\end{syntax}
     
    799721\rewriterules
    800722\begin{lstlisting}
    801 a[b] @\rewrite@ ?[?]( b, a ) // if a has integer type */@\use{?[?]}@
    802 a[b] @\rewrite@ ?[?]( a, b ) // otherwise
    803 a( ${\em arguments }$ ) @\rewrite@ ?()( a, ${\em arguments} )$@\use{?()}@
    804 a++ @\rewrite@ ?++(&( a ))@\use{?++}@
    805 a-- @\rewrite@ ?--(&( a ))@\use{?--}@
     723a[b] => ?[?]( b, a ) // if a has integer type§\use{?[?]}§
     724a[b] => ?[?]( a, b ) // otherwise
     725a( §\emph{arguments}§ ) => ?()( a, §\emph{arguments}§ )§\use{?()}§
     726a++ => ?++(&( a ))§\use{?++}§
     727a-- => ?--(&( a ))§\use{?--}§
    806728\end{lstlisting}
    807729
     
    809731\subsubsection{Array subscripting}
    810732
    811 \begin{lstlisting}
    812 forall( type T ) lvalue T ?[?]( T *, ptrdiff_t );@\use{ptrdiff_t}@
    813 forall( type T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t );
    814 forall( type T ) lvalue const T ?[?]( const T *, ptrdiff_t );
    815 forall( type T ) lvalue restrict T ?[?]( restrict T *, ptrdiff_t );
    816 forall( type T ) lvalue volatile T ?[?]( volatile T *, ptrdiff_t );
    817 forall( type T ) lvalue _Atomic const T ?[?]( _Atomic const T *, ptrdiff_t );
    818 forall( type T ) lvalue _Atomic restrict T ?[?]( _Atomic restrict T *, ptrdiff_t );
    819 forall( type T ) lvalue _Atomic volatile T ?[?]( _Atomic volatile T *, ptrdiff_t );
    820 forall( type T ) lvalue const restrict T ?[?]( const restrict T *, ptrdiff_t );
    821 forall( type T ) lvalue const volatile T ?[?]( const volatile T *, ptrdiff_t );
    822 forall( type T ) lvalue restrict volatile T ?[?]( restrict volatile T *, ptrdiff_t );
    823 forall( type T ) lvalue _Atomic const restrict T ?[?]( _Atomic const restrict T *, ptrdiff_t );
    824 forall( type T ) lvalue _Atomic const volatile T ?[?]( _Atomic const volatile T *, ptrdiff_t );
    825 forall( type T ) lvalue _Atomic restrict volatile T ?[?]( _Atomic restrict volatile T *, ptrdiff_t );
    826 forall( type T ) lvalue const restrict volatile T ?[?]( const restrict volatile T *, ptrdiff_t );
    827 forall( type T ) lvalue _Atomic const restrict volatile T ?[?]( _Atomic const restrict volatile T *, ptrdiff_t );
     733\predefined
     734\begin{lstlisting}
     735forall( otype T ) lvalue T ?[?]( T *, ptrdiff_t );§\use{ptrdiff_t}§
     736forall( otype T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t );
     737forall( otype T ) lvalue const T ?[?]( const T *, ptrdiff_t );
     738forall( otype T ) lvalue restrict T ?[?]( restrict T *, ptrdiff_t );
     739forall( otype T ) lvalue volatile T ?[?]( volatile T *, ptrdiff_t );
     740forall( otype T ) lvalue _Atomic const T ?[?]( _Atomic const T *, ptrdiff_t );
     741forall( otype T ) lvalue _Atomic restrict T ?[?]( _Atomic restrict T *, ptrdiff_t );
     742forall( otype T ) lvalue _Atomic volatile T ?[?]( _Atomic volatile T *, ptrdiff_t );
     743forall( otype T ) lvalue const restrict T ?[?]( const restrict T *, ptrdiff_t );
     744forall( otype T ) lvalue const volatile T ?[?]( const volatile T *, ptrdiff_t );
     745forall( otype T ) lvalue restrict volatile T ?[?]( restrict volatile T *, ptrdiff_t );
     746forall( otype T ) lvalue _Atomic const restrict T ?[?]( _Atomic const restrict T *, ptrdiff_t );
     747forall( otype T ) lvalue _Atomic const volatile T ?[?]( _Atomic const volatile T *, ptrdiff_t );
     748forall( otype T ) lvalue _Atomic restrict volatile T ?[?]( _Atomic restrict volatile T *, ptrdiff_t );
     749forall( otype T ) lvalue const restrict volatile T ?[?]( const restrict volatile T *, ptrdiff_t );
     750forall( otype T ) lvalue _Atomic const restrict volatile T ?[?]( _Atomic const restrict volatile T *, ptrdiff_t );
    828751\end{lstlisting}
    829752\semantics
    830 The interpretations of subscript expressions are the interpretations of the corresponding function
    831 call expressions.
    832 \begin{rationale}
    833 C defines subscripting as pointer arithmetic in a way that makes \lstinline$a[i]$ and
    834 \lstinline$i[a]$ equivalent. \CFA provides the equivalence through a rewrite rule to reduce the
    835 number of overloadings of \lstinline$?[?]$.
    836 
    837 Subscript expressions are rewritten as function calls that pass the first parameter by value. This
    838 is somewhat unfortunate, since array-like types tend to be large. The alternative is to use the
    839 rewrite rule ``\lstinline$a[b]$ \rewrite \lstinline$?[?](&(a), b)$''. However, C semantics forbid
    840 this approach: the \lstinline$a$ in ``\lstinline$a[b]$'' can be an arbitrary pointer value, which
    841 does not have an address.
     753The interpretations of subscript expressions are the interpretations of the corresponding function call expressions.
     754\begin{rationale}
     755C 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 ©?[?]©.
     756
     757Subscript expressions are rewritten as function calls that pass the first parameter by value.
     758This is somewhat unfortunate, since array-like types tend to be large.
     759The alternative is to use the rewrite rule ``©a[b] => ?[?](&(a), b)©''.
     760However, C semantics forbid this approach: the ©a© in ``©a[b]©'' can be an arbitrary pointer value, which does not have an address.
    842761
    843762The repetitive form of the predefined identifiers shows up a deficiency\index{deficiencies!pointers
    844  to qualified types} of \CFA's type system. Type qualifiers are not included in type values, so
    845 polymorphic functions that take pointers to arbitrary types often come in one flavor for each
    846 possible qualification of the pointed-at type.
     763 to qualified types} of \CFA's type system.
     764Type qualifiers are not included in type values, so polymorphic functions that take pointers to arbitrary types often come in one flavor for each possible qualification of the pointed-at type.
    847765\end{rationale}
    848766
     
    851769
    852770\semantics
    853 A \define{function designator} is an interpretation of an expression that has function type. The
    854 \nonterm{postfix-expression} in a function call may have some interpretations that are function
    855 designators and some that are not.
    856 
    857 For those interpretations of the \nonterm{postfix-expression} that are not function designators, the
    858 expression is rewritten and becomes a call of a function named ``\lstinline$?()$''. The valid
    859 interpretations of the rewritten expression are determined in the manner described below.
    860 
    861 Each combination of function designators and argument interpretations is considered. For those
    862 interpretations of the \nonterm{postfix-expression} that are \Index{monomorphic function}
    863 designators, the combination has a \Index{valid interpretation} if the function designator accepts
    864 the number of arguments given, and each argument interpretation matches the corresponding explicit
    865 parameter:
     771A \define{function designator} is an interpretation of an expression that has function type.
     772The
     773\nonterm{postfix-expression} in a function call may have some interpretations that are function designators and some that are not.
     774
     775For those interpretations of the \nonterm{postfix-expression} that are not function designators, the expression is rewritten and becomes a call of a function named ``©?()©''.
     776The valid interpretations of the rewritten expression are determined in the manner described below.
     777
     778Each combination of function designators and argument interpretations is considered.
     779For those interpretations of the \nonterm{postfix-expression} that are \Index{monomorphic function} designators, the combination has a \Index{valid interpretation} if the function designator accepts the number of arguments given, and each argument interpretation matches the corresponding explicit parameter:
    866780\begin{itemize}
    867 \item
    868 if the argument corresponds to a parameter in the function designator's prototype, the argument
    869 interpretation must have the same type as the corresponding parameter, or be implicitly convertible
    870 to the parameter's type
    871 \item
    872 if the function designator's type does not include a prototype or if the argument corresponds to
    873 ``\lstinline$...$'' in a prototype, a \Index{default argument promotion} is applied to it.
     781\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
     782\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.
    874783\end{itemize}
    875784The type of the valid interpretation is the return type of the function designator.
    876785
    877 For those combinations where the interpretation of the \nonterm{postfix-expression} is a
    878 \Index{polymorphic function} designator and the function designator accepts the number of arguments
    879 given, there shall be at least one set of \define{implicit argument}s for the implicit parameters
    880 such that
     786For 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
    881787\begin{itemize}
    882788\item
    883 If the declaration of the implicit parameter uses \Index{type-class} \lstinline$type$\use{type}, the
    884 implicit argument must be an object type; if it uses \lstinline$dtype$, the implicit argument must
    885 be an object type or an incomplete type; and if it uses \lstinline$ftype$, the implicit argument
    886 must be a function type.
    887 
    888 \item
    889 if an explicit parameter's type uses any implicit parameters, then the corresponding explicit
    890 argument must have a type that is (or can be safely converted\index{safe conversion} to) the type
    891 produced by substituting the implicit arguments for the implicit parameters in the explicit
    892 parameter type.
    893 
    894 \item
    895 the remaining explicit arguments must match the remaining explicit parameters, as described for
    896 monomorphic function designators.
    897 
    898 \item
    899 for each \Index{assertion parameter} in the function designator's type, there must be an object or
    900 function with the same identifier that is visible at the call site and whose type is compatible with
    901 or can be specialized to the type of the assertion declaration.
     789If the declaration of the implicit parameter uses \Index{type-class} ©type©\use{type}, the implicit argument must be an object type;
     790if it uses ©dtype©, the implicit argument must be an object type or an incomplete type;
     791and if it uses ©ftype©, the implicit argument must be a function type.
     792
     793\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.
     794
     795\item the remaining explicit arguments must match the remaining explicit parameters, as described for monomorphic function designators.
     796
     797\item for each \Index{assertion parameter} in the function designator's type, there must be an object or function with the same identifier that is visible at the call site and whose type is compatible with or can be specialized to the type of the assertion declaration.
    902798\end{itemize}
    903 There is a valid interpretation for each such set of implicit parameters. The type of each valid
    904 interpretation is the return type of the function designator with implicit parameter values
    905 substituted for the implicit arguments.
    906 
    907 A valid interpretation is ambiguous\index{ambiguous interpretation} if the function designator or
    908 any of the argument interpretations is ambiguous.
    909 
    910 Every valid interpretation whose return type is not compatible with any other valid interpretation's
    911 return type is an interpretation of the function call expression.
    912 
    913 Every set of valid interpretations that have mutually compatible\index{compatible type} result types
    914 also produces an interpretation of the function call expression. The type of the interpretation is
    915 the \Index{composite type} of the types of the valid interpretations, and the value of the
    916 interpretation is that of the \Index{best valid interpretation}.
    917 \begin{rationale}
    918 One desirable property of a polymorphic programming language is \define{generalizability}: the
    919 ability to replace an abstraction with a more general but equivalent abstraction without requiring
    920 changes in any of the uses of the original\cite{Cormack90}. For instance, it should be possible to
    921 replace a function ``\lstinline$int f( int );$'' with ``\lstinline$forall( type T ) T f( T );$''
    922 without affecting any calls of \lstinline$f$.
    923 
    924 \CFA\index{deficiencies!generalizability} does not fully possess this property, because
    925 \Index{unsafe conversion} are not done when arguments are passed to polymorphic parameters.
     799There is a valid interpretation for each such set of implicit parameters.
     800The type of each valid interpretation is the return type of the function designator with implicit parameter values substituted for the implicit arguments.
     801
     802A valid interpretation is ambiguous\index{ambiguous interpretation} if the function designator or any of the argument interpretations is ambiguous.
     803
     804Every valid interpretation whose return type is not compatible with any other valid interpretation's return type is an interpretation of the function call expression.
     805
     806Every set of valid interpretations that have mutually compatible\index{compatible type} result types also produces an interpretation of the function call expression.
     807The type of the interpretation is the \Index{composite type} of the types of the valid interpretations, and the value of the interpretation is that of the \Index{best valid interpretation}.
     808\begin{rationale}
     809One 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}.
     810For 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©.
     811
     812\CFA\index{deficiencies!generalizability} does not fully possess this property, because \Index{unsafe conversion} are not done when arguments are passed to polymorphic parameters.
    926813Consider
    927814\begin{lstlisting}
     
    930817float f;
    931818double d;
    932 f = g( f, f );  // (1)
    933 f = g( i, f );  // (2) (safe conversion to float)
    934 f = g( d, f );  // (3) (unsafe conversion to float)
    935 \end{lstlisting}
    936 If \lstinline$g$ was replaced by ``\lstinline$forall( type T ) T g( T, T );$'', the first and second
    937 calls would be unaffected, but the third would change: \lstinline$f$ would be converted to
    938 \lstinline$double$, and the result would be a \lstinline$double$.
    939 
    940 Another example is the function ``\lstinline$void h( int *);$''. This function can be passed a
    941 \lstinline$void *$ argument, but the generalization ``\lstinline$forall( type T ) void h( T *);$''
    942 can not. In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an
    943 object type. If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any}
    944 object type, which is undesirable.
     819f = g( f, f );          // (1)
     820f = g( i, f );          // (2) (safe conversion to float)
     821f = g( d, f );          // (3) (unsafe conversion to float)
     822\end{lstlisting}
     823If ©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©.
     824
     825Another example is the function ``©void h( int *);©''.
     826This function can be passed a ©void *© argument, but the generalization ``©forall( otype T ) void h( T *);©'' can not.
     827In this case, ©void© is not a valid value for ©T© because it is not an object type.
     828If unsafe conversions were allowed, ©T© could be inferred to be \emph{any} object type, which is undesirable.
    945829\end{rationale}
    946830
    947831\examples
    948 A function called ``\lstinline$?()$'' might be part of a numerical differentiation package.
    949 \begin{lstlisting}
    950 extern type Derivative;
     832A function called ``©?()©'' might be part of a numerical differentiation package.
     833\begin{lstlisting}
     834extern otype Derivative;
    951835extern double ?()( Derivative, double );
    952836extern Derivative derivative_of( double (*f)( double ) );
     
    957841d = sin_dx( 12.9 );
    958842\end{lstlisting}
    959 Here, the only interpretation of \lstinline$sin_dx$ is as an object of type \lstinline$Derivative$.
    960 For that interpretation, the function call is treated as ``\lstinline$?()( sin_dx, 12.9 )$''.
    961 \begin{lstlisting}
    962 int f( long );          // (1) 
    963 int f( int, int );      // (2) 
     843Here, the only interpretation of ©sin_dx© is as an object of type ©Derivative©.
     844For that interpretation, the function call is treated as ``©?()( sin_dx, 12.9 )©''.
     845\begin{lstlisting}
     846int f( long );          // (1)
     847int f( int, int );      // (2)
    964848int f( int *);          // (3)
    965 
    966849int i = f( 5 );         // calls (1)
    967850\end{lstlisting}
    968 Function (1) provides a valid interpretation of ``\lstinline$f( 5 )$'', using an implicit
    969 \lstinline$int$ to \lstinline$long$ conversion. The other functions do not, since the second
    970 requires two arguments, and since there is no implicit conversion from \lstinline$int$ to
    971 \lstinline$int *$ that could be used with the third function.
    972 
    973 \begin{lstlisting}
    974 forall( type T ) T h( T );
     851Function (1) provides a valid interpretation of ``©f( 5 )©'', using an implicit ©int© to ©long© conversion.
     852The 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.
     853
     854\begin{lstlisting}
     855forall( otype T ) T h( T );
    975856double d = h( 1.5 );
    976857\end{lstlisting}
    977 ``\lstinline$1.5$'' is a \lstinline$double$ constant, so \lstinline$T$ is inferred to be
    978 \lstinline$double$, and the result of the function call is a \lstinline$double$.
    979 
    980 \begin{lstlisting}
    981 forall( type T, type U ) void g( T, U );        // (4)
    982 forall( type T ) void g( T, T );                        // (5)
    983 forall( type T ) void g( T, long );                     // (6)
    984 void g( long, long );                                           // (7)
     858``©1.5©'' is a ©double© constant, so ©T© is inferred to be ©double©, and the result of the function call is a ©double©.
     859
     860\begin{lstlisting}
     861forall( otype T, otype U ) void g( T, U );      // (4)
     862forall( otype T ) void g( T, T );                       // (5)
     863forall( otype T ) void g( T, long );            // (6)
     864void g( long, long );                                           // (7)
    985865double d;
    986866int i;
    987867int *p;
    988 
    989 g( d, d );                      // calls (5)
    990 g( d, i );                      // calls (6)
    991 g( i, i );                      // calls (7)
    992 g( i, p );                      // calls (4)
    993 \end{lstlisting}
    994 The first call has valid interpretations for all four versions of \lstinline$g$. (6) and (7) are
    995 discarded because they involve unsafe \lstinline$double$-to-\lstinline$long$ conversions. (5) is
    996 chosen because it is less polymorphic than (4).
    997 
    998 For the second call, (7) is again discarded. Of the remaining interpretations for (4), (5), and (6)
    999 (with \lstinline$i$ converted to \lstinline$long$), (6) is chosen because it is the least
    1000 polymorphic.
    1001 
    1002 The third call has valid interpretations for all of the functions; (7) is chosen since it is not
    1003 polymorphic at all.
    1004 
    1005 The fourth call has no interpretation for (5), because its arguments must have compatible type. (4)
    1006 is chosen because it does not involve unsafe conversions.
    1007 \begin{lstlisting}
    1008 forall( type T ) T min( T, T );
     868g( d, d );                                                                      // calls (5)
     869g( d, i );                                                                      // calls (6)
     870g( i, i );                                                                      // calls (7)
     871g( i, p );                                                                      // calls (4)
     872\end{lstlisting}
     873The 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).
     874
     875For the second call, (7) is again discarded.
     876Of the remaining interpretations for (4), (5), and (6) (with ©i© converted to ©long©), (6) is chosen because it is the least polymorphic.
     877
     878The third call has valid interpretations for all of the functions;
     879(7) is chosen since it is not polymorphic at all.
     880
     881The fourth call has no interpretation for (5), because its arguments must have compatible type. (4) is chosen because it does not involve unsafe conversions.
     882\begin{lstlisting}
     883forall( otype T ) T min( T, T );
    1009884double max( double, double );
    1010 context min_max( T ) {@\impl{min_max}@
     885trait min_max( T ) {§\impl{min_max}§
    1011886        T min( T, T );
    1012887        T max( T, T );
    1013888}
    1014 forall( type U | min_max( U ) ) void shuffle( U, U );
    1015 shuffle(9, 10);
    1016 \end{lstlisting}
    1017 The only possibility for \lstinline$U$ is \lstinline$double$, because that is the type used in the
    1018 only visible \lstinline$max$ function. 9 and 10 must be converted to \lstinline$double$, and
    1019 \lstinline$min$ must be specialized with \lstinline$T$ bound to \lstinline$double$.
    1020 \begin{lstlisting}
    1021 extern void q( int );           // (8)
    1022 extern void q( void * );        // (9)
     889forall( otype U | min_max( U ) ) void shuffle( U, U );
     890shuffle( 9, 10 );
     891\end{lstlisting}
     892The 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©.
     893\begin{lstlisting}
     894extern void q( int );                                           // (8)
     895extern void q( void * );                                        // (9)
    1023896extern void r();
    1024897q( 0 );
    1025898r( 0 );
    1026899\end{lstlisting}
    1027 The \lstinline$int 0$ could be passed to (8), or the \lstinline$(void *)$ \Index{specialization} of
    1028 the null pointer\index{null pointer} \lstinline$0$\use{0} could be passed to (9). The former is
    1029 chosen because the \lstinline$int$ \lstinline$0$ is \Index{less polymorphic}. For
    1030 the same reason, \lstinline$int$ \lstinline$0$ is passed to \lstinline$r()$, even though it has
    1031 \emph{no} declared parameter types.
     900The ©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).
     901The former is chosen because the ©int© ©0© is \Index{less polymorphic}.
     902For the same reason, ©int© ©0© is passed to ©r()©, even though it has \emph{no} declared parameter types.
    1032903
    1033904
    1034905\subsubsection{Structure and union members}
    1035906
    1036 \semantics In the member selection expression ``\lstinline$s$.\lstinline$m$'', there shall be at
    1037 least one interpretation of \lstinline$s$ whose type is a structure type or union type containing a
    1038 member named \lstinline$m$. If two or more interpretations of \lstinline$s$ have members named
    1039 \lstinline$m$ with mutually compatible types, then the expression has an \Index{ambiguous
    1040 interpretation} whose type is the composite type of the types of the members. If an interpretation
    1041 of \lstinline$s$ has a member \lstinline$m$ whose type is not compatible with any other
    1042 \lstinline$s$'s \lstinline$m$, then the expression has an interpretation with the member's type. The
    1043 expression has no other interpretations.
    1044 
    1045 The expression ``\lstinline$p->m$'' has the same interpretations as the expression
    1046 ``\lstinline$(*p).m$''.
     907\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©.
     908If 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.
     909If 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.
     910The expression has no other interpretations.
     911
     912The expression ``©p->m©'' has the same interpretations as the expression ``©(*p).m©''.
    1047913
    1048914
    1049915\subsubsection{Postfix increment and decrement operators}
    1050916
    1051 \begin{lstlisting}
    1052 _Bool ?++( volatile _Bool * ),
    1053         ?++( _Atomic volatile _Bool * );
    1054 char ?++( volatile char * ),
    1055         ?++( _Atomic volatile char * );
    1056 signed char ?++( volatile signed char * ),
    1057         ?++( _Atomic volatile signed char * );
    1058 unsigned char ?++( volatile signed char * ),
    1059         ?++( _Atomic volatile signed char * );
    1060 short int ?++( volatile short int * ),
    1061         ?++( _Atomic volatile short int * );
    1062 unsigned short int ?++( volatile unsigned short int * ),
    1063         ?++( _Atomic volatile unsigned short int * );
    1064 int ?++( volatile int * ),
    1065         ?++( _Atomic volatile int * );
    1066 unsigned int ?++( volatile unsigned int * ),
    1067         ?++( _Atomic volatile unsigned int * );
    1068 long int ?++( volatile long int * ),
    1069         ?++( _Atomic volatile long int * );
    1070 long unsigned int ?++( volatile long unsigned int * ),
    1071         ?++( _Atomic volatile long unsigned int * );
    1072 long long int ?++( volatile long long int * ),
    1073         ?++( _Atomic volatile long long int * );
    1074 long long unsigned ?++( volatile long long unsigned int * ),
    1075         ?++( _Atomic volatile long long unsigned int * );
    1076 float ?++( volatile float * ),
    1077         ?++( _Atomic volatile float * );
    1078 double ?++( volatile double * ),
    1079         ?++( _Atomic volatile double * );
    1080 long double ?++( volatile long double * ),
    1081         ?++( _Atomic volatile long double * );
    1082 
    1083 forall( type T ) T * ?++( T * restrict volatile * ),
    1084         * ?++( T * _Atomic restrict volatile * );
    1085 
    1086 forall( type T ) _Atomic T * ?++( _Atomic T * restrict volatile * ),
    1087         * ?++( _Atomic T * _Atomic restrict volatile * );
    1088 
    1089 forall( type T ) const T * ?++( const T * restrict volatile * ),
    1090         * ?++( const T * _Atomic restrict volatile * );
    1091 
    1092 forall( type T ) volatile T * ?++( volatile T * restrict volatile * ),
    1093         * ?++( volatile T * _Atomic restrict volatile * );
    1094 
    1095 forall( type T ) restrict T * ?++( restrict T * restrict volatile * ),
    1096         * ?++( restrict T * _Atomic restrict volatile * );
    1097 
    1098 forall( type T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ),
     917\predefined
     918\begin{lstlisting}
     919_Bool ?++( volatile _Bool * ), ?++( _Atomic volatile _Bool * );
     920char ?++( volatile char * ), ?++( _Atomic volatile char * );
     921signed char ?++( volatile signed char * ), ?++( _Atomic volatile signed char * );
     922unsigned char ?++( volatile signed char * ), ?++( _Atomic volatile signed char * );
     923short int ?++( volatile short int * ), ?++( _Atomic volatile short int * );
     924unsigned short int ?++( volatile unsigned short int * ), ?++( _Atomic volatile unsigned short int * );
     925int ?++( volatile int * ), ?++( _Atomic volatile int * );
     926unsigned int ?++( volatile unsigned int * ), ?++( _Atomic volatile unsigned int * );
     927long int ?++( volatile long int * ), ?++( _Atomic volatile long int * );
     928long unsigned int ?++( volatile long unsigned int * ), ?++( _Atomic volatile long unsigned int * );
     929long long int ?++( volatile long long int * ), ?++( _Atomic volatile long long int * );
     930long long unsigned ?++( volatile long long unsigned int * ), ?++( _Atomic volatile long long unsigned int * );
     931float ?++( volatile float * ), ?++( _Atomic volatile float * );
     932double ?++( volatile double * ), ?++( _Atomic volatile double * );
     933long double ?++( volatile long double * ), ?++( _Atomic volatile long double * );
     934
     935forall( otype T ) T * ?++( T * restrict volatile * ), * ?++( T * _Atomic restrict volatile * );
     936forall( otype T ) _Atomic T * ?++( _Atomic T * restrict volatile * ), * ?++( _Atomic T * _Atomic restrict volatile * );
     937forall( otype T ) const T * ?++( const T * restrict volatile * ), * ?++( const T * _Atomic restrict volatile * );
     938forall( otype T ) volatile T * ?++( volatile T * restrict volatile * ), * ?++( volatile T * _Atomic restrict volatile * );
     939forall( otype T ) restrict T * ?++( restrict T * restrict volatile * ), * ?++( restrict T * _Atomic restrict volatile * );
     940forall( otype T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ),
    1099941        * ?++( _Atomic const T * _Atomic restrict volatile * );
    1100 
    1101 forall( type T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ),
     942forall( otype T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ),
    1102943        * ?++( _Atomic restrict T * _Atomic restrict volatile * );
    1103 
    1104 forall( type T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ),
     944forall( otype T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ),
    1105945        * ?++( _Atomic volatile T * _Atomic restrict volatile * );
    1106 
    1107 forall( type T ) const restrict T * ?++( const restrict T * restrict volatile * ),
     946forall( otype T ) const restrict T * ?++( const restrict T * restrict volatile * ),
    1108947        * ?++( const restrict T * _Atomic restrict volatile * );
    1109 
    1110 forall( type T ) const volatile T * ?++( const volatile T * restrict volatile * ),
     948forall( otype T ) const volatile T * ?++( const volatile T * restrict volatile * ),
    1111949        * ?++( const volatile T * _Atomic restrict volatile * );
    1112 
    1113 forall( type T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ),
     950forall( otype T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ),
    1114951        * ?++( restrict volatile T * _Atomic restrict volatile * );
    1115 
    1116 forall( type T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ),
     952forall( otype T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ),
    1117953        * ?++( _Atomic const restrict T * _Atomic restrict volatile * );
    1118 
    1119 forall( type T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ),
     954forall( otype T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ),
    1120955        * ?++( _Atomic const volatile T * _Atomic restrict volatile * );
    1121 
    1122 forall( type T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ),
     956forall( otype T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ),
    1123957        * ?++( _Atomic restrict volatile T * _Atomic restrict volatile * );
    1124 
    1125 forall( type T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ),
     958forall( otype T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ),
    1126959        * ?++( const restrict volatile T * _Atomic restrict volatile * );
    1127 
    1128 forall( type T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ),
     960forall( otype T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ),
    1129961        * ?++( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    1130962
    1131 _Bool ?--( volatile _Bool * ),
    1132         ?--( _Atomic volatile _Bool * );
    1133 char ?--( volatile char * ),
    1134         ?--( _Atomic volatile char * );
    1135 signed char ?--( volatile signed char * ),
    1136         ?--( _Atomic volatile signed char * );
    1137 unsigned char ?--( volatile signed char * ),
    1138         ?--( _Atomic volatile signed char * );
    1139 short int ?--( volatile short int * ),
    1140         ?--( _Atomic volatile short int * );
    1141 unsigned short int ?--( volatile unsigned short int * ),
    1142         ?--( _Atomic volatile unsigned short int * );
    1143 int ?--( volatile int * ),
    1144         ?--( _Atomic volatile int * );
    1145 unsigned int ?--( volatile unsigned int * ),
    1146         ?--( _Atomic volatile unsigned int * );
    1147 long int ?--( volatile long int * ),
    1148         ?--( _Atomic volatile long int * );
    1149 long unsigned int ?--( volatile long unsigned int * ),
    1150         ?--( _Atomic volatile long unsigned int * );
    1151 long long int ?--( volatile long long int * ),
    1152         ?--( _Atomic volatile long long int * );
    1153 long long unsigned ?--( volatile long long unsigned int * ),
    1154         ?--( _Atomic volatile long long unsigned int * );
    1155 float ?--( volatile float * ),
    1156         ?--( _Atomic volatile float * );
    1157 double ?--( volatile double * ),
    1158         ?--( _Atomic volatile double * );
    1159 long double ?--( volatile long double * ),
    1160         ?--( _Atomic volatile long double * );
    1161 
    1162 forall( type T ) T * ?--( T * restrict volatile * ),
    1163         * ?--( T * _Atomic restrict volatile * );
    1164 
    1165 forall( type T ) _Atomic T * ?--( _Atomic T * restrict volatile * ),
    1166         * ?--( _Atomic T * _Atomic restrict volatile * );
    1167 
    1168 forall( type T ) const T * ?--( const T * restrict volatile * ),
    1169         * ?--( const T * _Atomic restrict volatile * );
    1170 
    1171 forall( type T ) volatile T * ?--( volatile T * restrict volatile * ),
    1172         * ?--( volatile T * _Atomic restrict volatile * );
    1173 
    1174 forall( type T ) restrict T * ?--( restrict T * restrict volatile * ),
    1175         * ?--( restrict T * _Atomic restrict volatile * );
    1176 
    1177 forall( type T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ),
     963_Bool ?--( volatile _Bool * ), ?--( _Atomic volatile _Bool * );
     964char ?--( volatile char * ), ?--( _Atomic volatile char * );
     965signed char ?--( volatile signed char * ), ?--( _Atomic volatile signed char * );
     966unsigned char ?--( volatile signed char * ), ?--( _Atomic volatile signed char * );
     967short int ?--( volatile short int * ), ?--( _Atomic volatile short int * );
     968unsigned short int ?--( volatile unsigned short int * ), ?--( _Atomic volatile unsigned short int * );
     969int ?--( volatile int * ), ?--( _Atomic volatile int * );
     970unsigned int ?--( volatile unsigned int * ), ?--( _Atomic volatile unsigned int * );
     971long int ?--( volatile long int * ), ?--( _Atomic volatile long int * );
     972long unsigned int ?--( volatile long unsigned int * ), ?--( _Atomic volatile long unsigned int * );
     973long long int ?--( volatile long long int * ), ?--( _Atomic volatile long long int * );
     974long long unsigned ?--( volatile long long unsigned int * ), ?--( _Atomic volatile long long unsigned int * );
     975float ?--( volatile float * ), ?--( _Atomic volatile float * );
     976double ?--( volatile double * ), ?--( _Atomic volatile double * );
     977long double ?--( volatile long double * ), ?--( _Atomic volatile long double * );
     978
     979forall( otype T ) T * ?--( T * restrict volatile * ), * ?--( T * _Atomic restrict volatile * );
     980forall( otype T ) _Atomic T * ?--( _Atomic T * restrict volatile * ), * ?--( _Atomic T * _Atomic restrict volatile * );
     981forall( otype T ) const T * ?--( const T * restrict volatile * ), * ?--( const T * _Atomic restrict volatile * );
     982forall( otype T ) volatile T * ?--( volatile T * restrict volatile * ), * ?--( volatile T * _Atomic restrict volatile * );
     983forall( otype T ) restrict T * ?--( restrict T * restrict volatile * ), * ?--( restrict T * _Atomic restrict volatile * );
     984forall( otype T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ),
    1178985        * ?--( _Atomic const T * _Atomic restrict volatile * );
    1179 
    1180 forall( type T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ),
     986forall( otype T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ),
    1181987        * ?--( _Atomic restrict T * _Atomic restrict volatile * );
    1182 
    1183 forall( type T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ),
     988forall( otype T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ),
    1184989        * ?--( _Atomic volatile T * _Atomic restrict volatile * );
    1185 
    1186 forall( type T ) const restrict T * ?--( const restrict T * restrict volatile * ),
     990forall( otype T ) const restrict T * ?--( const restrict T * restrict volatile * ),
    1187991        * ?--( const restrict T * _Atomic restrict volatile * );
    1188 
    1189 forall( type T ) const volatile T * ?--( const volatile T * restrict volatile * ),
     992forall( otype T ) const volatile T * ?--( const volatile T * restrict volatile * ),
    1190993        * ?--( const volatile T * _Atomic restrict volatile * );
    1191 
    1192 forall( type T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ),
     994forall( otype T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ),
    1193995        * ?--( restrict volatile T * _Atomic restrict volatile * );
    1194 
    1195 forall( type T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ),
     996forall( otype T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ),
    1196997        * ?--( _Atomic const restrict T * _Atomic restrict volatile * );
    1197 
    1198 forall( type T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ),
     998forall( otype T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ),
    1199999        * ?--( _Atomic const volatile T * _Atomic restrict volatile * );
    1200 
    1201 forall( type T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ),
     1000forall( otype T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ),
    12021001        * ?--( _Atomic restrict volatile T * _Atomic restrict volatile * );
    1203 
    1204 forall( type T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ),
     1002forall( otype T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ),
    12051003        * ?--( const restrict volatile T * _Atomic restrict volatile * );
    1206 
    1207 forall( type T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ),
     1004forall( otype T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ),
    12081005        * ?--( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    12091006\end{lstlisting}
    1210 For every extended integer type \lstinline$X$ there exist
     1007For every extended integer type ©X© there exist
    12111008% Don't use predefined: keep this out of prelude.cf.
    12121009\begin{lstlisting}
     
    12141011  ?--( volatile X * ), ?--( _Atomic volatile X * );
    12151012\end{lstlisting}
    1216 For every complete enumerated type \lstinline$E$ there exist
     1013For every complete enumerated type ©E© there exist
    12171014% Don't use predefined: keep this out of prelude.cf.
    12181015\begin{lstlisting}
     
    12221019
    12231020\begin{rationale}
    1224 Note that ``\lstinline$++$'' and ``\lstinline$--$'' are rewritten as function calls that are given a
    1225 pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald
    1226 has pointed out, this forces the modified operand of such expressions to be an lvalue. This
    1227 partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues.
    1228 \end{rationale}
    1229 
    1230 \begin{rationale}
    1231 In C, a semantic rule requires that pointer operands of increment and decrement be pointers to
    1232 object types. Hence, \lstinline$void *$ objects cannot be incremented. In \CFA, the restriction
    1233 follows from the use of a \lstinline$type$ parameter in the predefined function definitions, as
    1234 opposed to \lstinline$dtype$, since only object types can be inferred arguments corresponding to the
    1235 type parameter \lstinline$T$.
     1021Note 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.
     1022This partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues.
     1023\end{rationale}
     1024
     1025\begin{rationale}
     1026In C, a semantic rule requires that pointer operands of increment and decrement be pointers to object types.
     1027Hence, ©void *© objects cannot be incremented.
     1028In \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©.
    12361029\end{rationale}
    12371030
    12381031\semantics
    1239 First, each interpretation of the operand of an increment or decrement expression is considered
    1240 separately. For each interpretation that is a bit-field or is declared with the
    1241 \lstinline$register$\index{register@{\lstinline$register$}} \index{Itorage-class specifier}, the
    1242 expression has one valid interpretation, with the type of the operand, and the expression is
    1243 ambiguous if the operand is.
    1244 
    1245 For the remaining interpretations, the expression is rewritten, and the interpretations of the
    1246 expression are the interpretations of the corresponding function call. Finally, all interpretations
    1247 of the expression produced for the different interpretations of the operand are combined to produce
    1248 the interpretations of the expression as a whole; where interpretations have compatible result
    1249 types, the best interpretations are selected in the manner described for function call expressions.
     1032First, each interpretation of the operand of an increment or decrement expression is considered separately.
     1033For 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.
     1034
     1035For the remaining interpretations, the expression is rewritten, and the interpretations of the expression are the interpretations of the corresponding function call.
     1036Finally, all interpretations of the expression produced for the different interpretations of the operand are combined to produce the interpretations of the expression as a whole; where interpretations have compatible result types, the best interpretations are selected in the manner described for function call expressions.
    12501037
    12511038\examples
     
    12571044\end{lstlisting}
    12581045\begin{sloppypar}
    1259 Since \lstinline$&(vs)$ has type \lstinline$volatile short int *$, the best valid interpretation of
    1260 \lstinline$vs++$ calls the \lstinline$?++$ function with the \lstinline$volatile short *$ parameter.
    1261 \lstinline$s++$ does the same, applying the safe conversion from \lstinline$short int *$ to
    1262 \lstinline$volatile short int *$. Note that there is no conversion that adds an \lstinline$_Atomic$
    1263 qualifier, so the \lstinline$_Atomic volatile short int$ overloading does not provide a valid
    1264 interpretation.
     1046Since ©&(vs)© has type ©volatile short int *©, the best valid interpretation of ©vs++© calls the ©?++© function with the ©volatile short *© parameter.
     1047©s++© does the same, applying the safe conversion from ©short int *© to ©volatile short int *©.
     1048Note that there is no conversion that adds an ©_Atomic© qualifier, so the ©_Atomic volatile short int© overloading does not provide a valid interpretation.
    12651049\end{sloppypar}
    12661050
    1267 There is no safe conversion from \lstinline$const short int *$ to \lstinline$volatile short int *$,
    1268 and no \lstinline$?++$ function that accepts a \lstinline$const *$ parameter, so \lstinline$cs++$
    1269 has no valid interpretations.
    1270 
    1271 The best valid interpretation of \lstinline$as++$ calls the \lstinline$short ?++$ function with the
    1272 \lstinline$_Atomic volatile short int *$ parameter, applying a safe conversion to add the
    1273 \lstinline$volatile$ qualifier.
    1274 
    1275 \begin{lstlisting}
    1276 char * const restrict volatile * restrict volatile pqpc; pqpc++
    1277 char * * restrict volatile ppc; ppc++;
    1278 \end{lstlisting}
    1279 Since \lstinline$&(pqpc)$ has type \lstinline$char * const restrict volatile * restrict volatile *$,
    1280 the best valid interpretation of \lstinline$pqpc++$ calls the polymorphic \lstinline$?++$ function
    1281 with the \lstinline$const restrict volatile T * restrict volatile *$ parameter, inferring
    1282 \lstinline$T$ to be \lstinline$char *$.
    1283 
    1284 \begin{sloppypar}
    1285 \lstinline$ppc++$ calls the same function, again inferring \lstinline$T$ to be \lstinline$char *$,
    1286 and using the safe conversions from \lstinline$T$ to \lstinline$T const restrict volatile$.
    1287 \end{sloppypar}
    1288 
    1289 \begin{rationale}
    1290 Increment and decrement expressions show up a deficiency of \CFA's type system. There is no such
    1291 thing as a pointer to a register object or bit-field\index{deficiencies!pointers to bit-fields}.
    1292 Therefore, there is no way to define a function that alters them, and hence no way to define
    1293 increment and decrement functions for them. As a result, the semantics of increment and decrement
    1294 expressions must treat them specially. This holds true for all of the operators that may modify
    1295 such objects.
    1296 \end{rationale}
    1297 
    1298 \begin{rationale}
    1299 The polymorphic overloadings for pointer increment and decrement can be understood by considering
    1300 increasingly complex types.
     1051There 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.
     1052
     1053The 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.
     1054\begin{lstlisting}
     1055char * const restrict volatile * restrict volatile pqpc;
     1056pqpc++
     1057char * * restrict volatile ppc;
     1058ppc++;
     1059\end{lstlisting}
     1060Since ©&(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 *©.
     1061
     1062©ppc++© calls the same function, again inferring ©T© to be ©char *©, and using the safe conversions from ©T© to ©T const© ©restrict volatile©.
     1063
     1064\begin{rationale}
     1065Increment and decrement expressions show up a deficiency of \CFA's type system.
     1066There is no such thing as a pointer to a register object or bit-field\index{deficiencies!pointers to bit-fields}.
     1067Therefore, there is no way to define a function that alters them, and hence no way to define increment and decrement functions for them.
     1068As a result, the semantics of increment and decrement expressions must treat them specially.
     1069This holds true for all of the operators that may modify such objects.
     1070\end{rationale}
     1071
     1072\begin{rationale}
     1073The polymorphic overloadings for pointer increment and decrement can be understood by considering increasingly complex types.
    13011074\begin{enumerate}
    13021075\item
    1303 ``\lstinline$char * p; p++;$''. The argument to \lstinline$?++$ has type \lstinline$char * *$, and
    1304 the result has type \lstinline$char *$. The expression would be valid if \lstinline$?++$ were
    1305 declared by
    1306 \begin{lstlisting}
    1307 forall( type T ) T * ?++( T * * );
    1308 \end{lstlisting}
    1309 with \lstinline$T$ inferred to be \lstinline$char$.
    1310 
    1311 \item
    1312 ``\lstinline$char *restrict volatile qp; qp++$''. The result again has type \lstinline$char *$, but
    1313 the argument now has type \lstinline$char *restrict volatile *$, so it cannot be passed to the
    1314 hypothetical function declared in point 1. Hence the actual predefined function is
    1315 \begin{lstlisting}
    1316 forall( type T ) T * ?++( T * restrict volatile * );
    1317 \end{lstlisting}
    1318 which also accepts a \lstinline$char * *$ argument, because of the safe conversions that add
    1319 \lstinline$volatile$ and \lstinline$restrict$ qualifiers. (The parameter is not const-qualified, so
    1320 constant pointers cannot be incremented.)
    1321 
    1322 \item
    1323 ``\lstinline$char *_Atomic ap; ap++$''. The result again has type \lstinline$char *$, but no safe
    1324 conversion adds an \lstinline$_Atomic$ qualifier, so the function in point 2 is not applicable. A
    1325 separate overloading of \lstinline$?++$ is required.
    1326 
    1327 \item
    1328 ``\lstinline$char const volatile * pq; pq++$''. Here the result has type
    1329 \lstinline$char const volatile *$, so a new overloading is needed:
    1330 \begin{lstlisting}
    1331 forall( type T ) T const volatile * ?++( T const volatile *restrict volatile * );
    1332 \end{lstlisting}
    1333 One overloading is needed for each combination of qualifiers in the pointed-at
    1334 type\index{deficiencies!pointers to qualified types}.
     1076``©char * p; p++;©''.
     1077The argument to ©?++© has type ©char * *©, and the result has type ©char *©.
     1078The expression would be valid if ©?++© were declared by
     1079\begin{lstlisting}
     1080forall( otype T ) T * ?++( T * * );
     1081\end{lstlisting} with ©T© inferred to be ©char©.
     1082
     1083\item
     1084``©char *restrict volatile qp; qp++©''.
     1085The 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.
     1086Hence the actual predefined function is
     1087\begin{lstlisting}
     1088forall( otype T ) T * ?++( T * restrict volatile * );
     1089\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.)
     1090
     1091\item
     1092``©char *_Atomic ap; ap++©''.
     1093The result again has type ©char *©, but no safe conversion adds an ©_Atomic© qualifier, so the function in point 2 is not applicable.
     1094A separate overloading of ©?++© is required.
     1095
     1096\item
     1097``©char const volatile * pq; pq++©''.
     1098Here the result has type ©char const volatile *©, so a new overloading is needed:
     1099\begin{lstlisting}
     1100forall( otype T ) T const volatile * ?++( T const volatile *restrict volatile * );
     1101\end{lstlisting}
     1102One overloading is needed for each combination of qualifiers in the pointed-at type\index{deficiencies!pointers to qualified types}.
    13351103 
    13361104\item
    1337 ``\lstinline$float *restrict * prp; prp++$''. The \lstinline$restrict$ qualifier is handled just
    1338 like \lstinline$const$ and \lstinline$volatile$ in the previous case:
    1339 \begin{lstlisting}
    1340 forall( type T ) T restrict * ?++( T restrict *restrict volatile * );
    1341 \end{lstlisting}
    1342 with \lstinline$T$ inferred to be \lstinline$float *$. This looks odd, because {\c11} contains a
    1343 constraint that requires restrict-qualified types to be pointer-to-object types, and \lstinline$T$
    1344 is not syntactically a pointer type. \CFA loosens the constraint.
     1105``©float *restrict * prp; prp++©''.
     1106The ©restrict© qualifier is handled just like ©const© and ©volatile© in the previous case:
     1107\begin{lstlisting}
     1108forall( otype T ) T restrict * ?++( T restrict *restrict volatile * );
     1109\end{lstlisting} with ©T© inferred to be ©float *©.
     1110This 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.
    13451111\end{enumerate}
    13461112\end{rationale}
     
    13501116
    13511117\semantics
    1352 A compound literal has one interpretation, with the type given by the \nonterm{type-name} of the
    1353 compound literal.
     1118A compound literal has one interpretation, with the type given by the \nonterm{type-name} of the compound literal.
    13541119
    13551120
     
    13581123\begin{syntax}
    13591124\lhs{unary-expression}
    1360 \rhs \nonterm{postfix-expression}
    1361 \rhs \lstinline$++$ \nonterm{unary-expression}
    1362 \rhs \lstinline$--$ \nonterm{unary-expression}
    1363 \rhs \nonterm{unary-operator} \nonterm{cast-expression}
    1364 \rhs \lstinline$sizeof$ \nonterm{unary-expression}
    1365 \rhs \lstinline$sizeof$ \lstinline$($ \nonterm{type-name} \lstinline$)$
    1366 \lhs{unary-operator} one of \rhs \lstinline$&$ \lstinline$*$ \lstinline$+$ \lstinline$-$ \lstinline$~$ \lstinline$!$
     1125        \rhs \nonterm{postfix-expression}
     1126        \rhs ©++© \nonterm{unary-expression}
     1127        \rhs ©--© \nonterm{unary-expression}
     1128        \rhs \nonterm{unary-operator} \nonterm{cast-expression}
     1129        \rhs ©sizeof© \nonterm{unary-expression}
     1130        \rhs ©sizeof© ©(© \nonterm{type-name} ©)©
     1131\lhs{unary-operator} one of
     1132        \rhs ©&© ©*© ©+© ©-© ©~© ©!©
    13671133\end{syntax}
    13681134
    13691135\rewriterules
    13701136\begin{lstlisting}
    1371 *a      @\rewrite@ *?(a) @\use{*?}@
    1372 +a      @\rewrite@ +?(a) @\use{+?}@
    1373 -a      @\rewrite@ -?(a) @\use{-?}@
    1374 ~a      @\rewrite@ ~?(a) @\use{~?}@
    1375 !a      @\rewrite@ !?(a) @\use{"!?}@
    1376 ++a     @\rewrite@ ++?(&(a)) @\use{++?}@
    1377 --a     @\rewrite@ --?(&(a)) @\use{--?}@
     1137*a      => *?( a )§\use{*?}§
     1138+a      => +?( a )§\use{+?}§
     1139-a      => -?( a )§\use{-?}§
     1140~a      => ~?( a )§\use{~?}§
     1141!a      => !?( a )§\use{"!?}§
     1142++a     => ++?(&( a ))§\use{++?}§
     1143--a     => --?(&( a ))§\use{--?}§
    13781144\end{lstlisting}
    13791145
     
    13811147\subsubsection{Prefix increment and decrement operators}
    13821148
    1383 \begin{lstlisting}
    1384 _Bool ++?( volatile _Bool * ),
    1385         ++?( _Atomic volatile _Bool * );
    1386 char ++?( volatile char * ),
    1387         ++?( _Atomic volatile char * );
    1388 signed char ++?( volatile signed char * ),
    1389         ++?( _Atomic volatile signed char * );
    1390 unsigned char ++?( volatile signed char * ),
    1391         ++?( _Atomic volatile signed char * );
    1392 short int ++?( volatile short int * ),
    1393         ++?( _Atomic volatile short int * );
    1394 unsigned short int ++?( volatile unsigned short int * ),
    1395         ++?( _Atomic volatile unsigned short int * );
    1396 int ++?( volatile int * ),
    1397         ++?( _Atomic volatile int * );
    1398 unsigned int ++?( volatile unsigned int * ),
    1399         ++?( _Atomic volatile unsigned int * );
    1400 long int ++?( volatile long int * ),
    1401         ++?( _Atomic volatile long int * );
    1402 long unsigned int ++?( volatile long unsigned int * ),
    1403         ++?( _Atomic volatile long unsigned int * );
    1404 long long int ++?( volatile long long int * ),
    1405         ++?( _Atomic volatile long long int * );
    1406 long long unsigned ++?( volatile long long unsigned int * ),
    1407         ++?( _Atomic volatile long long unsigned int * );
    1408 float ++?( volatile float * ),
    1409         ++?( _Atomic volatile float * );
    1410 double ++?( volatile double * ),
    1411         ++?( _Atomic volatile double * );
    1412 long double ++?( volatile long double * ),
    1413         ++?( _Atomic volatile long double * );
    1414 
    1415 forall( type T ) T * ++?( T * restrict volatile * ),
    1416         * ++?( T * _Atomic restrict volatile * );
    1417 
    1418 forall( type T ) _Atomic T * ++?( _Atomic T * restrict volatile * ),
    1419         * ++?( _Atomic T * _Atomic restrict volatile * );
    1420 
    1421 forall( type T ) const T * ++?( const T * restrict volatile * ),
    1422         * ++?( const T * _Atomic restrict volatile * );
    1423 
    1424 forall( type T ) volatile T * ++?( volatile T * restrict volatile * ),
    1425         * ++?( volatile T * _Atomic restrict volatile * );
    1426 
    1427 forall( type T ) restrict T * ++?( restrict T * restrict volatile * ),
    1428         * ++?( restrict T * _Atomic restrict volatile * );
    1429 
    1430 forall( type T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ),
     1149\predefined
     1150\begin{lstlisting}
     1151_Bool ++?( volatile _Bool * ), ++?( _Atomic volatile _Bool * );
     1152char ++?( volatile char * ), ++?( _Atomic volatile char * );
     1153signed char ++?( volatile signed char * ), ++?( _Atomic volatile signed char * );
     1154unsigned char ++?( volatile signed char * ), ++?( _Atomic volatile signed char * );
     1155short int ++?( volatile short int * ), ++?( _Atomic volatile short int * );
     1156unsigned short int ++?( volatile unsigned short int * ), ++?( _Atomic volatile unsigned short int * );
     1157int ++?( volatile int * ), ++?( _Atomic volatile int * );
     1158unsigned int ++?( volatile unsigned int * ), ++?( _Atomic volatile unsigned int * );
     1159long int ++?( volatile long int * ), ++?( _Atomic volatile long int * );
     1160long unsigned int ++?( volatile long unsigned int * ), ++?( _Atomic volatile long unsigned int * );
     1161long long int ++?( volatile long long int * ), ++?( _Atomic volatile long long int * );
     1162long long unsigned ++?( volatile long long unsigned int * ), ++?( _Atomic volatile long long unsigned int * );
     1163float ++?( volatile float * ), ++?( _Atomic volatile float * );
     1164double ++?( volatile double * ), ++?( _Atomic volatile double * );
     1165long double ++?( volatile long double * ), ++?( _Atomic volatile long double * );
     1166
     1167forall( otype T ) T * ++?( T * restrict volatile * ), * ++?( T * _Atomic restrict volatile * );
     1168forall( otype T ) _Atomic T * ++?( _Atomic T * restrict volatile * ), * ++?( _Atomic T * _Atomic restrict volatile * );
     1169forall( otype T ) const T * ++?( const T * restrict volatile * ), * ++?( const T * _Atomic restrict volatile * );
     1170forall( otype T ) volatile T * ++?( volatile T * restrict volatile * ), * ++?( volatile T * _Atomic restrict volatile * );
     1171forall( otype T ) restrict T * ++?( restrict T * restrict volatile * ), * ++?( restrict T * _Atomic restrict volatile * );
     1172forall( otype T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ),
    14311173        * ++?( _Atomic const T * _Atomic restrict volatile * );
    1432 
    1433 forall( type T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ),
     1174forall( otype T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ),
    14341175        * ++?( _Atomic volatile T * _Atomic restrict volatile * );
    1435 
    1436 forall( type T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ),
     1176forall( otype T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ),
    14371177        * ++?( _Atomic restrict T * _Atomic restrict volatile * );
    1438 
    1439 forall( type T ) const volatile T * ++?( const volatile T * restrict volatile * ),
     1178forall( otype T ) const volatile T * ++?( const volatile T * restrict volatile * ),
    14401179        * ++?( const volatile T * _Atomic restrict volatile * );
    1441 
    1442 forall( type T ) const restrict T * ++?( const restrict T * restrict volatile * ),
     1180forall( otype T ) const restrict T * ++?( const restrict T * restrict volatile * ),
    14431181        * ++?( const restrict T * _Atomic restrict volatile * );
    1444 
    1445 forall( type T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ),
     1182forall( otype T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ),
    14461183        * ++?( restrict volatile T * _Atomic restrict volatile * );
    1447 
    1448 forall( type T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ),
     1184forall( otype T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ),
    14491185        * ++?( _Atomic const volatile T * _Atomic restrict volatile * );
    1450 
    1451 forall( type T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ),
     1186forall( otype T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ),
    14521187        * ++?( _Atomic const restrict T * _Atomic restrict volatile * );
    1453 
    1454 forall( type T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ),
     1188forall( otype T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ),
    14551189        * ++?( _Atomic restrict volatile T * _Atomic restrict volatile * );
    1456 
    1457 forall( type T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ),
     1190forall( otype T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ),
    14581191        * ++?( const restrict volatile T * _Atomic restrict volatile * );
    1459 
    1460 forall( type T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ),
     1192forall( otype T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ),
    14611193        * ++?( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    14621194
    1463 _Bool --?( volatile _Bool * ),
    1464         --?( _Atomic volatile _Bool * );
    1465 char --?( volatile char * ),
    1466         --?( _Atomic volatile char * );
    1467 signed char --?( volatile signed char * ),
    1468         --?( _Atomic volatile signed char * );
    1469 unsigned char --?( volatile signed char * ),
    1470         --?( _Atomic volatile signed char * );
    1471 short int --?( volatile short int * ),
    1472         --?( _Atomic volatile short int * );
    1473 unsigned short int --?( volatile unsigned short int * ),
    1474         --?( _Atomic volatile unsigned short int * );
    1475 int --?( volatile int * ),
    1476         --?( _Atomic volatile int * );
    1477 unsigned int --?( volatile unsigned int * ),
    1478         --?( _Atomic volatile unsigned int * );
    1479 long int --?( volatile long int * ),
    1480         --?( _Atomic volatile long int * );
    1481 long unsigned int --?( volatile long unsigned int * ),
    1482         --?( _Atomic volatile long unsigned int * );
    1483 long long int --?( volatile long long int * ),
    1484         --?( _Atomic volatile long long int * );
    1485 long long unsigned --?( volatile long long unsigned int * ),
    1486         --?( _Atomic volatile long long unsigned int * );
    1487 float --?( volatile float * ),
    1488         --?( _Atomic volatile float * );
    1489 double --?( volatile double * ),
    1490         --?( _Atomic volatile double * );
    1491 long double --?( volatile long double * ),
    1492         --?( _Atomic volatile long double * );
    1493 
    1494 forall( type T ) T * --?( T * restrict volatile * ),
    1495         * --?( T * _Atomic restrict volatile * );
    1496 
    1497 forall( type T ) _Atomic T * --?( _Atomic T * restrict volatile * ),
    1498         * --?( _Atomic T * _Atomic restrict volatile * );
    1499 
    1500 forall( type T ) const T * --?( const T * restrict volatile * ),
    1501         * --?( const T * _Atomic restrict volatile * );
    1502 
    1503 forall( type T ) volatile T * --?( volatile T * restrict volatile * ),
    1504         * --?( volatile T * _Atomic restrict volatile * );
    1505 
    1506 forall( type T ) restrict T * --?( restrict T * restrict volatile * ),
    1507         * --?( restrict T * _Atomic restrict volatile * );
    1508 
    1509 forall( type T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ),
     1195_Bool --?( volatile _Bool * ), --?( _Atomic volatile _Bool * );
     1196char --?( volatile char * ), --?( _Atomic volatile char * );
     1197signed char --?( volatile signed char * ), --?( _Atomic volatile signed char * );
     1198unsigned char --?( volatile signed char * ), --?( _Atomic volatile signed char * );
     1199short int --?( volatile short int * ), --?( _Atomic volatile short int * );
     1200unsigned short int --?( volatile unsigned short int * ), --?( _Atomic volatile unsigned short int * );
     1201int --?( volatile int * ), --?( _Atomic volatile int * );
     1202unsigned int --?( volatile unsigned int * ), --?( _Atomic volatile unsigned int * );
     1203long int --?( volatile long int * ), --?( _Atomic volatile long int * );
     1204long unsigned int --?( volatile long unsigned int * ), --?( _Atomic volatile long unsigned int * );
     1205long long int --?( volatile long long int * ), --?( _Atomic volatile long long int * );
     1206long long unsigned --?( volatile long long unsigned int * ), --?( _Atomic volatile long long unsigned int * );
     1207float --?( volatile float * ), --?( _Atomic volatile float * );
     1208double --?( volatile double * ), --?( _Atomic volatile double * );
     1209long double --?( volatile long double * ), --?( _Atomic volatile long double * );
     1210
     1211forall( otype T ) T * --?( T * restrict volatile * ), * --?( T * _Atomic restrict volatile * );
     1212forall( otype T ) _Atomic T * --?( _Atomic T * restrict volatile * ), * --?( _Atomic T * _Atomic restrict volatile * );
     1213forall( otype T ) const T * --?( const T * restrict volatile * ), * --?( const T * _Atomic restrict volatile * );
     1214forall( otype T ) volatile T * --?( volatile T * restrict volatile * ), * --?( volatile T * _Atomic restrict volatile * );
     1215forall( otype T ) restrict T * --?( restrict T * restrict volatile * ), * --?( restrict T * _Atomic restrict volatile * );
     1216forall( otype T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ),
    15101217        * --?( _Atomic const T * _Atomic restrict volatile * );
    1511 
    1512 forall( type T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ),
     1218forall( otype T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ),
    15131219        * --?( _Atomic volatile T * _Atomic restrict volatile * );
    1514 
    1515 forall( type T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ),
     1220forall( otype T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ),
    15161221        * --?( _Atomic restrict T * _Atomic restrict volatile * );
    1517 
    1518 forall( type T ) const volatile T * --?( const volatile T * restrict volatile * ),
     1222forall( otype T ) const volatile T * --?( const volatile T * restrict volatile * ),
    15191223        * --?( const volatile T * _Atomic restrict volatile * );
    1520 
    1521 forall( type T ) const restrict T * --?( const restrict T * restrict volatile * ),
     1224forall( otype T ) const restrict T * --?( const restrict T * restrict volatile * ),
    15221225        * --?( const restrict T * _Atomic restrict volatile * );
    1523 
    1524 forall( type T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ),
     1226forall( otype T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ),
    15251227        * --?( restrict volatile T * _Atomic restrict volatile * );
    1526 
    1527 forall( type T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ),
     1228forall( otype T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ),
    15281229        * --?( _Atomic const volatile T * _Atomic restrict volatile * );
    1529 
    1530 forall( type T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ),
     1230forall( otype T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ),
    15311231        * --?( _Atomic const restrict T * _Atomic restrict volatile * );
    1532 
    1533 forall( type T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ),
     1232forall( otype T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ),
    15341233        * --?( _Atomic restrict volatile T * _Atomic restrict volatile * );
    1535 
    1536 forall( type T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ),
     1234forall( otype T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ),
    15371235        * --?( const restrict volatile T * _Atomic restrict volatile * );
    1538 
    1539 forall( type T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ),
     1236forall( otype T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ),
    15401237        * --?( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    15411238\end{lstlisting}
    1542 For every extended integer type \lstinline$X$ there exist
     1239For every extended integer type ©X© there exist
    15431240% Don't use predefined: keep this out of prelude.cf.
    15441241\begin{lstlisting}
     
    15481245        --?( _Atomic volatile X * );
    15491246\end{lstlisting}
    1550 For every complete enumerated type \lstinline$E$ there exist
     1247For every complete enumerated type ©E© there exist
    15511248% Don't use predefined: keep this out of prelude.cf.
    15521249\begin{lstlisting}
     
    15581255
    15591256\semantics
    1560 The interpretations of prefix increment and decrement expressions are
    1561 determined in the same way as the interpretations of postfix increment and
    1562 decrement expressions.
     1257The interpretations of prefix increment and decrement expressions are determined in the same way as the interpretations of postfix increment and decrement expressions.
    15631258
    15641259
    15651260\subsubsection{Address and indirection operators}
    15661261
    1567 \begin{lstlisting}
    1568 forall( type T ) lvalue T *?( T * );
    1569 forall( type T ) _Atomic lvalue T *?( _Atomic T * );
    1570 forall( type T ) const lvalue T *?( const T * );
    1571 forall( type T ) volatile lvalue T *?( volatile T * );
    1572 forall( type T ) restrict lvalue T *?( restrict T * );
    1573 forall( type T ) _Atomic const lvalue T *?( _Atomic const T * );
    1574 forall( type T ) _Atomic volatile lvalue T *?( _Atomic volatile T * );
    1575 forall( type T ) _Atomic restrict lvalue T *?( _Atomic restrict T * );
    1576 forall( type T ) const volatile lvalue T *?( const volatile T * );
    1577 forall( type T ) const restrict lvalue T *?( const restrict T * );
    1578 forall( type T ) restrict volatile lvalue T *?( restrict volatile T * );
    1579 forall( type T ) _Atomic const volatile lvalue T *?( _Atomic const volatile T * );
    1580 forall( type T ) _Atomic const restrict lvalue T *?( _Atomic const restrict T * );
    1581 forall( type T ) _Atomic restrict volatile lvalue T *?( _Atomic restrict volatile T * );
    1582 forall( type T ) const restrict volatile lvalue T *?( const restrict volatile T * );
    1583 forall( type T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * );
    1584 
     1262\predefined
     1263\begin{lstlisting}
     1264forall( otype T ) lvalue T *?( T * );
     1265forall( otype T ) _Atomic lvalue T *?( _Atomic T * );
     1266forall( otype T ) const lvalue T *?( const T * );
     1267forall( otype T ) volatile lvalue T *?( volatile T * );
     1268forall( otype T ) restrict lvalue T *?( restrict T * );
     1269forall( otype T ) _Atomic const lvalue T *?( _Atomic const T * );
     1270forall( otype T ) _Atomic volatile lvalue T *?( _Atomic volatile T * );
     1271forall( otype T ) _Atomic restrict lvalue T *?( _Atomic restrict T * );
     1272forall( otype T ) const volatile lvalue T *?( const volatile T * );
     1273forall( otype T ) const restrict lvalue T *?( const restrict T * );
     1274forall( otype T ) restrict volatile lvalue T *?( restrict volatile T * );
     1275forall( otype T ) _Atomic const volatile lvalue T *?( _Atomic const volatile T * );
     1276forall( otype T ) _Atomic const restrict lvalue T *?( _Atomic const restrict T * );
     1277forall( otype T ) _Atomic restrict volatile lvalue T *?( _Atomic restrict volatile T * );
     1278forall( otype T ) const restrict volatile lvalue T *?( const restrict volatile T * );
     1279forall( otype T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * );
    15851280forall( ftype FT ) FT *?( FT * );
    15861281\end{lstlisting}
    15871282
    15881283\constraints
    1589 The operand of the unary ``\lstinline$&$'' operator shall have exactly one
    1590 \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous.
     1284The operand of the unary ``©&©'' operator shall have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous.
    15911285
    15921286\semantics
    1593 The ``\lstinline$&$'' expression has one interpretation which is of type \lstinline$T *$, where
    1594 \lstinline$T$ is the type of the operand.
    1595 
    1596 The interpretations of an indirection expression are the interpretations of the corresponding
    1597 function call.
     1287The ``©&©'' expression has one interpretation which is of type ©T *©, where ©T© is the type of the operand.
     1288
     1289The interpretations of an indirection expression are the interpretations of the corresponding function call.
    15981290
    15991291
    16001292\subsubsection{Unary arithmetic operators}
    16011293
    1602 \begin{lstlisting}
    1603 int
    1604         +?( int ),
    1605         -?( int ),
    1606         ~?( int );
    1607 unsigned int
    1608         +?( unsigned int ),
    1609         -?( unsigned int ),
    1610          ~?( unsigned int );
    1611 long int
    1612         +?( long int ),
    1613         -?( long int ),
    1614         ~?( long int );
    1615 long unsigned int
    1616         +?( long unsigned int ),
    1617         -?( long unsigned int ),
    1618         ~?( long unsigned int );
    1619 long long int
    1620         +?( long long int ),
    1621         -?( long long int ),
    1622         ~?( long long int );
    1623 long long unsigned int
    1624         +?( long long unsigned int ),
    1625         -?( long long unsigned int ),
    1626         ~?( long long unsigned int );
    1627 float
    1628         +?( float ),
    1629         -?( float );
    1630 double
    1631         +?( double ),
    1632         -?( double );
    1633 long double
    1634         +?( long double ),
    1635         -?( long double );
    1636 _Complex float
    1637         +?( _Complex float ),
    1638         -?( _Complex float );
    1639 _Complex double
    1640         +?( _Complex double ),
    1641         -?( _Complex double );
    1642 _Complex long double
    1643         +?( _Complex long double ),
    1644         -?( _Complex long double );
    1645 
    1646 int !?( int ),
    1647         !?( unsigned int ),
    1648         !?( long ),
    1649         !?( long unsigned int ),
    1650         !?( long long int ),
    1651         !?( long long unsigned int ),
    1652         !?( float ),
    1653         !?( double ),
    1654         !?( long double ),
    1655         !?( _Complex float ),
    1656         !?( _Complex double ),
    1657         !?( _Complex long double );
    1658 
     1294\predefined
     1295\begin{lstlisting}
     1296int     +?( int ), -?( int ), ~?( int );
     1297unsigned int +?( unsigned int ), -?( unsigned int ), ~?( unsigned int );
     1298long int +?( long int ), -?( long int ), ~?( long int );
     1299long unsigned int +?( long unsigned int ), -?( long unsigned int ), ~?( long unsigned int );
     1300long long int +?( long long int ), -?( long long int ), ~?( long long int );
     1301long long unsigned int +?( long long unsigned int ), -?( long long unsigned int ), ~?( long long unsigned int );
     1302float +?( float ), -?( float );
     1303double +?( double ), -?( double );
     1304long double +?( long double ), -?( long double );
     1305_Complex float +?( _Complex float ), -?( _Complex float );
     1306_Complex double +?( _Complex double ), -?( _Complex double );
     1307_Complex long double +?( _Complex long double ), -?( _Complex long double );
     1308int !?( int ), !?( unsigned int ), !?( long ), !?( long unsigned int ),
     1309        !?( long long int ), !?( long long unsigned int ),
     1310        !?( float ), !?( double ), !?( long double ),
     1311        !?( _Complex float ), !?( _Complex double ), !?( _Complex long double );
    16591312forall( dtype DT ) int !?( const restrict volatile DT * );
    16601313forall( dtype DT ) int !?( _Atomic const restrict volatile DT * );
    16611314forall( ftype FT ) int !?( FT * );
    16621315\end{lstlisting}
    1663 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    1664 rank of \lstinline$int$ there exist
     1316For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    16651317% Don't use predefined: keep this out of prelude.cf.
    16661318\begin{lstlisting}
     
    16701322
    16711323\semantics
    1672 The interpretations of a unary arithmetic expression are the interpretations of the corresponding
    1673 function call.
     1324The interpretations of a unary arithmetic expression are the interpretations of the corresponding function call.
    16741325
    16751326\examples
    16761327\begin{lstlisting}
    16771328long int li;
    1678 void eat_double( double );@\use{eat_double}@
    1679 
    1680 eat_double(-li ); // @\rewrite@ eat_double( -?( li ) );
    1681 \end{lstlisting}
    1682 The valid interpretations of ``\lstinline$-li$'' (assuming no extended integer types exist) are
     1329void eat_double( double );§\use{eat_double}§
     1330eat_double(-li ); // => eat_double( -?( li ) );
     1331\end{lstlisting}
     1332The valid interpretations of ``©-li©'' (assuming no extended integer types exist) are
    16831333\begin{center}
    1684 \begin{tabular}{llc}
    1685 interpretation & result type & expression conversion cost \\
     1334\begin{tabular}{llc} interpretation & result type & expression conversion cost \\
    16861335\hline
    1687 \lstinline$-?( (int)li )$                                       & \lstinline$int$                                       & (unsafe) \\
    1688 \lstinline$-?( (unsigned)li)$                           & \lstinline$unsigned int$                      & (unsafe) \\
    1689 \lstinline$-?( (long)li)$                                       & \lstinline$long$                                      & 0 \\
    1690 \lstinline$-?( (long unsigned int)li)$          & \lstinline$long unsigned int$         & 1 \\
    1691 \lstinline$-?( (long long int)li)$                      & \lstinline$long long int$                     & 2 \\
    1692 \lstinline$-?( (long long unsigned int)li)$     & \lstinline$long long unsigned int$& 3 \\
    1693 \lstinline$-?( (float)li)$                                      & \lstinline$float$                                     & 4 \\
    1694 \lstinline$-?( (double)li)$                                     & \lstinline$double$                            & 5 \\
    1695 \lstinline$-?( (long double)li)$                        & \lstinline$long double$                       & 6 \\
    1696 \lstinline$-?( (_Complex float)li)$                     & \lstinline$float$                                     & (unsafe) \\
    1697 \lstinline$-?( (_Complex double)li)$            & \lstinline$double$                            & (unsafe) \\
    1698 \lstinline$-?( (_Complex long double)li)$       & \lstinline$long double$                       & (unsafe) \\
     1336©-?( (int)li )©                                         & ©int©                                         & (unsafe) \\
     1337©-?( (unsigned)li)©                                     & ©unsigned int©                        & (unsafe) \\
     1338©-?( (long)li)©                                         & ©long©                                        & 0 \\
     1339©-?( (long unsigned int)li)©            & ©long unsigned int©           & 1 \\
     1340©-?( (long long int)li)©                        & ©long long int©                       & 2 \\
     1341©-?( (long long unsigned int)li)©       & ©long long unsigned int©      & 3 \\
     1342©-?( (float)li)©                                        & ©float©                                       & 4 \\
     1343©-?( (double)li)©                                       & ©double©                                      & 5 \\
     1344©-?( (long double)li)©                          & ©long double©                         & 6 \\
     1345©-?( (_Complex float)li)©                       & ©float©                                       & (unsafe) \\
     1346©-?( (_Complex double)li)©                      & ©double©                                      & (unsafe) \\
     1347©-?( (_Complex long double)li)©         & ©long double©                         & (unsafe) \\
    16991348\end{tabular}
    17001349\end{center}
    1701 The valid interpretations of the \lstinline$eat_double$ call, with the cost of the argument
    1702 conversion and the cost of the entire expression, are
     1350The valid interpretations of the ©eat_double© call, with the cost of the argument conversion and the cost of the entire expression, are
    17031351\begin{center}
    1704 \begin{tabular}{lcc}
    1705 interpretation & argument cost & expression cost \\
     1352\begin{tabular}{lcc} interpretation & argument cost & expression cost \\
    17061353\hline
    1707 \lstinline$eat_double( (double)-?( (int)li) )$                                  & 7                     & (unsafe) \\
    1708 \lstinline$eat_double( (double)-?( (unsigned)li) )$                             & 6                     & (unsafe) \\
    1709 \lstinline$eat_double( (double)-?(li) )$                                                & 5                     & \(0+5=5\) \\
    1710 \lstinline$eat_double( (double)-?( (long unsigned int)li) )$    & 4                     & \(1+4=5\) \\
    1711 \lstinline$eat_double( (double)-?( (long long int)li) )$                & 3                     & \(2+3=5\) \\
    1712 \lstinline$eat_double( (double)-?( (long long unsigned int)li) )$& 2            & \(3+2=5\) \\
    1713 \lstinline$eat_double( (double)-?( (float)li) )$                                & 1                     & \(4+1=5\) \\
    1714 \lstinline$eat_double( (double)-?( (double)li) )$                               & 0                     & \(5+0=5\) \\
    1715 \lstinline$eat_double( (double)-?( (long double)li) )$                  & (unsafe)      & (unsafe) \\
    1716 \lstinline$eat_double( (double)-?( (_Complex float)li) )$               & (unsafe)      & (unsafe) \\
    1717 \lstinline$eat_double( (double)-?( (_Complex double)li) )$              & (unsafe)      & (unsafe) \\
    1718 \lstinline$eat_double( (double)-?( (_Complex long double)li) )$ & (unsafe)      & (unsafe) \\
     1354©eat_double( (double)-?( (int)li) )©                                    & 7                     & (unsafe) \\
     1355©eat_double( (double)-?( (unsigned)li) )©                               & 6                     & (unsafe) \\
     1356©eat_double( (double)-?(li) )©                                                  & 5                     & \(0+5=5\) \\
     1357©eat_double( (double)-?( (long unsigned int)li) )©              & 4                     & \(1+4=5\) \\
     1358©eat_double( (double)-?( (long long int)li) )©                  & 3                     & \(2+3=5\) \\
     1359©eat_double( (double)-?( (long long unsigned int)li) )© & 2                     & \(3+2=5\) \\
     1360©eat_double( (double)-?( (float)li) )©                                  & 1                     & \(4+1=5\) \\
     1361©eat_double( (double)-?( (double)li) )©                                 & 0                     & \(5+0=5\) \\
     1362©eat_double( (double)-?( (long double)li) )©                    & (unsafe)      & (unsafe) \\
     1363©eat_double( (double)-?( (_Complex float)li) )©                 & (unsafe)      & (unsafe) \\
     1364©eat_double( (double)-?( (_Complex double)li) )©                & (unsafe)      & (unsafe) \\
     1365©eat_double( (double)-?( (_Complex long double)li) )©   & (unsafe)      & (unsafe) \\
    17191366\end{tabular}
    17201367\end{center}
    1721 Each has result type \lstinline$void$, so the best must be selected. The interpretations involving
    1722 unsafe conversions are discarded. The remainder have equal expression conversion costs, so the
    1723 ``highest argument conversion cost'' rule is invoked, and the chosen interpretation is
    1724 \lstinline$eat_double( (double)-?(li) )$.
    1725 
    1726 
    1727 \subsubsection{The \lstinline$sizeof$ and \lstinline$_Alignof$ operators}
     1368Each has result type ©void©, so the best must be selected.
     1369The interpretations involving unsafe conversions are discarded.
     1370The remainder have equal expression conversion costs, so the ``highest argument conversion cost'' rule is invoked, and the chosen interpretation is ©eat_double( (double)-?(li) )©.
     1371
     1372
     1373\subsubsection[The sizeof and \_Alignof operators]{The \lstinline@sizeof@ and \lstinline@_Alignof@ operators}
    17281374
    17291375\constraints
    1730 The operand of \lstinline$sizeof$ or \lstinline$_Alignof$ shall not be \lstinline$type$,
    1731 \lstinline$dtype$, or \lstinline$ftype$.
    1732 
    1733 When the \lstinline$sizeof$\use{sizeof} operator is applied to an expression, the expression shall
    1734 have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall
    1735 be unambiguous. \semantics A \lstinline$sizeof$ or \lstinline$_Alignof$ expression has one
    1736 interpretation, of type \lstinline$size_t$.
    1737 
    1738 When \lstinline$sizeof$ is applied to an identifier declared by a \nonterm{type-declaration} or a
    1739 \nonterm{type-parameter}, it yields the size in bytes of the type that implements the operand. When
    1740 the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the
    1741 expression is not a constant expression.
    1742 
    1743 When \lstinline$_Alignof$ is applied to an identifier declared by a \nonterm{type-declaration} or a
    1744 \nonterm{type-parameter}, it yields the alignment requirement of the type that implements the
    1745 operand. When the operand is an opaque type or an inferred type parameter\index{inferred
    1746 parameter}, the expression is not a constant expression.
    1747 \begin{rationale}
    1748 \begin{lstlisting}
    1749 type Pair = struct { int first, second; };
     1376The operand of ©sizeof© or ©_Alignof© shall not be ©type©, ©dtype©, or ©ftype©.
     1377
     1378When 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©.
     1379
     1380When ©sizeof© is applied to an identifier declared by a \nonterm{type-declaration} or a
     1381\nonterm{type-parameter}, it yields the size in bytes of the type that implements the operand.
     1382When the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the expression is not a constant expression.
     1383
     1384When ©_Alignof© is applied to an identifier declared by a \nonterm{type-declaration} or a
     1385\nonterm{type-parameter}, it yields the alignment requirement of the type that implements the operand.
     1386When the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the expression is not a constant expression.
     1387\begin{rationale}
     1388\begin{lstlisting}
     1389otype Pair = struct { int first, second; };
    17501390size_t p_size = sizeof(Pair);           // constant expression
    1751 
    1752 extern type Rational;@\use{Rational}@
     1391extern otype Rational;§\use{Rational}§
    17531392size_t c_size = sizeof(Rational);       // non-constant expression
    1754 
    17551393forall(type T) T f(T p1, T p2) {
    17561394        size_t t_size = sizeof(T);              // non-constant expression
     
    17581396}
    17591397\end{lstlisting}
    1760 ``\lstinline$sizeof Rational$'', although not statically known, is fixed. Within \lstinline$f()$,
    1761 ``\lstinline$sizeof(T)$'' is fixed for each call of \lstinline$f()$, but may vary from call to call.
     1398``©sizeof Rational©'', although not statically known, is fixed.
     1399Within ©f()©, ``©sizeof(T)©'' is fixed for each call of ©f()©, but may vary from call to call.
    17621400\end{rationale}
    17631401
     
    17681406\lhs{cast-expression}
    17691407\rhs \nonterm{unary-expression}
    1770 \rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \nonterm{cast-expression}
     1408\rhs ©(© \nonterm{type-name} ©)© \nonterm{cast-expression}
    17711409\end{syntax}
    17721410
    17731411\constraints
    1774 The \nonterm{type-name} in a \nonterm{cast-expression} shall not be \lstinline$type$,
    1775 \lstinline$dtype$, or \lstinline$ftype$.
     1412The \nonterm{type-name} in a \nonterm{cast-expression} shall not be ©type©, ©dtype©, or ©ftype©.
    17761413
    17771414\semantics
    17781415
    1779 In a \Index{cast expression} ``\lstinline$($\nonterm{type-name}\lstinline$)e$'', if
    1780 \nonterm{type-name} is the type of an interpretation of \lstinline$e$, then that interpretation is
    1781 the only interpretation of the cast expression; otherwise, \lstinline$e$ shall have some
    1782 interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast
    1783 expression is the cast of the interpretation that can be converted at the lowest cost. The cast
    1784 expression's interpretation is ambiguous\index{ambiguous interpretation} if more than one
    1785 interpretation can be converted at the lowest cost or if the selected interpretation is ambiguous.
    1786 
    1787 \begin{rationale}
    1788 Casts can be used to eliminate ambiguity in expressions by selecting interpretations of
    1789 subexpressions, and to specialize polymorphic functions and values.
     1416In a \Index{cast expression} ``©(©\nonterm{type-name}©)e©'', if
     1417\nonterm{type-name} is the type of an interpretation of ©e©, then that interpretation is the only interpretation of the cast expression;
     1418otherwise, ©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.
     1419The 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.
     1420
     1421\begin{rationale}
     1422Casts can be used to eliminate ambiguity in expressions by selecting interpretations of subexpressions, and to specialize polymorphic functions and values.
    17901423\end{rationale}
    17911424
     
    17961429\lhs{multiplicative-expression}
    17971430\rhs \nonterm{cast-expression}
    1798 \rhs \nonterm{multiplicative-expression} \lstinline$*$ \nonterm{cast-expression}
    1799 \rhs \nonterm{multiplicative-expression} \lstinline$/$ \nonterm{cast-expression}
    1800 \rhs \nonterm{multiplicative-expression} \lstinline$%$ \nonterm{cast-expression}
     1431\rhs \nonterm{multiplicative-expression} ©*© \nonterm{cast-expression}
     1432\rhs \nonterm{multiplicative-expression} ©/© \nonterm{cast-expression}
     1433\rhs \nonterm{multiplicative-expression} ©%© \nonterm{cast-expression}
    18011434\end{syntax}
    18021435
    18031436\rewriterules
    18041437\begin{lstlisting}
    1805 a * b @\rewrite@ ?*?( a, b )@\use{?*?}@
    1806 a / b @\rewrite@ ?/?( a, b )@\use{?/?}@
    1807 a % b @\rewrite@ ?%?( a, b )@\use{?%?}@
    1808 \end{lstlisting}
    1809 
    1810 \begin{lstlisting}
    1811 int?*?( int, int ),
    1812         ?/?( int, int ),
    1813         ?%?( int, int );
    1814 unsigned int?*?( unsigned int, unsigned int ),
    1815         ?/?( unsigned int, unsigned int ),
    1816         ?%?( unsigned int, unsigned int );
    1817 long int?*?( long int, long int ),
    1818         ?/?( long, long ),
    1819         ?%?( long, long );
     1438a * b => ?*?( a, b )§\use{?*?}§
     1439a / b => ?/?( a, b )§\use{?/?}§
     1440a % b => ?%?( a, b )§\use{?%?}§
     1441\end{lstlisting}
     1442
     1443\predefined
     1444\begin{lstlisting}
     1445int?*?( int, int ), ?/?( int, int ), ?%?( int, int );
     1446unsigned int?*?( unsigned int, unsigned int ), ?/?( unsigned int, unsigned int ), ?%?( unsigned int, unsigned int );
     1447long int?*?( long int, long int ), ?/?( long, long ), ?%?( long, long );
    18201448long unsigned int?*?( long unsigned int, long unsigned int ),
    1821         ?/?( long unsigned int, long unsigned int ),
    1822         ?%?( long unsigned int, long unsigned int );
    1823 long long int?*?( long long int, long long int ),
    1824         ?/?( long long int, long long int ),
     1449        ?/?( long unsigned int, long unsigned int ), ?%?( long unsigned int, long unsigned int );
     1450long long int?*?( long long int, long long int ), ?/?( long long int, long long int ),
    18251451        ?%?( long long int, long long int );
    18261452long long unsigned int ?*?( long long unsigned int, long long unsigned int ),
    1827         ?/?( long long unsigned int, long long unsigned int ),
    1828         ?%?( long long unsigned int, long long unsigned int );
    1829 float?*?( float, float ),
    1830         ?/?( float, float );
    1831 double?*?( double, double ),
    1832         ?/?( double, double );
    1833 long double?*?( long double, long double ),
    1834         ?/?( long double, long double );
    1835 _Complex float?*?( float, _Complex float ),
    1836         ?/?( float, _Complex float ),
    1837         ?*?( _Complex float, float ),
    1838         ?/?( _Complex float, float ),
    1839         ?*?( _Complex float, _Complex float ),
    1840         ?/?( _Complex float, _Complex float );
    1841 _Complex double?*?( double, _Complex double ),
    1842         ?/?( double, _Complex double ),
    1843         ?*?( _Complex double, double ),
    1844         ?/?( _Complex double, double ),
    1845         ?*?( _Complex double, _Complex double ),
    1846         ?/?( _Complex double, _Complex double );
    1847 _Complex long double?*?( long double, _Complex long double ),
    1848         ?/?( long double, _Complex long double ),
    1849         ?*?( _Complex long double, long double ),
    1850         ?/?( _Complex long double, long double ),
    1851         ?*?( _Complex long double, _Complex long double ),
    1852         ?/?( _Complex long double, _Complex long double );
    1853 \end{lstlisting}
    1854 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    1855 rank of \lstinline$int$ there exist
     1453        ?/?( long long unsigned int, long long unsigned int ), ?%?( long long unsigned int, long long unsigned int );
     1454float?*?( float, float ), ?/?( float, float );
     1455double?*?( double, double ), ?/?( double, double );
     1456long double?*?( long double, long double ), ?/?( long double, long double );
     1457_Complex float?*?( float, _Complex float ), ?/?( float, _Complex float ),
     1458        ?*?( _Complex float, float ), ?/?( _Complex float, float ),
     1459        ?*?( _Complex float, _Complex float ), ?/?( _Complex float, _Complex float );
     1460_Complex double?*?( double, _Complex double ), ?/?( double, _Complex double ),
     1461        ?*?( _Complex double, double ), ?/?( _Complex double, double ),
     1462        ?*?( _Complex double, _Complex double ), ?/?( _Complex double, _Complex double );
     1463_Complex long double?*?( long double, _Complex long double ), ?/?( long double, _Complex long double ),
     1464        ?*?( _Complex long double, long double ), ?/?( _Complex long double, long double ),
     1465        ?*?( _Complex long double, _Complex long double ), ?/?( _Complex long double, _Complex long double );
     1466\end{lstlisting}
     1467For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    18561468% Don't use predefined: keep this out of prelude.cf.
    18571469\begin{lstlisting}
     
    18601472
    18611473\begin{rationale}
    1862 {\c11} does not include conversions from the \Index{real type}s to \Index{complex type}s in the
    1863 \Index{usual arithmetic conversion}s.  Instead it specifies conversion of the result of binary
    1864 operations on arguments from mixed type domains. \CFA's predefined operators match that pattern.
     1474{\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.
    18651475\end{rationale}
    18661476
    18671477\semantics
    1868 The interpretations of multiplicative expressions are the interpretations of the corresponding
    1869 function call.
     1478The interpretations of multiplicative expressions are the interpretations of the corresponding function call.
    18701479
    18711480\examples
     
    18731482int i;
    18741483long li;
    1875 void eat_double( double );@\use{eat_double}@
     1484void eat_double( double );§\use{eat_double}§
    18761485eat_double( li % i );
    18771486\end{lstlisting}
    1878 ``\lstinline$li % i$'' is rewritten as ``\lstinline$?%?(li, i )$''. The valid interpretations
    1879 of \lstinline$?%?(li, i )$, the cost\index{conversion cost} of converting their arguments, and
    1880 the cost of converting the result to \lstinline$double$ (assuming no extended integer types are
    1881 present ) are
     1487``©li % i©'' is rewritten as ``©?%?(li, i )©''.
     1488The 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
    18821489\begin{center}
    1883 \begin{tabular}{lcc}
    1884 interpretation & argument cost & result cost \\
    1885 \hline
    1886 \lstinline$ ?%?( (int)li, i )$                                                                          & (unsafe)      & 6     \\
    1887 \lstinline$ ?%?( (unsigned)li,(unsigned)i )$                                            & (unsafe)      & 5     \\
    1888 \lstinline$ ?%?(li,(long)i )$                                                                           & 1                     & 4     \\
    1889 \lstinline$ ?%?( (long unsigned)li,(long unsigned)i )$                          & 3                     & 3     \\
    1890 \lstinline$ ?%?( (long long)li,(long long)i )$                                          & 5                     & 2     \\
    1891 \lstinline$ ?%?( (long long unsigned)li, (long long unsigned)i )$       & 7                     & 1     \\
     1490\begin{tabular}{lcc} interpretation & argument cost & result cost \\
     1491\hline
     1492© ?%?( (int)li, i )©                                                                            & (unsafe)      & 6     \\
     1493© ?%?( (unsigned)li,(unsigned)i )©                                                      & (unsafe)      & 5     \\
     1494© ?%?( li, (long)i )©                                                                           & 1                     & 4     \\
     1495© ?%?( (long unsigned)li,(long unsigned)i )©                            & 3                     & 3     \\
     1496© ?%?( (long long)li,(long long)i )©                                            & 5                     & 2     \\
     1497© ?%?( (long long unsigned)li, (long long unsigned)i )©         & 7                     & 1     \\
    18921498\end{tabular}
    18931499\end{center}
    1894 The best interpretation of \lstinline$eat_double( li, i )$ is
    1895 \lstinline$eat_double( (double)?%?(li, (long)i ))$, which has no unsafe conversions and the
    1896 lowest total cost.
    1897 
    1898 \begin{rationale}
    1899 {\c11} defines most arithmetic operations to apply an \Index{integer promotion} to any argument that
    1900 belongs to a type that has an \Index{integer conversion rank} less than that of \lstinline$int$.If
    1901 \lstinline$s$ is a \lstinline$short int$, ``\lstinline$s *s$'' does not have type \lstinline$short int$;
    1902 it is treated as ``\lstinline$( (int)s ) * ( (int)s )$'', and has type \lstinline$int$. \CFA matches
    1903 that pattern; it does not predefine ``\lstinline$short ?*?( short, short )$''.
    1904 
    1905 These ``missing'' operators limit polymorphism. Consider
    1906 \begin{lstlisting}
    1907 forall( type T | T ?*?( T, T ) ) T square( T );
     1500The best interpretation of ©eat_double( li, i )© is ©eat_double( (double)?%?(li, (long)i ))©, which has no unsafe conversions and the lowest total cost.
     1501
     1502\begin{rationale}
     1503{\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©.
     1504If ©s© is a ©short int©, ``©s *s©'' does not have type ©short int©;
     1505it is treated as ``©( (int)s ) * ( (int)s )©'', and has type ©int©. \CFA matches that pattern;
     1506it does not predefine ``©short ?*?( short, short )©''.
     1507
     1508These ``missing'' operators limit polymorphism.
     1509Consider
     1510\begin{lstlisting}
     1511forall( otype T | T ?*?( T, T ) ) T square( T );
    19081512short s;
    19091513square( s );
    19101514\end{lstlisting}
    1911 Since \CFA does not define a multiplication operator for \lstinline$short int$,
    1912 \lstinline$square( s )$ is treated as \lstinline$square( (int)s )$, and the result has type
    1913 \lstinline$int$. This is mildly surprising, but it follows the {\c11} operator pattern.
     1515Since \CFA does not define a multiplication operator for ©short int©, ©square( s )© is treated as ©square( (int)s )©, and the result has type ©int©.
     1516This is mildly surprising, but it follows the {\c11} operator pattern.
    19141517
    19151518A more troubling example is
    19161519\begin{lstlisting}
    1917 forall( type T | ?*?( T, T ) ) T product( T[], int n );
     1520forall( otype T | ?*?( T, T ) ) T product( T[], int n );
    19181521short sa[5];
    19191522product( sa, 5);
    19201523\end{lstlisting}
    1921 This has no valid interpretations, because \CFA has no conversion from ``array of
    1922 \lstinline$short int$'' to ``array of \lstinline$int$''. The alternatives in such situations
    1923 include
     1524This has no valid interpretations, because \CFA has no conversion from ``array of ©short int©'' to ``array of ©int©''.
     1525The alternatives in such situations include
    19241526\begin{itemize}
    19251527\item
    1926 Defining monomorphic overloadings of \lstinline$product$ for \lstinline$short$ and the other
    1927 ``small'' types.
    1928 \item
    1929 Defining ``\lstinline$short ?*?( short, short )$'' within the scope containing the call to
    1930 \lstinline$product$.
    1931 \item
    1932 Defining \lstinline$product$ to take as an argument a conversion function from the ``small'' type to
    1933 the operator's argument type.
     1528Defining monomorphic overloadings of ©product© for ©short© and the other ``small'' types.
     1529\item
     1530Defining ``©short ?*?( short, short )©'' within the scope containing the call to ©product©.
     1531\item
     1532Defining ©product© to take as an argument a conversion function from the ``small'' type to the operator's argument type.
    19341533\end{itemize}
    19351534\end{rationale}
     
    19411540\lhs{additive-expression}
    19421541\rhs \nonterm{multiplicative-expression}
    1943 \rhs \nonterm{additive-expression} \lstinline$+$ \nonterm{multiplicative-expression}
    1944 \rhs \nonterm{additive-expression} \lstinline$-$ \nonterm{multiplicative-expression}
     1542\rhs \nonterm{additive-expression} ©+© \nonterm{multiplicative-expression}
     1543\rhs \nonterm{additive-expression} ©-© \nonterm{multiplicative-expression}
    19451544\end{syntax}
    19461545
    19471546\rewriterules
    19481547\begin{lstlisting}
    1949 a + b @\rewrite@ ?+?( a, b )@\use{?+?}@
    1950 a - b @\rewrite@ ?-?( a, b )@\use{?-?}@
    1951 \end{lstlisting}
    1952 
    1953 \begin{lstlisting}
    1954 int?+?( int, int ),
    1955         ?-?( int, int );
    1956 unsigned int?+?( unsigned int, unsigned int ),
    1957         ?-?( unsigned int, unsigned int );
    1958 long int?+?( long int, long int ),
    1959         ?-?( long int, long int );
    1960 long unsigned int?+?( long unsigned int, long unsigned int ),
    1961         ?-?( long unsigned int, long unsigned int );
    1962 long long int?+?( long long int, long long int ),
    1963         ?-?( long long int, long long int );
     1548a + b => ?+?( a, b )§\use{?+?}§
     1549a - b => ?-?( a, b )§\use{?-?}§
     1550\end{lstlisting}
     1551
     1552\predefined
     1553\begin{lstlisting}
     1554int?+?( int, int ), ?-?( int, int );
     1555unsigned int?+?( unsigned int, unsigned int ), ?-?( unsigned int, unsigned int );
     1556long int?+?( long int, long int ), ?-?( long int, long int );
     1557long unsigned int?+?( long unsigned int, long unsigned int ), ?-?( long unsigned int, long unsigned int );
     1558long long int?+?( long long int, long long int ), ?-?( long long int, long long int );
    19641559long long unsigned int ?+?( long long unsigned int, long long unsigned int ),
    19651560        ?-?( long long unsigned int, long long unsigned int );
    1966 float?+?( float, float ),
    1967         ?-?( float, float );
    1968 double?+?( double, double ),
    1969         ?-?( double, double );
    1970 long double?+?( long double, long double ),
    1971         ?-?( long double, long double );
    1972 _Complex float?+?( _Complex float, float ),
    1973         ?-?( _Complex float, float ),
    1974         ?+?( float, _Complex float ),
    1975         ?-?( float, _Complex float ),
    1976         ?+?( _Complex float, _Complex float ),
    1977         ?-?( _Complex float, _Complex float );
    1978 _Complex double?+?( _Complex double, double ),
    1979         ?-?( _Complex double, double ),
    1980         ?+?( double, _Complex double ),
    1981         ?-?( double, _Complex double ),
    1982         ?+?( _Complex double, _Complex double ),
    1983         ?-?( _Complex double, _Complex double );
    1984 _Complex long double?+?( _Complex long double, long double ),
    1985         ?-?( _Complex long double, long double ),
    1986         ?+?( long double, _Complex long double ),
    1987         ?-?( long double, _Complex long double ),
    1988         ?+?( _Complex long double, _Complex long double ),
    1989         ?-?( _Complex long double, _Complex long double );
    1990 
    1991 forall( type T ) T
    1992         * ?+?( T *, ptrdiff_t ),
    1993         * ?+?( ptrdiff_t, T * ),
    1994         * ?-?( T *, ptrdiff_t );
    1995 
    1996 forall( type T ) _Atomic T
    1997         * ?+?( _Atomic T *, ptrdiff_t ),
    1998         * ?+?( ptrdiff_t, _Atomic T * ),
     1561float?+?( float, float ), ?-?( float, float );
     1562double?+?( double, double ), ?-?( double, double );
     1563long double?+?( long double, long double ), ?-?( long double, long double );
     1564_Complex float?+?( _Complex float, float ), ?-?( _Complex float, float ),
     1565        ?+?( float, _Complex float ), ?-?( float, _Complex float ),
     1566        ?+?( _Complex float, _Complex float ), ?-?( _Complex float, _Complex float );
     1567_Complex double?+?( _Complex double, double ), ?-?( _Complex double, double ),
     1568        ?+?( double, _Complex double ), ?-?( double, _Complex double ),
     1569        ?+?( _Complex double, _Complex double ), ?-?( _Complex double, _Complex double );
     1570_Complex long double?+?( _Complex long double, long double ), ?-?( _Complex long double, long double ),
     1571        ?+?( long double, _Complex long double ), ?-?( long double, _Complex long double ),
     1572        ?+?( _Complex long double, _Complex long double ), ?-?( _Complex long double, _Complex long double );
     1573
     1574forall( otype T ) T * ?+?( T *, ptrdiff_t ), * ?+?( ptrdiff_t, T * ), * ?-?( T *, ptrdiff_t );
     1575forall( otype T ) _Atomic T * ?+?( _Atomic T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic T * ),
    19991576        * ?-?( _Atomic T *, ptrdiff_t );
    2000 
    2001 forall( type T ) const T
    2002         * ?+?( const T *, ptrdiff_t ),
    2003         * ?+?( ptrdiff_t, const T * ),
     1577forall( otype T ) const T * ?+?( const T *, ptrdiff_t ), * ?+?( ptrdiff_t, const T * ),
    20041578        * ?-?( const T *, ptrdiff_t );
    2005 
    2006 forall( type T ) restrict T
    2007         * ?+?( restrict T *, ptrdiff_t ),
    2008         * ?+?( ptrdiff_t, restrict T * ),
     1579forall( otype T ) restrict T * ?+?( restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, restrict T * ),
    20091580        * ?-?( restrict T *, ptrdiff_t );
    2010 
    2011 forall( type T ) volatile T
    2012         * ?+?( volatile T *, ptrdiff_t ),
    2013         * ?+?( ptrdiff_t, volatile T * ),
     1581forall( otype T ) volatile T * ?+?( volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, volatile T * ),
    20141582        * ?-?( volatile T *, ptrdiff_t );
    2015 
    2016 forall( type T ) _Atomic const T
    2017         * ?+?( _Atomic const T *, ptrdiff_t ),
    2018         * ?+?( ptrdiff_t, _Atomic const T * ),
     1583forall( otype T ) _Atomic const T * ?+?( _Atomic const T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic const T * ),
    20191584        * ?-?( _Atomic const T *, ptrdiff_t );
    2020 
    2021 forall( type T ) _Atomic restrict T
    2022         * ?+?( _Atomic restrict T *, ptrdiff_t ),
    2023         * ?+?( ptrdiff_t, _Atomic restrict T * ),
     1585forall( otype T ) _Atomic restrict T * ?+?( _Atomic restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic restrict T * ),
    20241586        * ?-?( _Atomic restrict T *, ptrdiff_t );
    2025 
    2026 forall( type T ) _Atomic volatile T
    2027         * ?+?( _Atomic volatile T *, ptrdiff_t ),
    2028         * ?+?( ptrdiff_t, _Atomic volatile T * ),
     1587forall( otype T ) _Atomic volatile T * ?+?( _Atomic volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic volatile T * ),
    20291588        * ?-?( _Atomic volatile T *, ptrdiff_t );
    2030 
    2031 forall( type T ) const restrict T
    2032         * ?+?( const restrict T *, ptrdiff_t ),
    2033         * ?+?( ptrdiff_t, const restrict T * ),
     1589forall( otype T ) const restrict T * ?+?( const restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, const restrict T * ),
    20341590        * ?-?( const restrict T *, ptrdiff_t );
    2035 
    2036 forall( type T ) const volatile T
    2037         * ?+?( const volatile T *, ptrdiff_t ),
    2038         * ?+?( ptrdiff_t, const volatile T * ),
     1591forall( otype T ) const volatile T * ?+?( const volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, const volatile T * ),
    20391592        * ?-?( const volatile T *, ptrdiff_t );
    2040 
    2041 forall( type T ) restrict volatile T
    2042         * ?+?( restrict volatile T *, ptrdiff_t ),
    2043         * ?+?( ptrdiff_t, restrict volatile T * ),
     1593forall( otype T ) restrict volatile T * ?+?( restrict volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, restrict volatile T * ),
    20441594        * ?-?( restrict volatile T *, ptrdiff_t );
    2045 
    2046 forall( type T ) _Atomic const restrict T
    2047         * ?+?( _Atomic const restrict T *, ptrdiff_t ),
     1595forall( otype T ) _Atomic const restrict T * ?+?( _Atomic const restrict T *, ptrdiff_t ),
    20481596        * ?+?( ptrdiff_t, _Atomic const restrict T * ),
    20491597        * ?-?( _Atomic const restrict T *, ptrdiff_t );
    2050 
    2051 forall( type T ) ptrdiff_t
     1598forall( otype T ) ptrdiff_t
    20521599        * ?-?( const restrict volatile T *, const restrict volatile T * ),
    20531600        * ?-?( _Atomic const restrict volatile T *, _Atomic const restrict volatile T * );
    20541601\end{lstlisting}
    2055 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2056 rank of \lstinline$int$ there exist
     1602For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    20571603% Don't use predefined: keep this out of prelude.cf.
    20581604\begin{lstlisting}
     
    20611607
    20621608\semantics
    2063 The interpretations of additive expressions are the interpretations of the corresponding function
    2064 calls.
    2065 
    2066 \begin{rationale}
    2067 \lstinline$ptrdiff_t$ is an implementation-defined identifier defined in \lstinline$<stddef.h>$ that
    2068 is synonymous with a signed integral type that is large enough to hold the difference between two
    2069 pointers. It seems reasonable to use it for pointer addition as well. (This is technically a
    2070 difference between \CFA and C, which only specifies that pointer addition uses an \emph{integral}
    2071 argument.) Hence it is also used for subscripting, which is defined in terms of pointer addition.
    2072 The {\c11} standard uses \lstinline$size_t$ in several cases where a library function takes an
    2073 argument that is used as a subscript, but \lstinline$size_t$ is unsuitable here because it is an
    2074 unsigned type.
     1609The interpretations of additive expressions are the interpretations of the corresponding function calls.
     1610
     1611\begin{rationale}
     1612©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.
     1613It 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.
     1614The {\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.
    20751615\end{rationale}
    20761616
     
    20811621\lhs{shift-expression}
    20821622\rhs \nonterm{additive-expression}
    2083 \rhs \nonterm{shift-expression} \lstinline$<<$ \nonterm{additive-expression}
    2084 \rhs \nonterm{shift-expression} \lstinline$>>$ \nonterm{additive-expression}
     1623\rhs \nonterm{shift-expression} ©<<© \nonterm{additive-expression}
     1624\rhs \nonterm{shift-expression} ©>>© \nonterm{additive-expression}
    20851625\end{syntax}
    20861626
    2087 \rewriterules \use{?>>?}%use{?<<?}
    2088 \begin{lstlisting}
    2089 a << b @\rewrite@ ?<<?( a, b )
    2090 a >> b @\rewrite@ ?>>?( a, b )
    2091 \end{lstlisting}
    2092 
    2093 \begin{lstlisting}
    2094 int ?<<?( int, int ),
    2095          ?>>?( int, int );
    2096 unsigned int ?<<?( unsigned int, int ),
    2097          ?>>?( unsigned int, int );
    2098 long int ?<<?( long int, int ),
    2099          ?>>?( long int, int );
    2100 long unsigned int ?<<?( long unsigned int, int ),
    2101          ?>>?( long unsigned int, int );
    2102 long long int ?<<?( long long int, int ),
    2103          ?>>?( long long int, int );
    2104 long long unsigned int ?<<?( long long unsigned int, int ),
    2105          ?>>?( long long unsigned int, int);
    2106 \end{lstlisting}
    2107 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2108 rank of \lstinline$int$ there exist
     1627\rewriterules
     1628\begin{lstlisting}
     1629a << b => ?<<?( a, b )§\use{?<<?}§
     1630a >> b => ?>>?( a, b )§\use{?>>?}§
     1631\end{lstlisting}
     1632
     1633\predefined
     1634\begin{lstlisting}
     1635int ?<<?( int, int ), ?>>?( int, int );
     1636unsigned int ?<<?( unsigned int, int ), ?>>?( unsigned int, int );
     1637long int ?<<?( long int, int ), ?>>?( long int, int );
     1638long unsigned int ?<<?( long unsigned int, int ), ?>>?( long unsigned int, int );
     1639long long int ?<<?( long long int, int ), ?>>?( long long int, int );
     1640long long unsigned int ?<<?( long long unsigned int, int ), ?>>?( long long unsigned int, int);
     1641\end{lstlisting}
     1642For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    21091643% Don't use predefined: keep this out of prelude.cf.
    21101644\begin{lstlisting}
     
    21131647
    21141648\begin{rationale}
    2115 The bitwise shift operators break the usual pattern: they do not convert both operands to a common
    2116 type. The right operand only undergoes \Index{integer promotion}.
     1649The bitwise shift operators break the usual pattern: they do not convert both operands to a common type.
     1650The right operand only undergoes \Index{integer promotion}.
    21171651\end{rationale}
    21181652
    21191653\semantics
    2120 The interpretations of a bitwise shift expression are the interpretations of the corresponding
    2121 function calls.
     1654The interpretations of a bitwise shift expression are the interpretations of the corresponding function calls.
    21221655
    21231656
     
    21271660\lhs{relational-expression}
    21281661\rhs \nonterm{shift-expression}
    2129 \rhs \nonterm{relational-expression} \lstinline$< $ \nonterm{shift-expression}
    2130 \rhs \nonterm{relational-expression} \lstinline$> $ \nonterm{shift-expression}
    2131 \rhs \nonterm{relational-expression} \lstinline$<=$ \nonterm{shift-expression}
    2132 \rhs \nonterm{relational-expression} \lstinline$>=$ \nonterm{shift-expression}
     1662\rhs \nonterm{relational-expression} ©< © \nonterm{shift-expression}
     1663\rhs \nonterm{relational-expression} ©> © \nonterm{shift-expression}
     1664\rhs \nonterm{relational-expression} ©<=© \nonterm{shift-expression}
     1665\rhs \nonterm{relational-expression} ©>=© \nonterm{shift-expression}
    21331666\end{syntax}
    21341667
    2135 \rewriterules\use{?>?}\use{?>=?}%use{?<?}%use{?<=?}
    2136 \begin{lstlisting}
    2137 a < b @\rewrite@ ?<?( a, b )
    2138 a > b @\rewrite@ ?>?( a, b )
    2139 a <= b @\rewrite@ ?<=?( a, b )
    2140 a >= b @\rewrite@ ?>=?( a, b )
    2141 \end{lstlisting}
    2142 
    2143 \begin{lstlisting}
    2144 int ?<?( int, int ),
    2145         ?<=?( int, int ),
    2146         ?>?( int, int ),
    2147         ?>=?( int, int );
    2148 int ?<?( unsigned int, unsigned int ),
    2149         ?<=?( unsigned int, unsigned int ),
    2150         ?>?( unsigned int, unsigned int ),
    2151         ?>=?( unsigned int, unsigned int );
    2152 int ?<?( long int, long int ),
    2153         ?<=?( long int, long int ),
    2154         ?>?( long int, long int ),
    2155         ?>=?( long int, long int );
    2156 int ?<?( long unsigned int, long unsigned ),
    2157         ?<=?( long unsigned int, long unsigned ),
    2158         ?>?( long unsigned int, long unsigned ),
    2159         ?>=?( long unsigned int, long unsigned );
    2160 int ?<?( long long int, long long int ),
    2161         ?<=?( long long int, long long int ),
    2162         ?>?( long long int, long long int ),
    2163         ?>=?( long long int, long long int );
    2164 int ?<?( long long unsigned int, long long unsigned ),
    2165         ?<=?( long long unsigned int, long long unsigned ),
    2166         ?>?( long long unsigned int, long long unsigned ),
    2167         ?>=?( long long unsigned int, long long unsigned );
    2168 int ?<?( float, float ),
    2169         ?<=?( float, float ),
    2170         ?>?( float, float ),
    2171         ?>=?( float, float );
    2172 int ?<?( double, double ),
    2173         ?<=?( double, double ),
    2174         ?>?( double, double ),
    2175         ?>=?( double, double );
    2176 int ?<?( long double, long double ),
    2177         ?<=?( long double, long double ),
    2178         ?>?( long double, long double ),
    2179         ?>=?( long double, long double );
    2180 
    2181 forall( dtype DT ) int
    2182         ?<?( const restrict volatile DT *, const restrict volatile DT * ),
     1668\rewriterules
     1669\begin{lstlisting}
     1670a < b => ?<?( a, b )§\use{?<?}§
     1671a > b => ?>?( a, b )§\use{?>?}§
     1672a <= b => ?<=?( a, b )§\use{?<=?}§
     1673a >= b => ?>=?( a, b )§\use{?>=?}§
     1674\end{lstlisting}
     1675
     1676\predefined
     1677\begin{lstlisting}
     1678int ?<?( int, int ), ?<=?( int, int ),
     1679        ?>?( int, int ), ?>=?( int, int );
     1680int ?<?( unsigned int, unsigned int ), ?<=?( unsigned int, unsigned int ),
     1681        ?>?( unsigned int, unsigned int ), ?>=?( unsigned int, unsigned int );
     1682int ?<?( long int, long int ), ?<=?( long int, long int ),
     1683        ?>?( long int, long int ), ?>=?( long int, long int );
     1684int ?<?( long unsigned int, long unsigned ), ?<=?( long unsigned int, long unsigned ),
     1685        ?>?( long unsigned int, long unsigned ), ?>=?( long unsigned int, long unsigned );
     1686int ?<?( long long int, long long int ), ?<=?( long long int, long long int ),
     1687        ?>?( long long int, long long int ), ?>=?( long long int, long long int );
     1688int ?<?( long long unsigned int, long long unsigned ), ?<=?( long long unsigned int, long long unsigned ),
     1689        ?>?( long long unsigned int, long long unsigned ), ?>=?( long long unsigned int, long long unsigned );
     1690int ?<?( float, float ), ?<=?( float, float ),
     1691        ?>?( float, float ), ?>=?( float, float );
     1692int ?<?( double, double ), ?<=?( double, double ),
     1693        ?>?( double, double ), ?>=?( double, double );
     1694int ?<?( long double, long double ), ?<=?( long double, long double ),
     1695        ?>?( long double, long double ), ?>=?( long double, long double );
     1696forall( dtype DT ) int ?<?( const restrict volatile DT *, const restrict volatile DT * ),
    21831697        ?<?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
    21841698        ?<=?( const restrict volatile DT *, const restrict volatile DT * ),
     
    21891703        ?>=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * );
    21901704\end{lstlisting}
    2191 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2192 rank of \lstinline$int$ there exist
     1705For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    21931706% Don't use predefined: keep this out of prelude.cf.
    21941707\begin{lstlisting}
     
    22001713
    22011714\semantics
    2202 The interpretations of a relational expression are the interpretations of the corresponding function
    2203 call.
     1715The interpretations of a relational expression are the interpretations of the corresponding function call.
    22041716
    22051717
     
    22091721\lhs{equality-expression}
    22101722\rhs \nonterm{relational-expression}
    2211 \rhs \nonterm{equality-expression} \lstinline$==$ \nonterm{relational-expression}
    2212 \rhs \nonterm{equality-expression} \lstinline$!=$ \nonterm{relational-expression}
     1723\rhs \nonterm{equality-expression} ©==© \nonterm{relational-expression}
     1724\rhs \nonterm{equality-expression} ©!=© \nonterm{relational-expression}
    22131725\end{syntax}
    22141726
    22151727\rewriterules
    22161728\begin{lstlisting}
    2217 a == b @\rewrite@ ?==?( a, b )@\use{?==?}@
    2218 a != b @\rewrite@ ?!=?( a, b )@\use{?"!=?}@
    2219 \end{lstlisting}
    2220 
    2221 \begin{lstlisting}
    2222 int ?==?( int, int ),
    2223         ?!=?( int, int ),
    2224         ?==?( unsigned int, unsigned int ),
    2225         ?!=?( unsigned int, unsigned int ),
    2226         ?==?( long int, long int ),
    2227         ?!=?( long int, long int ),
    2228         ?==?( long unsigned int, long unsigned int ),
    2229         ?!=?( long unsigned int, long unsigned int ),
    2230         ?==?( long long int, long long int ),
    2231         ?!=?( long long int, long long int ),
    2232         ?==?( long long unsigned int, long long unsigned int ),
    2233         ?!=?( long long unsigned int, long long unsigned int ),
    2234         ?==?( float, float ),
    2235         ?!=?( float, float ),
    2236         ?==?( _Complex float, float ),
    2237         ?!=?( _Complex float, float ),
    2238         ?==?( float, _Complex float ),
    2239         ?!=?( float, _Complex float ),
    2240         ?==?( _Complex float, _Complex float ),
    2241         ?!=?( _Complex float, _Complex float ),
    2242         ?==?( double, double ),
    2243         ?!=?( double, double ),
    2244         ?==?( _Complex double, double ),
    2245         ?!=?( _Complex double, double ),
    2246         ?==?( double, _Complex double ),
    2247         ?!=?( double, _Complex double ),
    2248         ?==?( _Complex double, _Complex double ),
    2249         ?!=?( _Complex double, _Complex double ),
    2250         ?==?( long double, long double ),
    2251         ?!=?( long double, long double ),
    2252         ?==?( _Complex long double, long double ),
    2253         ?!=?( _Complex long double, long double ),
    2254         ?==?( long double, _Complex long double ),
    2255         ?!=?( long double, _Complex long double ),
    2256         ?==?( _Complex long double, _Complex long double ),
    2257         ?!=?( _Complex long double, _Complex long double );
    2258 
     1729a == b => ?==?( a, b )§\use{?==?}§
     1730a != b => ?!=?( a, b )§\use{?"!=?}§
     1731\end{lstlisting}
     1732
     1733\predefined
     1734\begin{lstlisting}
     1735int ?==?( int, int ), ?!=?( int, int ),
     1736        ?==?( unsigned int, unsigned int ), ?!=?( unsigned int, unsigned int ),
     1737        ?==?( long int, long int ), ?!=?( long int, long int ),
     1738        ?==?( long unsigned int, long unsigned int ), ?!=?( long unsigned int, long unsigned int ),
     1739        ?==?( long long int, long long int ), ?!=?( long long int, long long int ),
     1740        ?==?( long long unsigned int, long long unsigned int ), ?!=?( long long unsigned int, long long unsigned int ),
     1741        ?==?( float, float ), ?!=?( float, float ),
     1742        ?==?( _Complex float, float ), ?!=?( _Complex float, float ),
     1743        ?==?( float, _Complex float ), ?!=?( float, _Complex float ),
     1744        ?==?( _Complex float, _Complex float ), ?!=?( _Complex float, _Complex float ),
     1745        ?==?( double, double ), ?!=?( double, double ),
     1746        ?==?( _Complex double, double ), ?!=?( _Complex double, double ),
     1747        ?==?( double, _Complex double ), ?!=?( double, _Complex double ),
     1748        ?==?( _Complex double, _Complex double ), ?!=?( _Complex double, _Complex double ),
     1749        ?==?( long double, long double ), ?!=?( long double, long double ),
     1750        ?==?( _Complex long double, long double ), ?!=?( _Complex long double, long double ),
     1751        ?==?( long double, _Complex long double ), ?!=?( long double, _Complex long double ),
     1752        ?==?( _Complex long double, _Complex long double ), ?!=?( _Complex long double, _Complex long double );
    22591753forall( dtype DT ) int
    22601754        ?==?( const restrict volatile DT *, const restrict volatile DT * ),
     
    22811775        ?==?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * ),
    22821776        ?!=?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * );
    2283 
    22841777forall( ftype FT ) int
    2285         ?==?( FT *, FT * ),
    2286         ?!=?( FT *, FT * ),
    2287         ?==?( FT *, forall( ftype FT2) FT2 * ),
    2288         ?!=?( FT *, forall( ftype FT2) FT2 * ),
    2289         ?==?( forall( ftype FT2) FT2*, FT * ),
    2290         ?!=?( forall( ftype FT2) FT2*, FT * ),
    2291         ?==?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ),
    2292         ?!=?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * );
    2293 \end{lstlisting}
    2294 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2295 rank of \lstinline$int$ there exist
     1778        ?==?( FT *, FT * ), ?!=?( FT *, FT * ),
     1779        ?==?( FT *, forall( ftype FT2) FT2 * ), ?!=?( FT *, forall( ftype FT2) FT2 * ),
     1780        ?==?( forall( ftype FT2) FT2*, FT * ), ?!=?( forall( ftype FT2) FT2*, FT * ),
     1781        ?==?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ), ?!=?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * );
     1782\end{lstlisting}
     1783For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    22961784% Don't use predefined: keep this out of prelude.cf.
    22971785\begin{lstlisting}
     
    23011789
    23021790\begin{rationale}
    2303 The polymorphic equality operations come in three styles: comparisons between pointers of compatible
    2304 types, between pointers to \lstinline$void$ and pointers to object types or incomplete types, and
    2305 between the \Index{null pointer} constant and pointers to any type. In the last case, a special
    2306 constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA
    2307 type system.
     1791The 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.
     1792In the last case, a special constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA type system.
    23081793\end{rationale}
    23091794
    23101795\semantics
    2311 The interpretations of an equality expression are the interpretations of the corresponding function
    2312 call.
     1796The interpretations of an equality expression are the interpretations of the corresponding function call.
    23131797
    23141798\begin{sloppypar}
    2315 The result of an equality comparison between two pointers to predefined functions or predefined
    2316 values is implementation-defined.
     1799The result of an equality comparison between two pointers to predefined functions or predefined values is implementation-defined.
    23171800\end{sloppypar}
    23181801\begin{rationale}
    2319 The implementation-defined status of equality comparisons allows implementations to use one library
    2320 routine to implement many predefined functions. These optimization are particularly important when
    2321 the predefined functions are polymorphic, as is the case for most pointer operations
     1802The implementation-defined status of equality comparisons allows implementations to use one library routine to implement many predefined functions.
     1803These optimization are particularly important when the predefined functions are polymorphic, as is the case for most pointer operations
    23221804\end{rationale}
    23231805
     
    23281810\lhs{AND-expression}
    23291811\rhs \nonterm{equality-expression}
    2330 \rhs \nonterm{AND-expression} \lstinline$&$ \nonterm{equality-expression}
     1812\rhs \nonterm{AND-expression} ©&© \nonterm{equality-expression}
    23311813\end{syntax}
    23321814
    23331815\rewriterules
    23341816\begin{lstlisting}
    2335 a & b @\rewrite@ ?&?( a, b )@\use{?&?}@
    2336 \end{lstlisting}
    2337 
     1817a & b => ?&?( a, b )§\use{?&?}§
     1818\end{lstlisting}
     1819
     1820\predefined
    23381821\begin{lstlisting}
    23391822int ?&?( int, int );
     
    23441827long long unsigned int ?&?( long long unsigned int, long long unsigned int );
    23451828\end{lstlisting}
    2346 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2347 rank of \lstinline$int$ there exist
     1829For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    23481830% Don't use predefined: keep this out of prelude.cf.
    23491831\begin{lstlisting}
     
    23521834
    23531835\semantics
    2354 The interpretations of a bitwise AND expression are the interpretations of the corresponding
    2355 function call.
     1836The interpretations of a bitwise AND expression are the interpretations of the corresponding function call.
    23561837
    23571838
     
    23611842\lhs{exclusive-OR-expression}
    23621843\rhs \nonterm{AND-expression}
    2363 \rhs \nonterm{exclusive-OR-expression} \lstinline$^$ \nonterm{AND-expression}
     1844\rhs \nonterm{exclusive-OR-expression} ©^© \nonterm{AND-expression}
    23641845\end{syntax}
    23651846
    23661847\rewriterules
    23671848\begin{lstlisting}
    2368 a ^ b @\rewrite@ ?^?( a, b )@\use{?^?}@
    2369 \end{lstlisting}
    2370 
     1849a ^ b => ?^?( a, b )§\use{?^?}§
     1850\end{lstlisting}
     1851
     1852\predefined
    23711853\begin{lstlisting}
    23721854int ?^?( int, int );
     
    23771859long long unsigned int ?^?( long long unsigned int, long long unsigned int );
    23781860\end{lstlisting}
    2379 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2380 rank of \lstinline$int$ there exist
     1861For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    23811862% Don't use predefined: keep this out of prelude.cf.
    23821863\begin{lstlisting}
     
    23851866
    23861867\semantics
    2387 The interpretations of a bitwise exclusive OR expression are the interpretations of the
    2388 corresponding function call.
     1868The interpretations of a bitwise exclusive OR expression are the interpretations of the corresponding function call.
    23891869
    23901870
     
    23941874\lhs{inclusive-OR-expression}
    23951875\rhs \nonterm{exclusive-OR-expression}
    2396 \rhs \nonterm{inclusive-OR-expression} \lstinline$|$ \nonterm{exclusive-OR-expression}
     1876\rhs \nonterm{inclusive-OR-expression} ©|© \nonterm{exclusive-OR-expression}
    23971877\end{syntax}
    23981878
    2399 \rewriterules\use{?"|?}
    2400 \begin{lstlisting}
    2401 a | b @\rewrite@ ?|?( a, b )
    2402 \end{lstlisting}
    2403 
     1879\rewriterules
     1880\begin{lstlisting}
     1881a | b => ?|?( a, b )§\use{?"|?}§
     1882\end{lstlisting}
     1883
     1884\predefined
    24041885\begin{lstlisting}
    24051886int ?|?( int, int );
     
    24101891long long unsigned int ?|?( long long unsigned int, long long unsigned int );
    24111892\end{lstlisting}
    2412 For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
    2413 rank of \lstinline$int$ there exist
     1893For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
    24141894% Don't use predefined: keep this out of prelude.cf.
    24151895\begin{lstlisting}
     
    24181898
    24191899\semantics
    2420 The interpretations of a bitwise inclusive OR expression are the interpretations of the
    2421 corresponding function call.
     1900The interpretations of a bitwise inclusive OR expression are the interpretations of the corresponding function call.
    24221901
    24231902
     
    24271906\lhs{logical-AND-expression}
    24281907\rhs \nonterm{inclusive-OR-expression}
    2429 \rhs \nonterm{logical-AND-expression} \lstinline$&&$ \nonterm{inclusive-OR-expression}
     1908\rhs \nonterm{logical-AND-expression} ©&&© \nonterm{inclusive-OR-expression}
    24301909\end{syntax}
    24311910
    2432 \semantics The operands of the expression ``\lstinline$a && b$'' are treated as
    2433 ``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b)!=0)$'', which shall both be
    2434 unambiguous. The expression has only one interpretation, which is of type \lstinline$int$.
    2435 \begin{rationale}
    2436 When the operands of a logical expression are values of built-in types, and ``\lstinline$!=$'' has
    2437 not been redefined for those types, the compiler can optimize away the function calls.
    2438 
    2439 A common C idiom omits comparisons to \lstinline$0$ in the controlling expressions of loops and
    2440 \lstinline$if$ statements. For instance, the loop below iterates as long as \lstinline$rp$ points
    2441 at a \lstinline$Rational$ value that is non-zero.
    2442 
    2443 \begin{lstlisting}
    2444 extern type Rational;@\use{Rational}@
    2445 extern const Rational 0;@\use{0}@
     1911\semantics The operands of the expression ``©a && b©'' are treated as ``©(int)((a)!=0)©'' and ``©(int)((b)!=0)©'', which shall both be unambiguous.
     1912The expression has only one interpretation, which is of type ©int©.
     1913\begin{rationale}
     1914When 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.
     1915
     1916A common C idiom omits comparisons to ©0© in the controlling expressions of loops and ©if© statements.
     1917For instance, the loop below iterates as long as ©rp© points at a ©Rational© value that is non-zero.
     1918
     1919\begin{lstlisting}
     1920extern otype Rational;§\use{Rational}§
     1921extern const Rational 0;§\use{0}§
    24461922extern int ?!=?( Rational, Rational );
    24471923Rational *rp;
    2448 
    24491924while ( rp && *rp ) { ... }
    24501925\end{lstlisting}
    2451 The logical expression calls the \lstinline$Rational$ inequality operator, passing
    2452 it \lstinline$*rp$ and the \lstinline$Rational 0$, and getting a 1 or 0 as a result. In
    2453 contrast, {\CC} would apply a programmer-defined \lstinline$Rational$-to-\lstinline$int$
    2454 conversion to \lstinline$*rp$ in the equivalent situation. The conversion to \lstinline$int$ would
    2455 produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was
    2456 not written with this situation in mind.
     1926The logical expression calls the ©Rational© inequality operator, passing it ©*rp© and the ©Rational 0©, and getting a 1 or 0 as a result.
     1927In contrast, {\CC} would apply a programmer-defined ©Rational©-to-©int© conversion to ©*rp© in the equivalent situation.
     1928The 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.
    24571929\end{rationale}
    24581930
     
    24631935\lhs{logical-OR-expression}
    24641936\rhs \nonterm{logical-AND-expression}
    2465 \rhs \nonterm{logical-OR-expression} \lstinline$||$ \nonterm{logical-AND-expression}
     1937\rhs \nonterm{logical-OR-expression} ©||© \nonterm{logical-AND-expression}
    24661938\end{syntax}
    24671939
    24681940\semantics
    24691941
    2470 The operands of the expression ``\lstinline$a || b$'' are treated as ``\lstinline$(int)((a)!=0)$''
    2471 and ``\lstinline$(int)((b))!=0)$'', which shall both be unambiguous. The expression has only one
    2472 interpretation, which is of type \lstinline$int$.
     1942The operands of the expression ``©a || b©'' are treated as ``©(int)((a)!=0)©'' and ``©(int)((b))!=0)©'', which shall both be unambiguous.
     1943The expression has only one interpretation, which is of type ©int©.
    24731944
    24741945
     
    24781949\lhs{conditional-expression}
    24791950\rhs \nonterm{logical-OR-expression}
    2480 \rhs \nonterm{logical-OR-expression} \lstinline$?$ \nonterm{expression}
    2481          \lstinline$:$ \nonterm{conditional-expression}
     1951\rhs \nonterm{logical-OR-expression} ©?© \nonterm{expression}
     1952         ©:© \nonterm{conditional-expression}
    24821953\end{syntax}
    24831954
    24841955\semantics
    2485 In the conditional expression\use{?:} ``\lstinline$a?b:c$'', if the second and
    2486 third operands both have an interpretation with \lstinline$void$ type, then the expression has an
    2487 interpretation with type \lstinline$void$, equivalent to
     1956In 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
    24881957\begin{lstlisting}
    24891958( int)(( a)!=0) ? ( void)( b) : ( void)( c)
    24901959\end{lstlisting}
    24911960
    2492 If the second and third operands both have interpretations with non-\lstinline$void$ types, the
    2493 expression is treated as if it were the call ``\lstinline$cond((a)!=0, b, c)$'',
    2494 with \lstinline$cond$ declared as
    2495 \begin{lstlisting}
    2496 forall( type T ) T cond( int, T, T );
    2497  
    2498 forall( dtype D ) void
    2499         * cond( int, D *, void * ),
    2500         * cond( int, void *, D * );
    2501        
    2502 forall( dtype D ) _atomic void
    2503         * cond( int, _Atomic D *, _Atomic void * ),
    2504         * cond( int, _Atomic void *, _Atomic D * );
    2505 
    2506 forall( dtype D ) const void
    2507         * cond( int, const D *, const void * ),
    2508         * cond( int, const void *, const D * );
    2509 
    2510 forall( dtype D ) restrict void
    2511         * cond( int, restrict D *, restrict void * ),
    2512         * cond( int, restrict void *, restrict D * );
    2513 
    2514 forall( dtype D ) volatile void
    2515         * cond( int, volatile D *, volatile void * ),
    2516         * cond( int, volatile void *, volatile D * );
    2517 
    2518 forall( dtype D ) _Atomic const void
    2519         * cond( int, _Atomic const D *, _Atomic const void * ),
    2520         * cond( int, _Atomic const void *, _Atomic const D * );
    2521 
    2522 forall( dtype D ) _Atomic restrict void
    2523         * cond( int, _Atomic restrict D *, _Atomic restrict void * ),
    2524         * cond( int, _Atomic restrict void *, _Atomic restrict D * );
    2525 
    2526 forall( dtype D ) _Atomic volatile void
    2527         * cond( int, _Atomic volatile D *, _Atomic volatile void * ),
    2528         * cond( int, _Atomic volatile void *, _Atomic volatile D * );
    2529 
    2530 forall( dtype D ) const restrict void
    2531         * cond( int, const restrict D *, const restrict void * ),
    2532         * cond( int, const restrict void *, const restrict D * );
    2533 
    2534 forall( dtype D ) const volatile void
    2535         * cond( int, const volatile D *, const volatile void * ),
    2536         * cond( int, const volatile void *, const volatile D * );
    2537 
    2538 forall( dtype D ) restrict volatile void
    2539         * cond( int, restrict volatile D *, restrict volatile void * ),
    2540         * cond( int, restrict volatile void *, restrict volatile D * );
    2541 
    2542 forall( dtype D ) _Atomic const restrict void
    2543         * cond( int, _Atomic const restrict D *, _Atomic const restrict void * ),
     1961If 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
     1962\begin{lstlisting}
     1963forall( otype T ) T cond( int, T, T );
     1964forall( dtype D ) void * cond( int, D *, void * ), * cond( int, void *, D * );
     1965forall( dtype D ) _atomic void * cond(
     1966        int, _Atomic D *, _Atomic void * ), * cond( int, _Atomic void *, _Atomic D * );
     1967forall( dtype D ) const void * cond(
     1968        int, const D *, const void * ), * cond( int, const void *, const D * );
     1969forall( dtype D ) restrict void * cond(
     1970        int, restrict D *, restrict void * ), * cond( int, restrict void *, restrict D * );
     1971forall( dtype D ) volatile void * cond(
     1972        int, volatile D *, volatile void * ), * cond( int, volatile void *, volatile D * );
     1973forall( dtype D ) _Atomic const void * cond(
     1974        int, _Atomic const D *, _Atomic const void * ), * cond( int, _Atomic const void *, _Atomic const D * );
     1975forall( dtype D ) _Atomic restrict void * cond(
     1976        int, _Atomic restrict D *, _Atomic restrict void * ), * cond( int, _Atomic restrict void *, _Atomic restrict D * );
     1977forall( dtype D ) _Atomic volatile void * cond(
     1978        int, _Atomic volatile D *, _Atomic volatile void * ), * cond( int, _Atomic volatile void *, _Atomic volatile D * );
     1979forall( dtype D ) const restrict void * cond(
     1980        int, const restrict D *, const restrict void * ), * cond( int, const restrict void *, const restrict D * );
     1981forall( dtype D ) const volatile void * cond(
     1982        int, const volatile D *, const volatile void * ), * cond( int, const volatile void *, const volatile D * );
     1983forall( dtype D ) restrict volatile void * cond(
     1984        int, restrict volatile D *, restrict volatile void * ), * cond( int, restrict volatile void *, restrict volatile D * );
     1985forall( dtype D ) _Atomic const restrict void * cond(
     1986        int, _Atomic const restrict D *, _Atomic const restrict void * ),
    25441987        * cond( int, _Atomic const restrict void *, _Atomic const restrict D * );
    2545 
    2546 forall( dtype D ) _Atomic const volatile void
    2547         * cond( int, _Atomic const volatile D *, _Atomic const volatile void * ),
     1988forall( dtype D ) _Atomic const volatile void * cond(
     1989        int, _Atomic const volatile D *, _Atomic const volatile void * ),
    25481990        * cond( int, _Atomic const volatile void *, _Atomic const volatile D * );
    2549 
    2550 forall( dtype D ) _Atomic restrict volatile void
    2551         * cond( int, _Atomic restrict volatile D *,
    2552          _Atomic restrict volatile void * ),
    2553         * cond( int, _Atomic restrict volatile void *,
    2554          _Atomic restrict volatile D * );
    2555 
    2556 forall( dtype D ) const restrict volatile void
    2557         * cond( int, const restrict volatile D *,
    2558          const restrict volatile void * ),
    2559         * cond( int, const restrict volatile void *,
    2560          const restrict volatile D * );
    2561 
    2562 forall( dtype D ) _Atomic const restrict volatile void
    2563         * cond( int, _Atomic const restrict volatile D *,
    2564          _Atomic const restrict volatile void * ),
    2565         * cond( int, _Atomic const restrict volatile void *,
    2566          _Atomic const restrict volatile D * );
    2567 \end{lstlisting}
    2568 
    2569 \begin{rationale}
    2570 The object of the above is to apply the \Index{usual arithmetic conversion}s when the second and
    2571 third operands have arithmetic type, and to combine the qualifiers of the second and third operands
    2572 if they are pointers.
     1991forall( dtype D ) _Atomic restrict volatile void * cond(
     1992        int, _Atomic restrict volatile D *, _Atomic restrict volatile void * ),
     1993        * cond( int, _Atomic restrict volatile void *, _Atomic restrict volatile D * );
     1994forall( dtype D ) const restrict volatile void * cond(
     1995        int, const restrict volatile D *, const restrict volatile void * ),
     1996        * cond( int, const restrict volatile void *, const restrict volatile D * );
     1997forall( dtype D ) _Atomic const restrict volatile void * cond(
     1998        int, _Atomic const restrict volatile D *, _Atomic const restrict volatile void * ),
     1999        * cond( int, _Atomic const restrict volatile void *, _Atomic const restrict volatile D * );
     2000\end{lstlisting}
     2001
     2002\begin{rationale}
     2003The object of the above is to apply the \Index{usual arithmetic conversion}s when the second and third operands have arithmetic type, and to combine the qualifiers of the second and third operands if they are pointers.
    25732004\end{rationale}
    25742005
     
    25802011rand() ? i : l;
    25812012\end{lstlisting}
    2582 The best interpretation infers the expression's type to be \lstinline$long$ and applies the safe
    2583 \lstinline$int$-to-\lstinline$long$ conversion to \lstinline$i$.
     2013The best interpretation infers the expression's type to be ©long© and applies the safe ©int©-to-©long© conversion to ©i©.
    25842014
    25852015\begin{lstlisting}
     
    25882018rand() ? cip : vip;
    25892019\end{lstlisting}
    2590 The expression has type \lstinline$const volatile int *$, with safe conversions applied to the second
    2591 and third operands to add \lstinline$volatile$ and \lstinline$const$ qualifiers, respectively.
     2020The expression has type ©const volatile int *©, with safe conversions applied to the second and third operands to add ©volatile© and ©const© qualifiers, respectively.
    25922021
    25932022\begin{lstlisting}
    25942023rand() ? cip : 0;
    25952024\end{lstlisting}
    2596 The expression has type \lstinline$const int *$, with a specialization conversion applied to
    2597 \lstinline$0$.
     2025The expression has type ©const int *©, with a specialization conversion applied to ©0©.
    25982026
    25992027
     
    26062034         \nonterm{assignment-expression}
    26072035\lhs{assignment-operator} one of
    2608 \rhs \lstinline$=$\ \ \lstinline$*=$\ \ \lstinline$/=$\ \ \lstinline$%=$\ \ \lstinline$+=$\ \ \lstinline$-=$\ \ 
    2609          \lstinline$<<=$\ \ \lstinline$>>=$\ \ \lstinline$&=$\ \ \lstinline$^=$\ \ \lstinline$|=$
     2036\rhs ©=©\ \ ©*=©\ \ ©/=©\ \ ©%=©\ \ ©+=©\ \ ©-=©\ \ ©<<=©\ \ ©>>=©\ \ ©&=©\ \ ©^=©\ \ ©|=©
    26102037\end{syntax}
    26112038
    26122039\rewriterules
    2613 Let ``\(\leftarrow\)'' be any of the assignment operators. Then
    2614 \use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?}
    2615 \use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?}
    2616 \begin{lstlisting}
    2617 a @$\leftarrow$@ b @\rewrite@ ?@$\leftarrow$@?( &( a ), b )
     2040Let ``©<-©'' be any of the assignment operators.
     2041Then
     2042\use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?}\use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?}
     2043\begin{lstlisting}
     2044a <- b => ?<-?( &( a ), b )
    26182045\end{lstlisting}
    26192046
    26202047\semantics
    2621 Each interpretation of the left operand of an assignment expression is considered separately. For
    2622 each interpretation that is a bit-field or is declared with the \lstinline$register$ storage class
    2623 specifier, the expression has one valid interpretation, with the type of the left operand. The
    2624 right operand is cast to that type, and the assignment expression is ambiguous if either operand is.
    2625 For the remaining interpretations, the expression is rewritten, and the interpretations of the
    2626 assignment expression are the interpretations of the corresponding function call. Finally, all
    2627 interpretations of the expression produced for the different interpretations of the left operand are
    2628 combined to produce the interpretations of the expression as a whole; where interpretations have
    2629 compatible result types, the best interpretations are selected in the manner described for function
    2630 call expressions.
     2048Each interpretation of the left operand of an assignment expression is considered separately.
     2049For 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.
     2050The right operand is cast to that type, and the assignment expression is ambiguous if either operand is.
     2051For the remaining interpretations, the expression is rewritten, and the interpretations of the assignment expression are the interpretations of the corresponding function call.
     2052Finally, all interpretations of the expression produced for the different interpretations of the left operand are combined to produce the interpretations of the expression as a whole;
     2053where interpretations have compatible result types, the best interpretations are selected in the manner described for function call expressions.
    26312054
    26322055
    26332056\subsubsection{Simple assignment}
    26342057
     2058\predefined
    26352059\begin{lstlisting}
    26362060_Bool
     
    26922116        ?=?( volatile _Complex long double *, _Complex long double ),
    26932117        ?=?( _Atomic volatile _Complex long double *, _Atomic _Complex long double );
    2694 
    26952118forall( ftype FT ) FT
    26962119        * ?=?( FT * volatile *, FT * ),
    26972120        * ?=?( FT * volatile *, forall( ftype F ) F * );
    2698 
    26992121forall( ftype FT ) FT const
    27002122        * ?=?( FT const * volatile *, FT const * ),
    27012123        * ?=?( FT const * volatile *, forall( ftype F ) F * );
    2702 
    27032124forall( ftype FT ) FT volatile
    27042125        * ?=?( FT volatile * volatile *, FT * ),
    27052126        * ?=?( FT volatile * volatile *, forall( ftype F ) F * );
    2706 
    27072127forall( ftype FT ) FT const
    27082128        * ?=?( FT const volatile * volatile *, FT const * ),
    27092129        * ?=?( FT const volatile * volatile *, forall( ftype F ) F * );
    2710 
    27112130forall( dtype DT ) DT
    27122131        * ?=?( DT * restrict volatile *, DT * ),
     
    27162135        * ?=?( DT * _Atomic restrict volatile *, void * ),
    27172136        * ?=?( DT * _Atomic restrict volatile *, forall( dtype D ) D * );
    2718 
    27192137forall( dtype DT ) DT _Atomic
    27202138        * ?=?( _Atomic DT * restrict volatile *, DT _Atomic * ),
     
    27242142        * ?=?( _Atomic DT * _Atomic restrict volatile *, void * ),
    27252143        * ?=?( _Atomic DT * _Atomic restrict volatile *, forall( dtype D ) D * );
    2726 
    27272144forall( dtype DT ) DT const
    27282145        * ?=?( DT const * restrict volatile *, DT const * ),
     
    27322149        * ?=?( DT const * _Atomic restrict volatile *, void const * ),
    27332150        * ?=?( DT const * _Atomic restrict volatile *, forall( dtype D ) D * );
    2734 
    27352151forall( dtype DT ) DT restrict
    27362152        * ?=?( restrict DT * restrict volatile *, DT restrict * ),
     
    27402156        * ?=?( restrict DT * _Atomic restrict volatile *, void * ),
    27412157        * ?=?( restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * );
    2742 
    27432158forall( dtype DT ) DT volatile
    27442159        * ?=?( DT volatile * restrict volatile *, DT volatile * ),
     
    27482163        * ?=?( DT volatile * _Atomic restrict volatile *, void volatile * ),
    27492164        * ?=?( DT volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
    2750 
    27512165forall( dtype DT ) DT _Atomic const
    27522166        * ?=?( DT _Atomic const * restrict volatile *, DT _Atomic const * ),
     
    27562170        * ?=?( DT _Atomic const * _Atomic restrict volatile *, void const * ),
    27572171        * ?=?( DT _Atomic const * _Atomic restrict volatile *, forall( dtype D ) D * );
    2758 
    27592172forall( dtype DT ) DT _Atomic restrict
    27602173        * ?=?( _Atomic restrict DT * restrict volatile *, DT _Atomic restrict * ),
     
    27642177        * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, void * ),
    27652178        * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * );
    2766 
    27672179forall( dtype DT ) DT _Atomic volatile
    27682180        * ?=?( DT _Atomic volatile * restrict volatile *, DT _Atomic volatile * ),
     
    27722184        * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, void volatile * ),
    27732185        * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
    2774 
    27752186forall( dtype DT ) DT const restrict
    27762187        * ?=?( DT const restrict * restrict volatile *, DT const restrict * ),
     
    27802191        * ?=?( DT const restrict * _Atomic restrict volatile *, void const * ),
    27812192        * ?=?( DT const restrict * _Atomic restrict volatile *, forall( dtype D ) D * );
    2782 
    27832193forall( dtype DT ) DT const volatile
    27842194        * ?=?( DT const volatile * restrict volatile *, DT const volatile * ),
     
    27882198        * ?=?( DT const volatile * _Atomic restrict volatile *, void const volatile * ),
    27892199        * ?=?( DT const volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
    2790 
    27912200forall( dtype DT ) DT restrict volatile
    27922201        * ?=?( DT restrict volatile * restrict volatile *, DT restrict volatile * ),
     
    27962205        * ?=?( DT restrict volatile * _Atomic restrict volatile *, void volatile * ),
    27972206        * ?=?( DT restrict volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
    2798 
    27992207forall( dtype DT ) DT _Atomic const restrict
    28002208        * ?=?( DT _Atomic const restrict * restrict volatile *,
     
    28102218        * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *,
    28112219         forall( dtype D ) D * );
    2812 
    28132220forall( dtype DT ) DT _Atomic const volatile
    28142221        * ?=?( DT _Atomic const volatile * restrict volatile *,
     
    28242231        * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *,
    28252232         forall( dtype D ) D * );
    2826 
    28272233forall( dtype DT ) DT _Atomic restrict volatile
    28282234        * ?=?( DT _Atomic restrict volatile * restrict volatile *,
     
    28382244        * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *,
    28392245         forall( dtype D ) D * );
    2840 
    28412246forall( dtype DT ) DT const restrict volatile
    28422247        * ?=?( DT const restrict volatile * restrict volatile *,
     
    28522257        * ?=?( DT const restrict volatile * _Atomic restrict volatile *,
    28532258         forall( dtype D ) D * );
    2854 
    28552259forall( dtype DT ) DT _Atomic const restrict volatile
    28562260        * ?=?( DT _Atomic const restrict volatile * restrict volatile *,
     
    28662270        * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *,
    28672271         forall( dtype D ) D * );
    2868 
    28692272forall( dtype DT ) void
    28702273        * ?=?( void * restrict volatile *, DT * );
    2871 
    28722274forall( dtype DT ) void const
    28732275        * ?=?( void const * restrict volatile *, DT const * );
    2874 
    28752276forall( dtype DT ) void volatile
    28762277        * ?=?( void volatile * restrict volatile *, DT volatile * );
    2877 
    28782278forall( dtype DT ) void const volatile
    28792279        * ?=?( void const volatile * restrict volatile *, DT const volatile * );
    28802280\end{lstlisting}
    28812281\begin{rationale}
    2882 The pattern of overloadings for simple assignment resembles that of pointer increment and decrement,
    2883 except that the polymorphic pointer assignment functions declare a \lstinline$dtype$ parameter,
    2884 instead of a \lstinline$type$ parameter, because the left operand may be a pointer to an incomplete
    2885 type.
    2886 \end{rationale}
    2887 
    2888 For every complete structure or union type \lstinline$S$ there exist
     2282The 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.
     2283\end{rationale}
     2284
     2285For every complete structure or union type ©S© there exist
    28892286% Don't use predefined: keep this out of prelude.cf.
    28902287\begin{lstlisting}
     
    28922289\end{lstlisting}
    28932290
    2894 For every extended integer type \lstinline$X$ there exist
     2291For every extended integer type ©X© there exist
    28952292% Don't use predefined: keep this out of prelude.cf.
    28962293\begin{lstlisting}
     
    28982295\end{lstlisting}
    28992296
    2900 For every complete enumerated type \lstinline$E$ there exist
     2297For every complete enumerated type ©E© there exist
    29012298% Don't use predefined: keep this out of prelude.cf.
    29022299\begin{lstlisting}
     
    29042301\end{lstlisting}
    29052302\begin{rationale}
    2906 The right-hand argument is \lstinline$int$ because enumeration constants have type \lstinline$int$.
     2303The right-hand argument is ©int© because enumeration constants have type ©int©.
    29072304\end{rationale}
    29082305
    29092306\semantics
    2910 The structure assignment functions provide member-wise assignment; each non-array member and each
    2911 element of each array member of the right argument is assigned to the corresponding member or
    2912 element of the left argument using the assignment function defined for its type. All other
    2913 assignment functions have the same effect as the corresponding C assignment expression.
    2914 \begin{rationale}
    2915 Note that, by default, union assignment\index{deficiencies!union assignment} uses C semantics---that
    2916 is, bitwise copy---even if some of the union members have programmer-defined assignment functions.
     2307The structure assignment functions provide member-wise assignment;
     2308each non-array member and each element of each array member of the right argument is assigned to the corresponding member or element of the left argument using the assignment function defined for its type.
     2309All other assignment functions have the same effect as the corresponding C assignment expression.
     2310\begin{rationale}
     2311Note that, by default, union assignment\index{deficiencies!union assignment} uses C semantics---that is, bitwise copy---even if some of the union members have programmer-defined assignment functions.
    29172312\end{rationale}
    29182313
     
    29202315\subsubsection{Compound assignment}
    29212316
    2922 \begin{lstlisting}
    2923 forall( type T ) T
     2317\predefined
     2318\begin{lstlisting}
     2319forall( otype T ) T
    29242320        * ?+=?( T * restrict volatile *, ptrdiff_t ),
    29252321        * ?-=?( T * restrict volatile *, ptrdiff_t ),
    29262322        * ?+=?( T * _Atomic restrict volatile *, ptrdiff_t ),
    29272323        * ?-=?( T * _Atomic restrict volatile *, ptrdiff_t );
    2928 
    2929 forall( type T ) T _Atomic
     2324forall( otype T ) T _Atomic
    29302325        * ?+=?( T _Atomic * restrict volatile *, ptrdiff_t ),
    29312326        * ?-=?( T _Atomic * restrict volatile *, ptrdiff_t ),
    29322327        * ?+=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ),
    29332328        * ?-=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t );
    2934 
    2935 forall( type T ) T const
     2329forall( otype T ) T const
    29362330        * ?+=?( T const * restrict volatile *, ptrdiff_t ),
    29372331        * ?-=?( T const * restrict volatile *, ptrdiff_t ),
    29382332        * ?+=?( T const * _Atomic restrict volatile *, ptrdiff_t ),
    29392333        * ?-=?( T const * _Atomic restrict volatile *, ptrdiff_t );
    2940 
    2941 forall( type T ) T restrict
     2334forall( otype T ) T restrict
    29422335        * ?+=?( T restrict * restrict volatile *, ptrdiff_t ),
    29432336        * ?-=?( T restrict * restrict volatile *, ptrdiff_t ),
    29442337        * ?+=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ),
    29452338        * ?-=?( T restrict * _Atomic restrict volatile *, ptrdiff_t );
    2946 
    2947 forall( type T ) T volatile
     2339forall( otype T ) T volatile
    29482340        * ?+=?( T volatile * restrict volatile *, ptrdiff_t ),
    29492341        * ?-=?( T volatile * restrict volatile *, ptrdiff_t ),
    29502342        * ?+=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ),
    29512343        * ?-=?( T volatile * _Atomic restrict volatile *, ptrdiff_t );
    2952 
    2953 forall( type T ) T _Atomic const
     2344forall( otype T ) T _Atomic const
    29542345        * ?+=?( T _Atomic const restrict volatile *, ptrdiff_t ),
    29552346        * ?-=?( T _Atomic const restrict volatile *, ptrdiff_t ),
    29562347        * ?+=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ),
    29572348        * ?-=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t );
    2958 
    2959 forall( type T ) T _Atomic restrict
     2349forall( otype T ) T _Atomic restrict
    29602350        * ?+=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ),
    29612351        * ?-=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ),
    29622352        * ?+=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ),
    29632353        * ?-=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t );
    2964 
    2965 forall( type T ) T _Atomic volatile
     2354forall( otype T ) T _Atomic volatile
    29662355        * ?+=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ),
    29672356        * ?-=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ),
    29682357        * ?+=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ),
    29692358        * ?-=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t );
    2970 
    2971 forall( type T ) T const restrict
     2359forall( otype T ) T const restrict
    29722360        * ?+=?( T const restrict * restrict volatile *, ptrdiff_t ),
    29732361        * ?-=?( T const restrict * restrict volatile *, ptrdiff_t ),
    29742362        * ?+=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ),
    29752363        * ?-=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t );
    2976 
    2977 forall( type T ) T const volatile
     2364forall( otype T ) T const volatile
    29782365        * ?+=?( T const volatile * restrict volatile *, ptrdiff_t ),
    29792366        * ?-=?( T const volatile * restrict volatile *, ptrdiff_t ),
    29802367        * ?+=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ),
    29812368        * ?-=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t );
    2982 
    2983 forall( type T ) T restrict volatile
     2369forall( otype T ) T restrict volatile
    29842370        * ?+=?( T restrict volatile * restrict volatile *, ptrdiff_t ),
    29852371        * ?-=?( T restrict volatile * restrict volatile *, ptrdiff_t ),
    29862372        * ?+=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
    29872373        * ?-=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
    2988 
    2989 forall( type T ) T _Atomic const restrict
     2374forall( otype T ) T _Atomic const restrict
    29902375        * ?+=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ),
    29912376        * ?-=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ),
    29922377        * ?+=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ),
    29932378        * ?-=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t );
    2994 
    2995 forall( type T ) T _Atomic const volatile
     2379forall( otype T ) T _Atomic const volatile
    29962380        * ?+=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ),
    29972381        * ?-=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ),
    29982382        * ?+=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ),
    29992383        * ?-=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t );
    3000 
    3001 forall( type T ) T _Atomic restrict volatile
     2384forall( otype T ) T _Atomic restrict volatile
    30022385        * ?+=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ),
    30032386        * ?-=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ),
    30042387        * ?+=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
    30052388        * ?-=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
    3006 
    3007 forall( type T ) T const restrict volatile
     2389forall( otype T ) T const restrict volatile
    30082390        * ?+=?( T const restrict volatile * restrict volatile *, ptrdiff_t ),
    30092391        * ?-=?( T const restrict volatile * restrict volatile *, ptrdiff_t ),
    30102392        * ?+=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
    30112393        * ?-=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
    3012 
    3013 forall( type T ) T _Atomic const restrict volatile
     2394forall( otype T ) T _Atomic const restrict volatile
    30142395        * ?+=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ),
    30152396        * ?-=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ),
     
    31812562\end{lstlisting}
    31822563
    3183 For every extended integer type \lstinline$X$ there exist
     2564For every extended integer type ©X© there exist
    31842565% Don't use predefined: keep this out of prelude.cf.
    31852566\begin{lstlisting}
     
    31962577\end{lstlisting}
    31972578
    3198 For every complete enumerated type \lstinline$E$ there exist
     2579For every complete enumerated type ©E© there exist
    31992580% Don't use predefined: keep this out of prelude.cf.
    32002581\begin{lstlisting}
     
    32172598\lhs{expression}
    32182599\rhs \nonterm{assignment-expression}
    3219 \rhs \nonterm{expression} \lstinline$,$ \nonterm{assignment-expression}
     2600\rhs \nonterm{expression} ©,© \nonterm{assignment-expression}
    32202601\end{syntax}
    32212602
    32222603\semantics
    3223 In the comma expression ``\lstinline$a, b$'', the first operand is interpreted as
    3224 ``\lstinline$( void )(a)$'', which shall be unambiguous\index{ambiguous interpretation}. The
    3225 interpretations of the expression are the interpretations of the second operand.
     2604In the comma expression ``©a, b©'', the first operand is interpreted as ``©( void )(a)©'', which shall be unambiguous\index{ambiguous interpretation}.
     2605The interpretations of the expression are the interpretations of the second operand.
    32262606
    32272607
     
    32382618
    32392619\constraints
    3240 If an identifier has \Index{no linkage}, there shall be no more than one declaration of the
    3241 identifier ( in a declarator or type specifier ) with compatible types in the same scope and in the
    3242 same name space, except that:
     2620If an identifier has \Index{no linkage}, there shall be no more than one declaration of the identifier ( in a declarator or type specifier ) with compatible types in the same scope and in the same name space, except that:
    32432621\begin{itemize}
    3244 \item
    3245 a typedef name may be redefined to denote the same type as it currently does, provided that type is
    3246 not a variably modified type;
    3247 \item
    3248 tags may be redeclared as specified in section 6.7.2.3 of the {\c11} standard.
     2622\item a typedef name may be redefined to denote the same type as it currently does, provided that type is not a variably modified type;
     2623\item tags may be redeclared as specified in section 6.7.2.3 of the {\c11} standard.
    32492624\end{itemize}
    32502625\begin{rationale}
    3251 This constraint adds the phrase ``with compatible types'' to the {\c11} constraint, to allow
    3252 overloading.
    3253 \end{rationale}
    3254 
    3255 An identifier declared by a type declaration shall not be redeclared as a parameter in a function
    3256 definition whose declarator includes an identifier list.
    3257 \begin{rationale}
    3258 This restriction echos {\c11}'s ban on the redeclaration of typedef names as parameters. This
    3259 avoids an ambiguity between old-style function declarations and new-style function prototypes:
     2626This constraint adds the phrase ``with compatible types'' to the {\c11} constraint, to allow overloading.
     2627\end{rationale}
     2628
     2629An identifier declared by a type declaration shall not be redeclared as a parameter in a function definition whose declarator includes an identifier list.
     2630\begin{rationale}
     2631This restriction echos {\c11}'s ban on the redeclaration of typedef names as parameters.
     2632This avoids an ambiguity between old-style function declarations and new-style function prototypes:
    32602633\begin{lstlisting}
    32612634void f( Complex,        // ... 3000 characters ...
    32622635void g( Complex,        // ... 3000 characters ...
    3263 int Complex; { ... }
    3264 \end{lstlisting}
    3265 Without the rule, \lstinline$Complex$ would be a type in the first case, and a parameter name in the
    3266 second.
     2636int Complex;
     2637{ ... }
     2638\end{lstlisting}
     2639Without the rule, ©Complex© would be a type in the first case, and a parameter name in the second.
    32672640\end{rationale}
    32682641
     
    32832656
    32842657\semantics
    3285 \CFA extends the {\c11} definition of \define{anonymous structure} to include structure
    3286 specifiers with tags, and extends the {\c11} definition of \define{anonymous union} to include union
    3287 specifiers with tags.
     2658\CFA extends the {\c11} definition of \define{anonymous structure} to include structure specifiers with tags, and extends the {\c11} definition of \define{anonymous union} to include union specifiers with tags.
    32882659\begin{rationale}
    32892660This extension imitates an extension in the Plan 9 C compiler \cite{Thompson90new}.
     
    32922663\examples
    32932664\begin{lstlisting}
    3294 struct point {@\impl{point}@
     2665struct point {§\impl{point}§
    32952666        int x, y;
    32962667};
    3297 struct color_point {@\impl{color_point}@
     2668struct color_point {§\impl{color_point}§
    32982669        enum { RED, BLUE, GREEN } color;
    32992670        struct point;
     
    33022673cp.x = 0;
    33032674cp.color = RED;
    3304 
    3305 struct literal {@\impl{literal}@
     2675struct literal {§\impl{literal}§
    33062676        enum { NUMBER, STRING } tag;
    33072677        union {
    3308          double n;
    3309          char *s;
     2678                double n;
     2679                char *s;
    33102680        };
    33112681};
     
    33192689
    33202690\setcounter{subsubsection}{4}
    3321 \subsubsection{Forall specifiers}\label{forall}
     2691\subsubsection{Forall specifiers}
     2692\label{forall}
    33222693
    33232694\begin{syntax}
    33242695\lhs{forall-specifier}
    3325 \rhs \lstinline$forall$ \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
     2696\rhs ©forall© ©(© \nonterm{type-parameter-list} ©)©
    33262697\end{syntax}
    33272698
     2699\begin{comment}
    33282700\constraints
    3329 If the \nonterm{declaration-specifiers} of a declaration that contains a \nonterm{forall-specifier}
    3330 declares a structure or union tag, the types of the members of the structure or union shall not use
    3331 any of the type identifiers declared by the \nonterm{type-parameter-list}.
    3332 \begin{rationale}
    3333 This sort of declaration is illegal because the scope of the type identifiers ends at the end of the
    3334 declaration, but the scope of the structure tag does not.
    3335 \begin{lstlisting}
    3336 forall( type T ) struct Pair { T a, b; } mkPair( T, T ); // illegal
    3337 \end{lstlisting}
    3338 If an instance of \lstinline$struct Pair$ was declared later in the current scope, what would the
    3339 members' type be?
    3340 \end{rationale}
     2701If the \nonterm{declaration-specifiers} of a declaration that contains a \nonterm{forall-specifier} declares a structure or union tag, the types of the members of the structure or union shall not use any of the type identifiers declared by the \nonterm{type-parameter-list}.
     2702\begin{rationale}
     2703This sort of declaration is illegal because the scope of the type identifiers ends at the end of the declaration, but the scope of the structure tag does not.
     2704\begin{lstlisting}
     2705forall( otype T ) struct Pair { T a, b;
     2706} mkPair( T, T ); // illegal
     2707\end{lstlisting}
     2708If an instance of ©struct Pair© was declared later in the current scope, what would the members' type be?
     2709\end{rationale}
     2710\end{comment}
    33412711
    33422712\semantics
    3343 The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type
    3344 identifiers, function and object identifiers with \Index{no linkage}.
    3345 
    3346 If, in the declaration ``\lstinline$T D1$'', \lstinline$T$ contains \nonterm{forall-specifier}s and
    3347 \lstinline$D1$ has the form
    3348 \begin{lstlisting}
    3349 D( @\normalsize\nonterm{parameter-type-list}@ )
    3350 \end{lstlisting}
    3351 then a type identifier declared by one of the \nonterm{forall-specifier}s is an \define{inferred
    3352 parameter} of the function declarator if and only if it is not an inferred parameter of a function
    3353 declarator in \lstinline$D$, and it is used in the type of a parameter in the following
    3354 \nonterm{type-parameter-list} or it and an inferred parameter are used as arguments of a
    3355 \Index{specification} in one of the \nonterm{forall-specifier}s. The identifiers declared by
    3356 assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s
    3357 of that function declarator.
    3358 \begin{rationale}
    3359 Since every inferred parameter is used by some parameter, inference can be understood as a single
    3360 bottom-up pass over the expression tree, that only needs to apply local reasoning at each node.
     2713The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type identifiers, function and object identifiers with \Index{no linkage}.
     2714
     2715If, in the declaration ``©T D©'', ©T© contains \nonterm{forall-specifier}s and ©D© has the form
     2716\begin{lstlisting}
     2717D( §\normalsize\nonterm{parameter-type-list}§ )
     2718\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
     2719\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.
     2720The identifiers declared by assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s of that function declarator.
     2721
     2722\begin{comment}
     2723\begin{rationale}
     2724Since every inferred parameter is used by some parameter, inference can be understood as a single bottom-up pass over the expression tree, that only needs to apply local reasoning at each node.
    33612725
    33622726If this restriction were lifted, it would be possible to write
    33632727\begin{lstlisting}
    3364 forall( type T ) T * alloc( void );@\use{alloc}@
    3365 int *p = alloc();
    3366 \end{lstlisting}
    3367 Here \lstinline$alloc()$ would receive \lstinline$int$ as an inferred argument, and return an
    3368 \lstinline$int *$. In general, if a call to \lstinline$alloc()$ is a subexpression of an expression
    3369 involving polymorphic functions and overloaded identifiers, there could be considerable distance
    3370 between the call and the subexpression that causes \lstinline$T$ to be bound.
    3371 
    3372 With the current restriction, \lstinline$alloc()$ must be given an argument that determines
    3373 \lstinline$T$:
    3374 \begin{lstlisting}
    3375 forall( type T ) T * alloc( T initial_value );@\use{alloc}@
    3376 \end{lstlisting}
    3377 \end{rationale}
    3378 
    3379 If a function declarator is part of a function definition, its inferred parameters and assertion
    3380 parameters have \Index{block scope}; otherwise, identifiers declared by assertions have a
    3381 \define{declaration scope}, which terminates at the end of the \nonterm{declaration}.
     2728forall( otype T ) T * alloc( void );§\use{alloc}§ int *p = alloc();
     2729\end{lstlisting}
     2730Here ©alloc()© would receive ©int© as an inferred argument, and return an ©int *©.
     2731In 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.
     2732
     2733With the current restriction, ©alloc()© must be given an argument that determines ©T©:
     2734\begin{lstlisting}
     2735forall( otype T ) T * alloc( T initial_value );§\use{alloc}§
     2736\end{lstlisting}
     2737\end{rationale}
     2738\end{comment}
     2739
     2740If a function declarator is part of a function definition, its inferred parameters and assertion parameters have \Index{block scope};
     2741otherwise, identifiers declared by assertions have a \define{declaration scope}, which terminates at the end of the \nonterm{declaration}.
    33822742
    33832743A function type that has at least one inferred parameter is a \define{polymorphic function} type.
    3384 Function types with no inferred parameters are \define{monomorphic function} types. One function
    3385 type is \define{less polymorphic} than another if it has fewer inferred parameters, or if it has the
    3386 same number of inferred parameters and fewer of its explicit parameters have types that depend on an
    3387 inferred parameter.
    3388 
    3389 The names of inferred parameters and the order of identifiers in forall specifiers are not relevant
    3390 to polymorphic function type compatibility. Let $f$ and $g$ be two polymorphic function types with
    3391 the same number of inferred parameters, and let $f_i$ and $g_i$ be the inferred parameters of $f$
    3392 and $g$ in their order of occurance in the function types' \nonterm{parameter-type-list}s. Let $f'$
    3393 be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$. Then $f$ and $g$ are
    3394 \Index{compatible type}s if $f'$'s and $g$'s return types and parameter lists are compatible, and if
    3395 for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same
    3396 identifier and compatible type, and vice versa.
     2744Function types with no inferred parameters are \define{monomorphic function} types.
     2745One function type is \define{less polymorphic} than another if it has fewer inferred parameters, or if it has the same number of inferred parameters and fewer of its explicit parameters have types that depend on an inferred parameter.
     2746
     2747The names of inferred parameters and the order of identifiers in forall specifiers are not relevant to polymorphic function type compatibility.
     2748Let $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.
     2749Let $f'$ be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$.
     2750Then $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.
    33972751
    33982752\examples
     
    34002754\begin{lstlisting}
    34012755int fi( int );
    3402 forall( type T ) T fT( T );
    3403 \end{lstlisting}
    3404 \lstinline$fi()$ takes an \lstinline$int$ and returns an \lstinline$int$. \lstinline$fT()$ takes a
    3405 \lstinline$T$ and returns a \lstinline$T$, for any type \lstinline$T$.
     2756forall( otype T ) T fT( T );
     2757\end{lstlisting}
     2758©fi()© takes an ©int© and returns an ©int©. ©fT()© takes a ©T© and returns a ©T©, for any type ©T©.
    34062759\begin{lstlisting}
    34072760int (*pfi )( int ) = fi;
    3408 forall( type T ) T (*pfT )( T ) = fT;
    3409 \end{lstlisting}
    3410 \lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not
    3411 polymorphic, but the function it points at is.
     2761forall( otype T ) T (*pfT )( T ) = fT;
     2762\end{lstlisting}
     2763©pfi© and ©pfT© are pointers to functions. ©pfT© is not polymorphic, but the function it points at is.
    34122764\begin{lstlisting}
    34132765int (*fvpfi( void ))( int ) {
    34142766        return pfi;
    34152767}
    3416 forall( type T ) T (*fvpfT( void ))( T ) {
     2768forall( otype T ) T (*fvpfT( void ))( T ) {
    34172769        return pfT;
    34182770}
    34192771\end{lstlisting}
    3420 \lstinline$fvpfi()$ and \lstinline$fvpfT()$ are functions taking no arguments and returning pointers
    3421 to functions. \lstinline$fvpfT()$ is monomorphic, but the function that its return value points
    3422 at is polymorphic.
    3423 \begin{lstlisting}
    3424 forall( type T ) int ( *fTpfi( T ) )( int );
    3425 forall( type T ) T ( *fTpfT( T ) )( T );
    3426 forall( type T, type U ) U ( *fTpfU( T ) )( U );
    3427 \end{lstlisting}
    3428 \lstinline$fTpfi()$ is a polymorphic function that returns a pointer to a monomorphic function
    3429 taking an integer and returning an integer. It could return \lstinline$pfi$. \lstinline$fTpfT()$
    3430 is subtle: it is a polymorphic function returning a \emph{monomorphic} function taking and returning
    3431 \lstinline$T$, where \lstinline$T$ is an inferred parameter of \lstinline$fTpfT()$. For instance,
    3432 in the expression ``\lstinline$fTpfT(17)$'', \lstinline$T$ is inferred to be \lstinline$int$, and
    3433 the returned value would have type \lstinline$int ( * )( int )$. ``\lstinline$fTpfT(17)(13)$'' and
    3434 ``\lstinline$fTpfT("yes")("no")$'' are legal, but ``\lstinline$fTpfT(17)("no")$'' is illegal.
    3435 \lstinline$fTpfU()$ is polymorphic ( in type \lstinline$T$), and returns a pointer to a function that
    3436 is polymorphic ( in type \lstinline$U$). ``\lstinline$f5(17)("no")$'' is a legal expression of type
    3437 \lstinline$char *$.
    3438 \begin{lstlisting}
    3439 forall( type T, type U, type V ) U * f( T *, U, V * const );
    3440 forall( type U, type V, type W ) U * g( V *, U, W * const );
    3441 \end{lstlisting}
    3442 The functions \lstinline$f()$ and \lstinline$g()$ have compatible types. Let \(f\) and \(g\) be
    3443 their types; then \(f_1\) = \lstinline$T$, \(f_2\) = \lstinline$U$, \(f_3\) = \lstinline$V$, \(g_1\)
    3444 = \lstinline$V$, \(g_2\) = \lstinline$U$, and \(g_3\) = \lstinline$W$. Replacing every \(f_i\)
    3445 by \(g_i\) in \(f\) gives
    3446 \begin{lstlisting}
    3447 forall( type V, type U, type W ) U * f( V *, U, W * const );
    3448 \end{lstlisting}
    3449 which has a return type and parameter list that is compatible with \(g\).
    3450 \begin{rationale}
    3451 The word ``\lstinline$type$'' in a forall specifier is redundant at the moment, but I want to leave
    3452 room for inferred parameters of ordinary types in case parameterized types get added one day.
     2772©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.
     2773\begin{lstlisting}
     2774forall( otype T ) int ( *fTpfi( T ) )( int );
     2775forall( otype T ) T ( *fTpfT( T ) )( T );
     2776forall( otype T, otype U ) U ( *fTpfU( T ) )( U );
     2777\end{lstlisting}
     2778©fTpfi()© is a polymorphic function that returns a pointer to a monomorphic function taking an integer and returning an integer.
     2779It could return ©pfi©. ©fTpfT()© is subtle: it is a polymorphic function returning a \emph{monomorphic} function taking and returning
     2780©T©, where ©T© is an inferred parameter of ©fTpfT()©.
     2781For 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.
     2782©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 *©.
     2783\begin{lstlisting}
     2784forall( otype T, otype U, otype V ) U * f( T *, U, V * const );
     2785forall( otype U, otype V, otype W ) U * g( V *, U, W * const );
     2786\end{lstlisting}
     2787The functions ©f()© and ©g()© have compatible types.
     2788Let \(f\) and \(g\) be their types;
     2789then \(f_1\) = ©T©, \(f_2\) = ©U©, \(f_3\) = ©V©, \(g_1\)
     2790= ©V©, \(g_2\) = ©U©, and \(g_3\) = ©W©.
     2791Replacing every \(f_i\) by \(g_i\) in \(f\) gives
     2792\begin{lstlisting}
     2793forall( otype V, otype U, otype W ) U * f( V *, U, W * const );
     2794\end{lstlisting} which has a return type and parameter list that is compatible with \(g\).
     2795\begin{rationale}
     2796The 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.
    34532797
    34542798Even without parameterized types, I might try to allow
    34552799\begin{lstlisting}
    34562800forall( int n ) int sum( int vector[n] );
    3457 \end{lstlisting}
    3458 but C currently rewrites array parameters as pointer parameters, so the effects of such a change
    3459 require more thought.
    3460 \end{rationale}
    3461 
    3462 \begin{rationale}
    3463 A polymorphic declaration must do two things: it must introduce type parameters, and it must apply
    3464 assertions to those types. Adding this to existing C declaration syntax and semantics was delicate,
    3465 and not entirely successful.
    3466 
    3467 C depends on declaration-before-use, so a forall specifier must introduce type names before they can
    3468 be used in the declaration specifiers. This could be done by making the forall specifier part of
    3469 the declaration specifiers, or by making it a new introductory clause of declarations.
    3470 
    3471 Assertions are also part of polymorphic function types, because it must be clear which functions
    3472 have access to the assertion parameters declared by the assertions. All attempts to put assertions
    3473 inside an introductory clause produced complex semantics and confusing code. Building them into the
    3474 declaration specifiers could be done by placing them in the function's parameter list, or in a
    3475 forall specifier that is a declaration specifier. Assertions are also used with type parameters of
    3476 specifications, and by type declarations. For consistency's sake it seems best to attach assertions
    3477 to the type declarations in forall specifiers, which means that forall specifiers must be
    3478 declaration specifiers.
     2801\end{lstlisting} but C currently rewrites array parameters as pointer parameters, so the effects of such a change require more thought.
     2802\end{rationale}
     2803
     2804\begin{rationale}
     2805A polymorphic declaration must do two things: it must introduce type parameters, and it must apply assertions to those types.
     2806Adding this to existing C declaration syntax and semantics was delicate, and not entirely successful.
     2807
     2808C depends on declaration-before-use, so a forall specifier must introduce type names before they can be used in the declaration specifiers.
     2809This could be done by making the forall specifier part of the declaration specifiers, or by making it a new introductory clause of declarations.
     2810
     2811Assertions are also part of polymorphic function types, because it must be clear which functions have access to the assertion parameters declared by the assertions.
     2812All attempts to put assertions inside an introductory clause produced complex semantics and confusing code.
     2813Building them into the declaration specifiers could be done by placing them in the function's parameter list, or in a forall specifier that is a declaration specifier.
     2814Assertions are also used with type parameters of specifications, and by type declarations.
     2815For consistency's sake it seems best to attach assertions to the type declarations in forall specifiers, which means that forall specifiers must be declaration specifiers.
    34792816\end{rationale}
    34802817%HERE
     
    34832820\subsection{Type qualifiers}
    34842821
    3485 \CFA defines a new type qualifier \lstinline$lvalue$\impl{lvalue}\index{lvalue}.
     2822\CFA defines a new type qualifier ©lvalue©\impl{lvalue}\index{lvalue}.
    34862823\begin{syntax}
    34872824\oldlhs{type-qualifier}
    3488 \rhs \lstinline$lvalue$
     2825\rhs ©lvalue©
    34892826\end{syntax}
    34902827
    34912828\constraints
    3492 \lstinline$restrict$\index{register@{\lstinline$restrict$}} Types other than type parameters and
    3493 pointer types whose referenced type is an object type shall not be restrict-qualified.
     2829\Indexc{restrict} Types other than type parameters and pointer types whose referenced type is an object type shall not be restrict-qualified.
    34942830
    34952831\semantics
    3496 An object's type may be a restrict-qualified type parameter. \lstinline$restrict$ does not
    3497 establish any special semantics in that case.
    3498 
    3499 \begin{rationale}
    3500 \CFA loosens the constraint on the restrict qualifier so that restrict-qualified pointers may be
    3501 passed to polymorphic functions.
    3502 \end{rationale}
    3503 
    3504 \lstinline$lvalue$ may be used to qualify the return type of a function type. Let \lstinline$T$ be
    3505 an unqualified version of a type; then the result of calling a function with return type
    3506 \lstinline$lvalue T$ is a \Index{modifiable lvalue} of type \lstinline$T$.
    3507 \lstinline$const$\use{const} and \lstinline$volatile$\use{volatile} qualifiers may also be added to
    3508 indicate that the function result is a constant or volatile lvalue.
    3509 \begin{rationale}
    3510 The \lstinline$const$ and \lstinline$volatile$ qualifiers can only be sensibly used to qualify the
    3511 return type of a function if the \lstinline$lvalue$ qualifier is also used.
    3512 \end{rationale}
    3513 
    3514 An {lvalue}-qualified type may be used in a \Index{cast expression} if the operand is an lvalue; the
    3515 result of the expression is an lvalue.
    3516 
    3517 \begin{rationale}
    3518 \lstinline$lvalue$ provides some of the functionality of {\CC}'s ``\lstinline$T&$'' ( reference to
    3519 object of type \lstinline$T$) type. Reference types have four uses in {\CC}.
     2832An object's type may be a restrict-qualified type parameter.
     2833©restrict© does not establish any special semantics in that case.
     2834
     2835\begin{rationale}
     2836\CFA loosens the constraint on the restrict qualifier so that restrict-qualified pointers may be passed to polymorphic functions.
     2837\end{rationale}
     2838
     2839©lvalue© may be used to qualify the return type of a function type.
     2840Let ©T© be an unqualified version of a type;
     2841then the result of calling a function with return type ©lvalue T© is a \Index{modifiable lvalue} of type ©T©.
     2842©const©\use{const} and ©volatile©\use{volatile} qualifiers may also be added to indicate that the function result is a constant or volatile lvalue.
     2843\begin{rationale}
     2844The ©const© and ©volatile© qualifiers can only be sensibly used to qualify the return type of a function if the ©lvalue© qualifier is also used.
     2845\end{rationale}
     2846
     2847An {lvalue}-qualified type may be used in a \Index{cast expression} if the operand is an lvalue;
     2848the result of the expression is an lvalue.
     2849
     2850\begin{rationale}
     2851©lvalue© provides some of the functionality of {\CC}'s ``©T&©'' ( reference to object of type ©T©) type.
     2852Reference types have four uses in {\CC}.
    35202853\begin{itemize}
    35212854\item
    3522 They are necessary for user-defined operators that return lvalues, such as ``subscript'' and
    3523 ``dereference''.
    3524 
    3525 \item
    3526 A reference can be used to define an alias for a complicated lvalue expression, as a way of getting
    3527 some of the functionality of the Pascal \lstinline$with$ statement. The following {\CC} code gives
    3528 an example.
     2855They are necessary for user-defined operators that return lvalues, such as ``subscript'' and ``dereference''.
     2856
     2857\item
     2858A 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.
     2859The following {\CC} code gives an example.
    35292860\begin{lstlisting}
    35302861{
     
    35362867
    35372868\item
    3538 A reference parameter can be used to allow a function to modify an argument without forcing the
    3539 caller to pass the address of the argument. This is most useful for user-defined assignment
    3540 operators. In {\CC}, plain assignment is done by a function called ``\lstinline$operator=$'', and
    3541 the two expressions
     2869A reference parameter can be used to allow a function to modify an argument without forcing the caller to pass the address of the argument.
     2870This is most useful for user-defined assignment operators.
     2871In {\CC}, plain assignment is done by a function called ``©operator=©'', and the two expressions
    35422872\begin{lstlisting}
    35432873a = b;
    35442874operator=( a, b );
    3545 \end{lstlisting}
    3546 are equivalent. If \lstinline$a$ and \lstinline$b$ are of type \lstinline$T$, then the first
    3547 parameter of \lstinline$operator=$ must have type ``\lstinline$T&$''. It cannot have type
    3548 \lstinline$T$, because then assignment couldn't alter the variable, and it can't have type
    3549 ``\lstinline$T *$'', because the assignment would have to be written ``\lstinline$&a = b;$''.
    3550 
    3551 In the case of user-defined operators, this could just as well be handled by using pointer types and
    3552 by changing the rewrite rules so that ``\lstinline$a = b;$'' is equivalent to
    3553 ``\lstinline$operator=(&( a), b )$''. Reference parameters of ``normal'' functions are Bad Things,
    3554 because they remove a useful property of C function calls: an argument can only be modified by a
    3555 function if it is preceded by ``\lstinline$&$''.
     2875\end{lstlisting} are equivalent.
     2876If ©a© and ©b© are of type ©T©, then the first parameter of ©operator=© must have type ``©T&©''.
     2877It 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;©''.
     2878
     2879In 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 )©''.
     2880Reference 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 ``©&©''.
    35562881
    35572882\item
    35582883References to \Index{const-qualified} types can be used instead of value parameters.  Given the
    3559 {\CC} function call ``\lstinline$fiddle( a_thing )$'', where the type of \lstinline$a_thing$ is
    3560 \lstinline$Thing$, the type of \lstinline$fiddle$ could be either of
     2884{\CC} function call ``©fiddle( a_thing )©'', where the type of ©a_thing© is
     2885©Thing©, the type of ©fiddle© could be either of
    35612886\begin{lstlisting}
    35622887void fiddle( Thing );
    35632888void fiddle( const Thing & );
    35642889\end{lstlisting}
    3565 If the second form is used, then constructors and destructors are not invoked to create a temporary
    3566 variable at the call site ( and it is bad style for the caller to make any assumptions about such
    3567 things), and within \lstinline$fiddle$ the parameter is subject to the usual problems caused by
    3568 aliases. The reference form might be chosen for efficiency's sake if \lstinline$Thing$s are too
    3569 large or their constructors or destructors are too expensive. An implementation may switch between
    3570 them without causing trouble for well-behaved clients. This leaves the implementor to define ``too
    3571 large'' and ``too expensive''.
     2890If 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.
     2891The reference form might be chosen for efficiency's sake if ©Thing©s are too large or their constructors or destructors are too expensive.
     2892An implementation may switch between them without causing trouble for well-behaved clients.
     2893This leaves the implementor to define ``too large'' and ``too expensive''.
    35722894
    35732895I propose to push this job onto the compiler by allowing it to implement
    35742896\begin{lstlisting}
    35752897void fiddle( const volatile Thing );
    3576 \end{lstlisting}
    3577 with call-by-reference. Since it knows all about the size of \lstinline$Thing$s and the parameter
    3578 passing mechanism, it should be able to come up with a better definition of ``too large'', and may
    3579 be able to make a good guess at ``too expensive''.
     2898\end{lstlisting} with call-by-reference.
     2899Since 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''.
    35802900\end{itemize}
    35812901
    3582 In summary, since references are only really necessary for returning lvalues, I'll only provide
    3583 lvalue functions.
     2902In summary, since references are only really necessary for returning lvalues, I'll only provide lvalue functions.
    35842903\end{rationale}
    35852904
     
    35882907\subsection{Initialization}
    35892908
    3590 An expression that is used as an \nonterm{initializer} is treated as being cast to the type of the
    3591 object being initialized. An expression used in an \nonterm{initializer-list} is treated as being
    3592 cast to the type of the aggregate member that it initializes. In either case the cast must have a
    3593 single unambiguous \Index{interpretation}.
     2909An expression that is used as an \nonterm{initializer} is treated as being cast to the type of the object being initialized.
     2910An expression used in an \nonterm{initializer-list} is treated as being cast to the type of the aggregate member that it initializes.
     2911In either case the cast must have a single unambiguous \Index{interpretation}.
    35942912
    35952913
     
    35992917\begin{syntax}
    36002918\lhs{spec-definition}
    3601 \rhs \lstinline$spec$ \nonterm{identifier}
    3602         \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
    3603         \lstinline${$ \nonterm{spec-declaration-list}\opt \lstinline$}$
     2919\rhs ©spec© \nonterm{identifier}
     2920        ©(© \nonterm{type-parameter-list} ©)©
     2921        ©{© \nonterm{spec-declaration-list}\opt ©}©
    36042922\lhs{spec-declaration-list}
    3605 \rhs \nonterm{spec-declaration} \lstinline$;$
    3606 \rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} \lstinline$;$
     2923\rhs \nonterm{spec-declaration} ©;©
     2924\rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} ©;©
    36072925\lhs{spec-declaration}
    36082926\rhs \nonterm{specifier-qualifier-list} \nonterm{declarator-list}
    36092927\lhs{declarator-list}
    36102928\rhs \nonterm{declarator}
    3611 \rhs \nonterm{declarator-list} \lstinline$,$ \nonterm{declarator}
     2929\rhs \nonterm{declarator-list} ©,© \nonterm{declarator}
    36122930\end{syntax}
    36132931\begin{rationale}
    3614 The declarations allowed in a specification are much the same as those allowed in a structure,
    3615 except that bit fields are not allowed, and \Index{incomplete type}s and function types are allowed.
     2932The declarations allowed in a specification are much the same as those allowed in a structure, except that bit fields are not allowed, and \Index{incomplete type}s and function types are allowed.
    36162933\end{rationale}
    36172934
    36182935\semantics
    3619 A \define{specification definition} defines a name for a \define{specification}: a parameterized
    3620 collection of object and function declarations.
     2936A \define{specification definition} defines a name for a \define{specification}: a parameterized collection of object and function declarations.
    36212937
    36222938The declarations in a specification consist of the declarations in the
    36232939\nonterm{spec-declaration-list} and declarations produced by any assertions in the
    3624 \nonterm{spec-parameter-list}. If the collection contains two declarations that declare the same
    3625 identifier and have compatible types, they are combined into one declaration with the composite type
    3626 constructed from the two types.
     2940\nonterm{spec-parameter-list}.
     2941If the collection contains two declarations that declare the same identifier and have compatible types, they are combined into one declaration with the composite type constructed from the two types.
    36272942
    36282943
     
    36342949\rhs \nonterm{assertion-list} \nonterm{assertion}
    36352950\lhs{assertion}
    3636 \rhs \lstinline$|$ \nonterm{identifier} \lstinline$($ \nonterm{type-name-list} \lstinline$)$
    3637 \rhs \lstinline$|$ \nonterm{spec-declaration}
     2951\rhs ©|© \nonterm{identifier} ©(© \nonterm{type-name-list} ©)©
     2952\rhs ©|© \nonterm{spec-declaration}
    36382953\lhs{type-name-list}
    36392954\rhs \nonterm{type-name}
    3640 \rhs \nonterm{type-name-list} \lstinline$,$ \nonterm{type-name}
     2955\rhs \nonterm{type-name-list} ©,© \nonterm{type-name}
    36412956\end{syntax}
    36422957
    36432958\constraints
    3644 The \nonterm{identifier} in an assertion that is not a \nonterm{spec-declaration} shall be the name
    3645 of a specification. The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for
    3646 each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}. If the
    3647 \nonterm{type-parameter} uses type-class \lstinline$type$\use{type}, the argument shall be the type
    3648 name of an \Index{object type}; if it uses \lstinline$dtype$, the argument shall be the type name of
    3649 an object type or an \Index{incomplete type}; and if it uses \lstinline$ftype$, the argument shall
    3650 be the type name of a \Index{function type}.
     2959The \nonterm{identifier} in an assertion that is not a \nonterm{spec-declaration} shall be the name of a specification.
     2960The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}.
     2961If the
     2962\nonterm{type-parameter} uses type-class ©type©\use{type}, the argument shall be the type name of an \Index{object type};
     2963if it uses ©dtype©, the argument shall be the type name of an object type or an \Index{incomplete type};
     2964and if it uses ©ftype©, the argument shall be the type name of a \Index{function type}.
    36512965
    36522966\semantics
    3653 An \define{assertion} is a declaration of a collection of objects and functions, called
    3654 \define{assertion parameters}.
    3655 
    3656 The assertion parameters produced by an assertion that applies the name of a specification to type
    3657 arguments are found by taking the declarations specified in the specification and treating each of
    3658 the specification's parameters as a synonym for the corresponding \nonterm{type-name} argument.
    3659 
    3660 The collection of assertion parameters produced by the \nonterm{assertion-list} are found by
    3661 combining the declarations produced by each assertion. If the collection contains two declarations
    3662 that declare the same identifier and have compatible types, they are combined into one declaration
    3663 with the \Index{composite type} constructed from the two types.
     2967An \define{assertion} is a declaration of a collection of objects and functions, called \define{assertion parameters}.
     2968
     2969The 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.
     2970
     2971The collection of assertion parameters produced by the \nonterm{assertion-list} are found by combining the declarations produced by each assertion.
     2972If the collection contains two declarations that declare the same identifier and have compatible types, they are combined into one declaration with the \Index{composite type} constructed from the two types.
    36642973
    36652974\examples
    36662975\begin{lstlisting}
    3667 forall( type T | T ?*?( T, T ))@\use{?*?}@
    3668 T square( T val ) {@\impl{square}@
     2976forall( otype T | T ?*?( T, T ))§\use{?*?}§
     2977T square( T val ) {§\impl{square}§
    36692978        return val + val;
    36702979}
    3671 
    3672 context summable( type T ) {@\impl{summable}@
    3673         T ?+=?( T *, T );@\use{?+=?}@
    3674         const T 0;@\use{0}@
     2980trait summable( otype T ) {§\impl{summable}§
     2981        T ?+=?( T *, T );§\use{?+=?}§
     2982        const T 0;§\use{0}§
    36752983};
    3676 context list_of( type List, type Element ) {@\impl{list_of}@
     2984trait list_of( otype List, otype Element ) {§\impl{list_of}§
    36772985        Element car( List );
    36782986        List cdr( List );
     
    36812989        int is_nil( List );
    36822990};
    3683 context sum_list( type List, type Element | summable( Element ) | list_of( List, Element ) ) {};
    3684 \end{lstlisting}
    3685 \lstinline$sum_list$ contains seven declarations, which describe a list whose elements can be added
    3686 up. The assertion ``\lstinline$|sum_list( i_list, int )$''\use{sum_list} produces the assertion
    3687 parameters
     2991trait sum_list( otype List, otype Element | summable( Element ) | list_of( List, Element ) ) {};
     2992\end{lstlisting}
     2993©sum_list© contains seven declarations, which describe a list whose elements can be added up.
     2994The assertion ``©|sum_list( i_list, int )©''\use{sum_list} produces the assertion parameters
    36882995\begin{lstlisting}
    36892996int ?+=?( int *, int );
     
    37023009\lhs{type-parameter-list}
    37033010\rhs \nonterm{type-parameter}
    3704 \rhs \nonterm{type-parameter-list} \lstinline$,$ \nonterm{type-parameter}
     3011\rhs \nonterm{type-parameter-list} ©,© \nonterm{type-parameter}
    37053012\lhs{type-parameter}
    37063013\rhs \nonterm{type-class} \nonterm{identifier} \nonterm{assertion-list}\opt
    37073014\lhs{type-class}
    3708 \rhs \lstinline$type$
    3709 \rhs \lstinline$dtype$
    3710 \rhs \lstinline$ftype$
     3015\rhs ©type©
     3016\rhs ©dtype©
     3017\rhs ©ftype©
    37113018\lhs{type-declaration}
    3712 \rhs \nonterm{storage-class-specifier}\opt \lstinline$type$ \nonterm{type-declarator-list} \verb|;|
     3019\rhs \nonterm{storage-class-specifier}\opt ©type© \nonterm{type-declarator-list} \verb|;|
    37133020\lhs{type-declarator-list}
    37143021\rhs \nonterm{type-declarator}
    3715 \rhs \nonterm{type-declarator-list} \lstinline$,$ \nonterm{type-declarator}
     3022\rhs \nonterm{type-declarator-list} ©,© \nonterm{type-declarator}
    37163023\lhs{type-declarator}
    3717 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt \lstinline$=$ \nonterm{type-name}
     3024\rhs \nonterm{identifier} \nonterm{assertion-list}\opt ©=© \nonterm{type-name}
    37183025\rhs \nonterm{identifier} \nonterm{assertion-list}\opt
    37193026\end{syntax}
    37203027
    37213028\constraints
    3722 If a type declaration has block scope, and the declared identifier has external or internal linkage,
    3723 the declaration shall have no initializer for the identifier.
     3029If a type declaration has block scope, and the declared identifier has external or internal linkage, the declaration shall have no initializer for the identifier.
    37243030
    37253031\semantics
    3726 A \nonterm{type-parameter} or a \nonterm{type-declarator} declares an identifier to be a \Index{type
    3727 name} for a type incompatible with all other types.
    3728 
    3729 An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}. Identifiers declared
    3730 with type-class \lstinline$type$\use{type} are \Index{object type}s; those declared with type-class
    3731 \lstinline$dtype$\use{dtype} are \Index{incomplete type}s; and those declared with type-class
    3732 \lstinline$ftype$\use{ftype} are \Index{function type}s. The identifier has \Index{block scope} that
    3733 terminates at the end of the \nonterm{spec-declaration-list} or polymorphic function that contains
    3734 the \nonterm{type-parameter}.
    3735 
    3736 A \nonterm{type-declarator} with an \Index{initializer} is a \define{type definition}.  The declared
    3737 identifier is an \Index{incomplete type} within the initializer, and an \Index{object type} after
    3738 the end of the initializer. The type in the initializer is called the \define{implementation
    3739   type}. Within the scope of the declaration, \Index{implicit conversion}s can be performed between
    3740 the defined type and the implementation type, and between pointers to the defined type and pointers
    3741 to the implementation type.
    3742 
    3743 A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or
    3744 with storage-class specifier \lstinline$static$\use{static} defines an \Index{incomplete type}. If a
    3745 \Index{translation unit} or \Index{block} contains one or more such declarations for an identifier,
    3746 it must contain exactly one definition of the identifier ( but not in an enclosed block, which would
    3747 define a new type known only within that block).
     3032A \nonterm{type-parameter} or a \nonterm{type-declarator} declares an identifier to be a \Index{type name} for a type incompatible with all other types.
     3033
     3034An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}.
     3035Identifiers declared with type-class ©type©\use{type} are \Index{object type}s;
     3036those declared with type-class ©dtype©\use{dtype} are \Index{incomplete type}s;
     3037and those declared with type-class ©ftype©\use{ftype} are \Index{function type}s.
     3038The 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}.
     3039
     3040A \nonterm{type-declarator} with an \Index{initializer} is a \define{type definition}.  The declared identifier is an \Index{incomplete type} within the initializer, and an \Index{object type} after the end of the initializer.
     3041The type in the initializer is called the \define{implementation
     3042  type}.
     3043Within 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.
     3044
     3045A 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}.
     3046If 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).
    37483047\begin{rationale}
    37493048Incomplete type declarations allow compact mutually-recursive types.
    37503049\begin{lstlisting}
    3751 type t1; // Incomplete type declaration.
    3752 type t2 = struct { t1 * p; ... };
    3753 type t1 = struct { t2 * p; ... };
    3754 \end{lstlisting}
    3755 Without them, mutual recursion could be handled by declaring mutually recursive structures, then
    3756 initializing the types to those structures.
     3050otype t1; // incomplete type declaration
     3051otype t2 = struct { t1 * p; ... };
     3052otype t1 = struct { t2 * p; ... };
     3053\end{lstlisting}
     3054Without them, mutual recursion could be handled by declaring mutually recursive structures, then initializing the types to those structures.
    37573055\begin{lstlisting}
    37583056struct s1;
    3759 type t2 = struct s2 { struct s1 * p; ... };
    3760 type t1 = struct s1 { struct s2 * p; ... };
    3761 \end{lstlisting}
    3762 This introduces extra names, and may force the programmer to cast between the types and their
    3763 implementations.
    3764 \end{rationale}
    3765 
    3766 A type declaration without an initializer and with \Index{storage-class specifier}
    3767 \lstinline$extern$\use{extern} is an \define{opaque type declaration}. Opaque types are
    3768 \Index{object type}s. An opaque type is not a \nonterm{constant-expression}; neither is a structure
    3769 or union that has a member whose type is not a \nonterm{constant-expression}.  Every other
    3770 \Index{object type} is a \nonterm{constant-expression}. Objects with static storage duration shall
    3771 be declared with a type that is a \nonterm{constant-expression}.
    3772 \begin{rationale}
    3773 Type declarations can declare identifiers with external linkage, whereas typedef declarations
    3774 declare identifiers that only exist within a translation unit. These opaque types can be used in
    3775 declarations, but the implementation of the type is not visible.
    3776 
    3777 Static objects can not have opaque types because space for them would have to be allocated at
    3778 program start-up. This is a deficiency\index{deficiencies!static opaque objects}, but I don't want
    3779 to deal with ``module initialization'' code just now.
    3780 \end{rationale}
    3781 
    3782 An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a
    3783 value of \Index{type-class} \lstinline$dtype$. An object type\index{object types} which is not a
    3784 qualified version of a type is a value of type-classes \lstinline$type$ and \lstinline$dtype$. A
    3785 \Index{function type} is a value of type-class \lstinline$ftype$.
    3786 \begin{rationale}
    3787 Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which
    3788 omits the identifier being declared.
    3789 
    3790 Object types are precisely the types that can be instantiated. Type qualifiers are not included in
    3791 type values because the compiler needs the information they provide at compile time to detect
    3792 illegal statements or to produce efficient machine instructions. For instance, the code that a
    3793 compiler must generate to manipulate an object that has volatile-qualified type may be different
    3794 from the code to manipulate an ordinary object.
    3795 
    3796 Type qualifiers are a weak point of C's type system. Consider the standard library function
    3797 \lstinline$strchr()$ which, given a string and a character, returns a pointer to the first
    3798 occurrence of the character in the string.
    3799 \begin{lstlisting}
    3800 char *strchr( const char *s, int c ) {@\impl{strchr}@
     3057otype t2 = struct s2 { struct s1 * p; ... };
     3058otype t1 = struct s1 { struct s2 * p; ... };
     3059\end{lstlisting}
     3060This introduces extra names, and may force the programmer to cast between the types and their implementations.
     3061\end{rationale}
     3062
     3063A type declaration without an initializer and with \Index{storage-class specifier} ©extern©\use{extern} is an \define{opaque type declaration}.
     3064Opaque types are \Index{object type}s.
     3065An opaque type is not a \nonterm{constant-expression};
     3066neither is a structure or union that has a member whose type is not a \nonterm{constant-expression}.
     3067Every other \Index{object type} is a \nonterm{constant-expression}.
     3068Objects with static storage duration shall be declared with a type that is a \nonterm{constant-expression}.
     3069\begin{rationale}
     3070Type declarations can declare identifiers with external linkage, whereas typedef declarations declare identifiers that only exist within a translation unit.
     3071These opaque types can be used in declarations, but the implementation of the type is not visible.
     3072
     3073Static objects can not have opaque types because space for them would have to be allocated at program start-up.
     3074This is a deficiency\index{deficiencies!static opaque objects}, but I don't want to deal with ``module initialization'' code just now.
     3075\end{rationale}
     3076
     3077An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a value of \Index{type-class} ©dtype©.
     3078An object type\index{object types} which is not a qualified version of a type is a value of type-classes ©type© and ©dtype©.
     3079A \Index{function type} is a value of type-class ©ftype©.
     3080\begin{rationale}
     3081Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which omits the identifier being declared.
     3082
     3083Object types are precisely the types that can be instantiated.
     3084Type qualifiers are not included in type values because the compiler needs the information they provide at compile time to detect illegal statements or to produce efficient machine instructions.
     3085For instance, the code that a compiler must generate to manipulate an object that has volatile-qualified type may be different from the code to manipulate an ordinary object.
     3086
     3087Type qualifiers are a weak point of C's type system.
     3088Consider 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.
     3089\begin{lstlisting}
     3090char *strchr( const char *s, int c ) {§\impl{strchr}§
    38013091        char real_c = c; // done because c was declared as int.
    38023092        for ( ; *s != real_c; s++ )
    3803          if ( *s == '\0' ) return NULL;
     3093                if ( *s == '\0' ) return NULL;
    38043094        return ( char * )s;
    38053095}
    38063096\end{lstlisting}
    3807 The parameter \lstinline$s$ must be \lstinline$const char *$, because \lstinline$strchr()$ might be
    3808 used to search a constant string, but the return type must be \lstinline$char *$, because the result
    3809 might be used to modify a non-constant string. Hence the body must perform a cast, and ( even worse)
    3810 \lstinline$strchr()$ provides a type-safe way to attempt to modify constant strings. What is needed
    3811 is some way to say that \lstinline$s$'s type might contain qualifiers, and the result type has
    3812 exactly the same qualifiers. Polymorphic functions do not provide a fix for this
    3813 deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of
    3814 type values. Instead, overloading can be used to define \lstinline$strchr()$ for each combination
    3815 of qualifiers.
    3816 \end{rationale}
    3817 
    3818 \begin{rationale}
    3819 Since \Index{incomplete type}s are not type values, they can not be used as the initializer in a
    3820 type declaration, or as the type of a structure or union member. This prevents the declaration of
    3821 types that contain each other.
    3822 \begin{lstlisting}
    3823 type t1;
    3824 type t2 = t1; // illegal: incomplete type t1.
    3825 type t1 = t2;
    3826 \end{lstlisting}
    3827 
    3828 The initializer in a file-scope declaration must be a constant expression. This means type
    3829 declarations can not build on opaque types, which is a deficiency\index{deficiencies!nesting opaque
     3097The 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.
     3098Hence the body must perform a cast, and ( even worse) ©strchr()© provides a type-safe way to attempt to modify constant strings.
     3099What is needed is some way to say that ©s©'s type might contain qualifiers, and the result type has exactly the same qualifiers.
     3100Polymorphic functions do not provide a fix for this deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of type values.
     3101Instead, overloading can be used to define ©strchr()© for each combination of qualifiers.
     3102\end{rationale}
     3103
     3104\begin{rationale}
     3105Since \Index{incomplete type}s are not type values, they can not be used as the initializer in a type declaration, or as the type of a structure or union member.
     3106This prevents the declaration of types that contain each other.
     3107\begin{lstlisting}
     3108otype t1;
     3109otype t2 = t1; // illegal: incomplete type t1
     3110otype t1 = t2;
     3111\end{lstlisting}
     3112
     3113The initializer in a file-scope declaration must be a constant expression.
     3114This means type declarations can not build on opaque types, which is a deficiency\index{deficiencies!nesting opaque
    38303115 types}.
    38313116\begin{lstlisting}
    3832 extern type Huge; // extended-precision integer type.
    3833 type Rational = struct {
     3117extern otype Huge; // extended-precision integer type
     3118otype Rational = struct {
    38343119        Huge numerator, denominator;    // illegal
    38353120};
     
    38383123};
    38393124\end{lstlisting}
    3840 Without this restriction, \CFA might require ``module initialization'' code ( since
    3841 \lstinline$Rational$ has external linkage, it must be created before any other translation unit
    3842 instantiates it), and would force an ordering on the initialization of the translation unit that
    3843 defines \lstinline$Huge$ and the translation that declares \lstinline$Rational$.
    3844 
    3845 A benefit of the restriction is that it prevents the declaration in separate translation units of
    3846 types that contain each other, which would be hard to prevent otherwise.
     3125Without 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©.
     3126
     3127A 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.
    38473128\begin{lstlisting}
    38483129//  File a.c:
    38493130        extern type t1;
    3850         type t2 = struct { t1 f1; ... } // illegal
     3131        type t2 = struct { t1 f1; ... } // illegal
    38513132//  File b.c:
    38523133        extern type t2;
    3853         type t1 = struct { t2 f2; ... } // illegal
     3134        type t1 = struct { t2 f2; ... } // illegal
    38543135\end{lstlisting}
    38553136\end{rationale}
     
    38573138\begin{rationale}
    38583139Since a \nonterm{type-declaration} is a \nonterm{declaration} and not a
    3859 \nonterm{struct-declaration}, type declarations can not be structure members. The form of
    3860 \nonterm{type-declaration} forbids arrays of, pointers to, and functions returning \lstinline$type$.
    3861 Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued
    3862 expressions. It also side-steps the problem of type-valued expressions producing different values
    3863 in different declarations.
    3864 
    3865 Since a type declaration is not a \nonterm{parameter-declaration}, functions can not have explicit
    3866 type parameters. This may be too restrictive, but it attempts to make compilation simpler. Recall
    3867 that when traditional C scanners read in an identifier, they look it up in the symbol table to
    3868 determine whether or not it is a typedef name, and return a ``type'' or ``identifier'' token
    3869 depending on what they find. A type parameter would add a type name to the current scope. The
    3870 scope manipulations involved in parsing the declaration of a function that takes function pointer
    3871 parameters and returns a function pointer may just be too complicated.
    3872 
    3873 Explicit type parameters don't seem to be very useful, anyway, because their scope would not include
    3874 the return type of the function. Consider the following attempt to define a type-safe memory
    3875 allocation function.
     3140\nonterm{struct-declaration}, type declarations can not be structure members.
     3141The form of
     3142\nonterm{type-declaration} forbids arrays of, pointers to, and functions returning ©type©.
     3143Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued expressions.
     3144It also side-steps the problem of type-valued expressions producing different values in different declarations.
     3145
     3146Since a type declaration is not a \nonterm{parameter-declaration}, functions can not have explicit type parameters.
     3147This may be too restrictive, but it attempts to make compilation simpler.
     3148Recall that when traditional C scanners read in an identifier, they look it up in the symbol table to determine whether or not it is a typedef name, and return a ``type'' or ``identifier'' token depending on what they find.
     3149A type parameter would add a type name to the current scope.
     3150The scope manipulations involved in parsing the declaration of a function that takes function pointer parameters and returns a function pointer may just be too complicated.
     3151
     3152Explicit type parameters don't seem to be very useful, anyway, because their scope would not include the return type of the function.
     3153Consider the following attempt to define a type-safe memory allocation function.
    38763154\begin{lstlisting}
    38773155#include <stdlib.h>
    3878 T * new( type T ) { return ( T * )malloc( sizeof( T) ); };
    3879 @\ldots@
    3880 int * ip = new( int );
    3881 \end{lstlisting}
    3882 This looks sensible, but \CFA's declaration-before-use rules mean that ``\lstinline$T$'' in the
    3883 function body refers to the parameter, but the ``\lstinline$T$'' in the return type refers to the
    3884 meaning of \lstinline$T$ in the scope that contains \lstinline$new$; it could be undefined, or a
    3885 type name, or a function or variable name. Nothing good can result from such a situation.
     3156T * new( otype T ) { return ( T * )malloc( sizeof( T) ); };
     3157... int * ip = new( int );
     3158\end{lstlisting}
     3159This 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©;
     3160it could be undefined, or a type name, or a function or variable name.
     3161Nothing good can result from such a situation.
    38863162\end{rationale}
    38873163
     
    38893165Since type declarations create new types, instances of types are always passed by value.
    38903166\begin{lstlisting}
    3891 type A1 = int[2];
     3167otype A1 = int[2];
    38923168void f1( A1 a ) { a[0] = 0; };
    3893 typedef int A2[2];
     3169otypedef int A2[2];
    38943170void f2( A2 a ) { a[0] = 0; };
    38953171A1 v1;
     
    38983174f2( v2 );
    38993175\end{lstlisting}
    3900 \lstinline$V1$ is passed by value, so \lstinline$f1()$'s assignment to \lstinline$a[0]$ does not
    3901 modify v1.  \lstinline$V2$ is converted to a pointer, so \lstinline$f2()$ modifies
    3902 \lstinline$v2[0]$.
     3176©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]©.
    39033177
    39043178A translation unit containing the declarations
    39053179\begin{lstlisting}
    3906 extern type Complex;@\use{Complex}@ // opaque type declaration.
    3907 extern float abs( Complex );@\use{abs}@
    3908 \end{lstlisting}
    3909 can contain declarations of complex numbers, which can be passed to \lstinline$abs$. Some other
    3910 translation unit must implement \lstinline$Complex$ and \lstinline$abs$. That unit might contain
    3911 the declarations
    3912 \begin{lstlisting}
    3913 type Complex = struct { float re, im; };@\impl{Complex}@
    3914 Complex cplx_i = { 0.0, 1.0 };@\impl{cplx_i}@
    3915 float abs( Complex c ) {@\impl{abs( Complex )}@
     3180extern type Complex;§\use{Complex}§ // opaque type declaration
     3181extern float abs( Complex );§\use{abs}§
     3182\end{lstlisting} can contain declarations of complex numbers, which can be passed to ©abs©.
     3183Some other translation unit must implement ©Complex© and ©abs©.
     3184That unit might contain the declarations
     3185\begin{lstlisting}
     3186otype Complex = struct { float re, im; };§\impl{Complex}§
     3187Complex cplx_i = { 0.0, 1.0 };§\impl{cplx_i}§
     3188float abs( Complex c ) {§\impl{abs( Complex )}§
    39163189        return sqrt( c.re * c.re + c.im * c.im );
    39173190}
    39183191\end{lstlisting}
    3919 Note that \lstinline$c$ is implicitly converted to a \lstinline$struct$ so that its components can
    3920 be retrieved.
    3921 
    3922 \begin{lstlisting}
    3923 type Time_of_day = int;@\impl{Time_of_day}@ // seconds since midnight.
    3924 Time_of_day ?+?( Time_of_day t1, int seconds ) {@\impl{?+?}@
     3192Note that ©c© is implicitly converted to a ©struct© so that its components can be retrieved.
     3193
     3194\begin{lstlisting}
     3195otype Time_of_day = int;§\impl{Time_of_day}§ // seconds since midnight.
     3196Time_of_day ?+?( Time_of_day t1, int seconds ) {§\impl{?+?}§
    39253197        return (( int)t1 + seconds ) % 86400;
    39263198}
    39273199\end{lstlisting}
    3928 \lstinline$t1$ must be cast to its implementation type to prevent infinite recursion.
    3929 
    3930 \begin{rationale}
    3931 Within the scope of a type definition, an instance of the type can be viewed as having that type or
    3932 as having the implementation type. In the \lstinline$Time_of_day$ example, the difference is
    3933 important. Different languages have treated the distinction between the abstraction and the
    3934 implementation in different ways.
     3200©t1© must be cast to its implementation type to prevent infinite recursion.
     3201
     3202\begin{rationale}
     3203Within the scope of a type definition, an instance of the type can be viewed as having that type or as having the implementation type.
     3204In the ©Time_of_day© example, the difference is important.
     3205Different languages have treated the distinction between the abstraction and the implementation in different ways.
    39353206\begin{itemize}
    39363207\item
    3937 Inside a Clu cluster \cite{clu}, the declaration of an instance states which view applies. Two
    3938 primitives called \lstinline$up$ and \lstinline$down$ can be used to convert between the views.
    3939 \item
    3940 The Simula class \cite{Simula87} is essentially a record type. Since the only operations on a
    3941 record are member selection and assignment, which can not be overloaded, there is never any
    3942 ambiguity as to whether the abstraction or the implementation view is being used. In {\CC}
    3943 \cite{c++}, operations on class instances include assignment and ``\lstinline$&$'', which can be
    3944 overloaded. A ``scope resolution'' operator can be used inside the class to specify whether the
    3945 abstract or implementation version of the operation should be used.
    3946 \item
    3947 An Ada derived type definition \cite{ada} creates a new type from an old type, and also implicitly
    3948 declares derived subprograms that correspond to the existing subprograms that use the old type as a
    3949 parameter type or result type. The derived subprograms are clones of the existing subprograms with
    3950 the old type replaced by the derived type. Literals and aggregates of the old type are also cloned.
     3208Inside a Clu cluster \cite{CLU}, the declaration of an instance states which view applies.
     3209Two primitives called ©up© and ©down© can be used to convert between the views.
     3210\item
     3211The Simula class \cite{SIMULA87} is essentially a record type.
     3212Since 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.
     3213In {\CC}
     3214\cite{C++}, operations on class instances include assignment and ``©&©'', which can be overloaded.
     3215A ``scope resolution'' operator can be used inside the class to specify whether the abstract or implementation version of the operation should be used.
     3216\item
     3217An Ada derived type definition \cite{Ada} creates a new type from an old type, and also implicitly declares derived subprograms that correspond to the existing subprograms that use the old type as a parameter type or result type.
     3218The derived subprograms are clones of the existing subprograms with the old type replaced by the derived type.
     3219Literals and aggregates of the old type are also cloned.
    39513220In other words, the abstract view provides exactly the same operations as the implementation view.
    39523221This allows the abstract view to be used in all cases.
    39533222
    3954 The derived subprograms can be replaced by programmer-specified subprograms. This is an exception
    3955 to the normal scope rules, which forbid duplicate definitions of a subprogram in a scope. In this
    3956 case, explicit conversions between the derived type and the old type can be used.
     3223The derived subprograms can be replaced by programmer-specified subprograms.
     3224This is an exception to the normal scope rules, which forbid duplicate definitions of a subprogram in a scope.
     3225In this case, explicit conversions between the derived type and the old type can be used.
    39573226\end{itemize}
    3958 \CFA's rules are like Clu's, except that implicit conversions and
    3959 conversion costs allow it to do away with most uses of \lstinline$up$ and \lstinline$down$.
     3227\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©.
    39603228\end{rationale}
    39613229
     
    39633231\subsubsection{Default functions and objects}
    39643232
    3965 A declaration\index{type declaration} of a type identifier \lstinline$T$ with type-class
    3966 \lstinline$type$ implicitly declares a \define{default assignment} function
    3967 \lstinline$T ?=?( T *, T )$\use{?=?}, with the same \Index{scope} and \Index{linkage} as the
    3968 identifier \lstinline$T$.
    3969 \begin{rationale}
    3970 Assignment is central to C's imperative programming style, and every existing C object type has
    3971 assignment defined for it ( except for array types, which are treated as pointer types for purposes
    3972 of assignment). Without this rule, nearly every inferred type parameter would need an accompanying
    3973 assignment assertion parameter. If a type parameter should not have an assignment operation,
    3974 \lstinline$dtype$ should be used. If a type should not have assignment defined, the user can define
    3975 an assignment function that causes a run-time error, or provide an external declaration but no
    3976 definition and thus cause a link-time error.
    3977 \end{rationale}
    3978 
    3979 A definition\index{type definition} of a type identifier \lstinline$T$ with \Index{implementation
    3980 type} \lstinline$I$ and type-class \lstinline$type$ implicitly defines a default assignment
    3981 function. A definition\index{type definition} of a type identifier \lstinline$T$ with implementation
    3982 type \lstinline$I$ and an assertion list implicitly defines \define{default function}s and
    3983 \define{default object}s as declared by the assertion declarations. The default objects and
    3984 functions have the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$. Their
    3985 values are determined as follows:
     3233A 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©.
     3234\begin{rationale}
     3235Assignment 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).
     3236Without this rule, nearly every inferred type parameter would need an accompanying assignment assertion parameter.
     3237If a type parameter should not have an assignment operation, ©dtype© should be used.
     3238If 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.
     3239\end{rationale}
     3240
     3241A definition\index{type definition} of a type identifier ©T© with \Index{implementation type} ©I© and type-class ©type© implicitly defines a default assignment function.
     3242A 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.
     3243The default objects and functions have the same \Index{scope} and \Index{linkage} as the identifier ©T©.
     3244Their values are determined as follows:
    39863245\begin{itemize}
    39873246\item
    3988 If at the definition of \lstinline$T$ there is visible a declaration of an object with the same name
    3989 as the default object, and if the type of that object with all occurrence of \lstinline$I$ replaced
    3990 by \lstinline$T$ is compatible with the type of the default object, then the default object is
    3991 initialized with that object. Otherwise the scope of the declaration of \lstinline$T$ must contain
    3992 a definition of the default object.
     3247If 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.
     3248Otherwise the scope of the declaration of ©T© must contain a definition of the default object.
    39933249
    39943250\item
    3995 If at the definition of \lstinline$T$ there is visible a declaration of a function with the same
    3996 name as the default function, and if the type of that function with all occurrence of \lstinline$I$
    3997 replaced by \lstinline$T$ is compatible with the type of the default function, then the default
    3998 function calls that function after converting its arguments and returns the converted result.
    3999 
    4000 Otherwise, if \lstinline$I$ contains exactly one anonymous member\index{anonymous member} such that
    4001 at the definition of \lstinline$T$ there is visible a declaration of a function with the same name
    4002 as the default function, and the type of that function with all occurrences of the anonymous
    4003 member's type in its parameter list replaced by \lstinline$T$ is compatible with the type of the
    4004 default function, then the default function calls that function after converting its arguments and
    4005 returns the result.
    4006 
    4007 Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default
    4008 function.
     3251If 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.
     3252
     3253Otherwise, 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.
     3254
     3255Otherwise the scope of the declaration of ©T© must contain a definition of the default function.
    40093256\end{itemize}
    40103257\begin{rationale}
    4011 Note that a pointer to a default function will not compare as equal to a pointer to the inherited
    4012 function.
    4013 \end{rationale}
    4014 
    4015 A function or object with the same type and name as a default function or object that is declared
    4016 within the scope of the definition of \lstinline$T$ replaces the default function or object.
     3258Note that a pointer to a default function will not compare as equal to a pointer to the inherited function.
     3259\end{rationale}
     3260
     3261A 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.
    40173262
    40183263\examples
    40193264\begin{lstlisting}
    4020 context s( type T ) {
     3265trait s( otype T ) {
    40213266        T a, b;
    4022 }
    4023 struct impl { int left, right; } a = { 0, 0 };
    4024 type Pair | s( Pair ) = struct impl;
     3267} struct impl { int left, right; } a = { 0, 0 };
     3268otype Pair | s( Pair ) = struct impl;
    40253269Pair b = { 1, 1 };
    40263270\end{lstlisting}
    4027 The definition of \lstinline$Pair$ implicitly defines two objects \lstinline$a$ and \lstinline$b$.
    4028 \lstinline$Pair a$ inherits its value from the \lstinline$struct impl a$. The definition of
    4029 \lstinline$Pair b$ is compulsory because there is no \lstinline$struct impl b$ to construct a value
    4030 from.
    4031 \begin{lstlisting}
    4032 context ss( type T ) {
     3271The definition of ©Pair© implicitly defines two objects ©a© and ©b©.
     3272©Pair a© inherits its value from the ©struct impl a©.
     3273The definition of ©Pair b© is compulsory because there is no ©struct impl b© to construct a value from.
     3274\begin{lstlisting}
     3275trait ss( otype T ) {
    40333276        T clone( T );
    40343277        void munge( T * );
    40353278}
    4036 type Whatsit | ss( Whatsit );@\use{Whatsit}@
    4037 type Doodad | ss( Doodad ) = struct doodad {@\use{Doodad}@
     3279otype Whatsit | ss( Whatsit );§\use{Whatsit}§
     3280otype Doodad | ss( Doodad ) = struct doodad {§\use{Doodad}§
    40383281        Whatsit; // anonymous member
    40393282        int extra;
     
    40413284Doodad clone( Doodad ) { ... }
    40423285\end{lstlisting}
    4043 The definition of \lstinline$Doodad$ implicitly defines three functions:
     3286The definition of ©Doodad© implicitly defines three functions:
    40443287\begin{lstlisting}
    40453288Doodad ?=?( Doodad *, Doodad );
     
    40473290void munge( Doodad * );
    40483291\end{lstlisting}
    4049 The assignment function inherits \lstinline$struct doodad$'s assignment function because the types
    4050 match when \lstinline$struct doodad$ is replaced by \lstinline$Doodad$ throughout.
    4051 \lstinline$munge()$ inherits \lstinline$Whatsit$'s \lstinline$munge()$ because the types match when
    4052 \lstinline$Whatsit$ is replaced by \lstinline$Doodad$ in the parameter list. \lstinline$clone()$
    4053 does \emph{not} inherit \lstinline$Whatsit$'s \lstinline$clone()$: replacement in the parameter
    4054 list yields ``\lstinline$Whatsit clone( Doodad )$'', which is not compatible with
    4055 \lstinline$Doodad$'s \lstinline$clone()$'s type. Hence the definition of
    4056 ``\lstinline$Doodad clone( Doodad )$'' is necessary.
     3292The assignment function inherits ©struct doodad©'s assignment function because the types match when ©struct doodad©  is replaced by ©Doodad© throughout.
     3293©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.
     3294Hence the definition of ``©Doodad clone( Doodad )©'' is necessary.
    40573295
    40583296Default functions and objects are subject to the normal scope rules.
    40593297\begin{lstlisting}
    4060 type T = @\ldots@;
    4061 T a_T = @\ldots@;               // Default assignment used.
     3298otype T = ...;
     3299T a_T = ...;            // Default assignment used.
    40623300T ?=?( T *, T );
    4063 T a_T = @\ldots@;               // Programmer-defined assignment called.
     3301T a_T = ...;            // Programmer-defined assignment called.
    40643302\end{lstlisting}
    40653303\begin{rationale}
     
    40683306
    40693307\begin{rationale}
    4070 The \emph{class} construct of object-oriented programming languages performs three independent
    4071 functions. It \emph{encapsulates} a data structure; it defines a \emph{subtype} relationship, whereby
    4072 instances of one class may be used in contexts that require instances of another; and it allows one
    4073 class to \emph{inherit} the implementation of another.
    4074 
    4075 In \CFA, encapsulation is provided by opaque types and the scope rules, and subtyping is provided
    4076 by specifications and assertions. Inheritance is provided by default functions and objects.
     3308The \emph{class} construct of object-oriented programming languages performs three independent functions.
     3309It \emph{encapsulates} a data structure;
     3310it defines a \emph{subtype} relationship, whereby instances of one class may be used in contexts that require instances of another;
     3311and it allows one class to \emph{inherit} the implementation of another.
     3312
     3313In \CFA, encapsulation is provided by opaque types and the scope rules, and subtyping is provided by specifications and assertions.
     3314Inheritance is provided by default functions and objects.
    40773315\end{rationale}
    40783316
     
    40853323\end{syntax}
    40863324
    4087 Many statements contain expressions, which may have more than one interpretation. The following
    4088 sections describe how the \CFA translator selects an interpretation. In all cases the result of the
    4089 selection shall be a single unambiguous \Index{interpretation}.
     3325Many statements contain expressions, which may have more than one interpretation.
     3326The following sections describe how the \CFA translator selects an interpretation.
     3327In all cases the result of the selection shall be a single unambiguous \Index{interpretation}.
    40903328
    40913329
     
    40943332\begin{syntax}
    40953333\oldlhs{labeled-statement}
    4096 \rhs \lstinline$case$ \nonterm{case-value-list} : \nonterm{statement}
     3334\rhs ©case© \nonterm{case-value-list} : \nonterm{statement}
    40973335\lhs{case-value-list}
    40983336\rhs \nonterm{case-value}
    4099 \rhs \nonterm{case-value-list} \lstinline$,$ \nonterm{case-value}
     3337\rhs \nonterm{case-value-list} ©,© \nonterm{case-value}
    41003338\lhs{case-value}
    41013339\rhs \nonterm{constant-expression}
    41023340\rhs \nonterm{subrange}
    41033341\lhs{subrange}
    4104 \rhs \nonterm{constant-expression} \lstinline$~$ \nonterm{constant-expression}
     3342\rhs \nonterm{constant-expression} ©~© \nonterm{constant-expression}
    41053343\end{syntax}
    41063344
     
    41153353case 1~4, 9~14, 27~32:
    41163354\end{lstlisting}
    4117 The \lstinline$case$ and \lstinline$default$ clauses are restricted within the \lstinline$switch$ and \lstinline$choose$ statements, precluding Duff's device.
     3355The ©case© and ©default© clauses are restricted within the ©switch© and ©choose© statements, precluding Duff's device.
    41183356
    41193357
    41203358\subsection{Expression and null statements}
    41213359
    4122 The expression in an expression statement is treated as being cast to \lstinline$void$.
     3360The expression in an expression statement is treated as being cast to ©void©.
    41233361
    41243362
     
    41273365\begin{syntax}
    41283366\oldlhs{selection-statement}
    4129 \rhs \lstinline$choose$ \lstinline$($ \nonterm{expression} \lstinline$)$ \nonterm{statement}
     3367\rhs ©choose© ©(© \nonterm{expression} ©)© \nonterm{statement}
    41303368\end{syntax}
    41313369
    4132 The controlling expression \lstinline$E$ in the \lstinline$switch$ and \lstinline$choose$ statement:
     3370The controlling expression ©E© in the ©switch© and ©choose© statement:
    41333371\begin{lstlisting}
    41343372switch ( E ) ...
    41353373choose ( E ) ...
    4136 \end{lstlisting}
    4137 may have more than one interpretation, but it shall have only one interpretation with an integral type.
     3374\end{lstlisting} may have more than one interpretation, but it shall have only one interpretation with an integral type.
    41383375An \Index{integer promotion} is performed on the expression if necessary.
    4139 The constant expressions in \lstinline$case$ statements with the switch are converted to the promoted type.
     3376The constant expressions in ©case© statements with the switch are converted to the promoted type.
    41403377
    41413378
    41423379\setcounter{subsubsection}{3}
    4143 \subsubsection{The \lstinline$choose$ statement}
    4144 
    4145 The \lstinline$choose$ statement is the same as the \lstinline$switch$ statement except control transfers to the end of the \lstinline$choose$ statement at a \lstinline$case$ or \lstinline$default$ labeled statement.
    4146 The \lstinline$fallthru$ statement is used to fall through to the next \lstinline$case$ or \lstinline$default$ labeled statement.
     3380\subsubsection[The choose statement]{The \lstinline@choose@ statement}
     3381
     3382The ©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.
     3383The ©fallthru© statement is used to fall through to the next ©case© or ©default© labeled statement.
    41473384The following have identical meaning:
    41483385\begin{flushleft}
     
    41693406\end{tabular}
    41703407\end{flushleft}
    4171 The \lstinline$choose$ statement addresses the problem of accidental fall-through associated with the \lstinline$switch$ statement.
     3408The ©choose© statement addresses the problem of accidental fall-through associated with the ©switch© statement.
    41723409
    41733410
    41743411\subsection{Iteration statements}
    41753412
    4176 The controlling expression \lstinline$E$ in the loops
     3413The controlling expression ©E© in the loops
    41773414\begin{lstlisting}
    41783415if ( E ) ...
     
    41803417do ... while ( E );
    41813418\end{lstlisting}
    4182 is treated as ``\lstinline$( int )((E)!=0)$''.
     3419is treated as ``©( int )((E)!=0)©''.
    41833420
    41843421The statement
    41853422\begin{lstlisting}
    4186 for ( a; b; c ) @\ldots@
    4187 \end{lstlisting}
    4188 is treated as
     3423for ( a; b; c ) ...
     3424\end{lstlisting} is treated as
    41893425\begin{lstlisting}
    41903426for ( ( void )( a ); ( int )(( b )!=0); ( void )( c ) ) ...
     
    41963432\begin{syntax}
    41973433\oldlhs{jump-statement}
    4198 \rhs \lstinline$continue$ \nonterm{identifier}\opt
    4199 \rhs \lstinline$break$ \nonterm{identifier}\opt
     3434\rhs ©continue© \nonterm{identifier}\opt
     3435\rhs ©break© \nonterm{identifier}\opt
    42003436\rhs \ldots
    4201 \rhs \lstinline$throw$ \nonterm{assignment-expression}\opt
    4202 \rhs \lstinline$throwResume$ \nonterm{assignment-expression}\opt \nonterm{at-expression}\opt
    4203 \lhs{at-expression} \lstinline$_At$ \nonterm{assignment-expression}
     3437\rhs ©throw© \nonterm{assignment-expression}\opt
     3438\rhs ©throwResume© \nonterm{assignment-expression}\opt \nonterm{at-expression}\opt
     3439\lhs{at-expression} ©_At© \nonterm{assignment-expression}
    42043440\end{syntax}
    42053441
    4206 Labeled \lstinline$continue$ and \lstinline$break$ allow useful but restricted control-flow that reduces the need for the \lstinline$goto$ statement for exiting multiple nested control-structures.
     3442Labeled ©continue© and ©break© allow useful but restricted control-flow that reduces the need for the ©goto© statement for exiting multiple nested control-structures.
    42073443\begin{lstlisting}
    42083444L1: {                                                   // compound
     
    42313467
    42323468\setcounter{subsubsection}{1}
    4233 \subsubsection{The \lstinline$continue$ statement}
    4234 
    4235 The identifier in a \lstinline$continue$ statement shall name a label located on an enclosing iteration statement.
    4236 
    4237 
    4238 \subsubsection{The \lstinline$break$ statement}
    4239 
    4240 The identifier in a \lstinline$break$ statement shall name a label located on an enclosing compound, selection or iteration statement.
    4241 
    4242 
    4243 \subsubsection{The \lstinline$return$ statement}
    4244 
    4245 An expression in a \lstinline$return$ statement is treated as being cast to the result type of the function.
    4246 
    4247 
    4248 \subsubsection{The \lstinline$throw$ statement}
     3469\subsubsection[The continue statement]{The \lstinline@continue@ statement}
     3470
     3471The identifier in a ©continue© statement shall name a label located on an enclosing iteration statement.
     3472
     3473
     3474\subsubsection[The break statement]{The \lstinline@break@ statement}
     3475
     3476The identifier in a ©break© statement shall name a label located on an enclosing compound, selection or iteration statement.
     3477
     3478
     3479\subsubsection[The return statement]{The \lstinline@return@ statement}
     3480
     3481An expression in a ©return© statement is treated as being cast to the result type of the function.
     3482
     3483
     3484\subsubsection[The throw statement]{The \lstinline@throw@ statement}
    42493485
    42503486When an exception is raised, \Index{propagation} directs control from a raise in the source execution to a handler in the faulting execution.
    42513487
    42523488
    4253 \subsubsection{The \lstinline$throwResume$ statement}
     3489\subsubsection[The throwResume statement]{The \lstinline@throwResume@ statement}
    42543490
    42553491
     
    42583494\begin{syntax}
    42593495\lhs{exception-statement}
    4260 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list}
    4261 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{finally-clause}
    4262 \rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list} \nonterm{finally-clause}
     3496\rhs ©try© \nonterm{compound-statement} \nonterm{handler-list}
     3497\rhs ©try© \nonterm{compound-statement} \nonterm{finally-clause}
     3498\rhs ©try© \nonterm{compound-statement} \nonterm{handler-list} \nonterm{finally-clause}
    42633499\lhs{handler-list}
    42643500\rhs \nonterm{handler-clause}
    4265 \rhs \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
    4266 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
    4267 \rhs \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
    4268 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
     3501\rhs ©catch© ©(© \ldots ©)© \nonterm{compound-statement}
     3502\rhs \nonterm{handler-clause} ©catch© ©(© \ldots ©)© \nonterm{compound-statement}
     3503\rhs ©catchResume© ©(© \ldots ©)© \nonterm{compound-statement}
     3504\rhs \nonterm{handler-clause} ©catchResume© ©(© \ldots ©)© \nonterm{compound-statement}
    42693505\lhs{handler-clause}
    4270 \rhs \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
    4271 \rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
    4272 \rhs \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
    4273 \rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
     3506\rhs ©catch© ©(© \nonterm{exception-declaration} ©)© \nonterm{compound-statement}
     3507\rhs \nonterm{handler-clause} ©catch© ©(© \nonterm{exception-declaration} ©)© \nonterm{compound-statement}
     3508\rhs ©catchResume© ©(© \nonterm{exception-declaration} ©)© \nonterm{compound-statement}
     3509\rhs \nonterm{handler-clause} ©catchResume© ©(© \nonterm{exception-declaration} ©)© \nonterm{compound-statement}
    42743510\lhs{finally-clause}
    4275 \rhs \lstinline$finally$ \nonterm{compound-statement}
     3511\rhs ©finally© \nonterm{compound-statement}
    42763512\lhs{exception-declaration}
    42773513\rhs \nonterm{type-specifier}
     
    42813517\rhs \nonterm{new-abstract-declarator-tuple}
    42823518\lhs{asynchronous-statement}
    4283 \rhs \lstinline$enable$ \nonterm{identifier-list} \nonterm{compound-statement}
    4284 \rhs \lstinline$disable$ \nonterm{identifier-list} \nonterm{compound-statement}
     3519\rhs ©enable© \nonterm{identifier-list} \nonterm{compound-statement}
     3520\rhs ©disable© \nonterm{identifier-list} \nonterm{compound-statement}
    42853521\end{syntax}
    42863522
     
    42883524
    42893525
    4290 \subsubsection{The \lstinline$try$ statement}
    4291 
    4292 The \lstinline$try$ statement is a block with associated handlers, called a \Index{guarded block};
     3526\subsubsection[The try statement]{The \lstinline@try@ statement}
     3527
     3528The ©try© statement is a block with associated handlers, called a \Index{guarded block};
    42933529all other blocks are \Index{unguarded block}s.
    4294 A \lstinline$goto$, \lstinline$break$, \lstinline$return$, or \lstinline$continue$ statement can be used to transfer control out of a try block or handler, but not into one.
    4295 
    4296 
    4297 \subsubsection{The \lstinline$enable$/\lstinline$disable$ statements}
    4298 
    4299 The \lstinline$enable$/\lstinline$disable$ statements toggle delivery of \Index{asynchronous exception}s.
     3530A ©goto©, ©break©, ©return©, or ©continue© statement can be used to transfer control out of a try block or handler, but not into one.
     3531
     3532
     3533\subsubsection[The enable/disable statements]{The \lstinline@enable@/\lstinline@disable@ statements}
     3534
     3535The ©enable©/©disable© statements toggle delivery of \Index{asynchronous exception}s.
    43003536
    43013537
     
    43073543\subsection{Predefined macro names}
    43083544
    4309 The implementation shall define the macro names \lstinline$__LINE__$, \lstinline$__FILE__$,
    4310 \lstinline$__DATE__$, and \lstinline$__TIME__$, as in the {\c11} standard. It shall not define the
    4311 macro name \lstinline$__STDC__$.
    4312 
    4313 In addition, the implementation shall define the macro name \lstinline$__CFORALL__$ to be the
    4314 decimal constant 1.
     3545The implementation shall define the macro names ©__LINE__©, ©__FILE__©, ©__DATE__©, and ©__TIME__©, as in the {\c11} standard.
     3546It shall not define the macro name ©__STDC__©.
     3547
     3548In addition, the implementation shall define the macro name ©__CFORALL__© to be the decimal constant 1.
    43153549
    43163550
     
    43223556
    43233557\section{C types}
    4324 This section gives example specifications for some groups of types that are important in the C
    4325 language, in terms of the predefined operations that can be applied to those types.
     3558This section gives example specifications for some groups of types that are important in the C language, in terms of the predefined operations that can be applied to those types.
    43263559
    43273560
    43283561\subsection{Scalar, arithmetic, and integral types}
    43293562
    4330 The pointer, integral, and floating-point types are all \define{scalar types}. All of these types
    4331 can be logically negated and compared. The assertion ``\lstinline$scalar( Complex )$'' should be read
    4332 as ``type \lstinline$Complex$ is scalar''.
    4333 \begin{lstlisting}
    4334 context scalar( type T ) {@\impl{scalar}@
     3563The pointer, integral, and floating-point types are all \define{scalar types}.
     3564All of these types can be logically negated and compared.
     3565The assertion ``©scalar( Complex )©'' should be read as ``type ©Complex© is scalar''.
     3566\begin{lstlisting}
     3567trait scalar( otype T ) {§\impl{scalar}§
    43353568        int !?( T );
    43363569        int ?<?( T, T ), ?<=?( T, T ), ?==?( T, T ), ?>=?( T, T ), ?>?( T, T ), ?!=?( T, T );
     
    43383571\end{lstlisting}
    43393572
    4340 The integral and floating-point types are \define{arithmetic types}, which support the basic
    4341 arithmetic operators. The use of an assertion in the \nonterm{spec-parameter-list} declares that,
    4342 in order to be arithmetic, a type must also be scalar ( and hence that scalar operations are
    4343 available ). This is equivalent to inheritance of specifications.
    4344 \begin{lstlisting}
    4345 context arithmetic( type T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@
     3573The integral and floating-point types are \define{arithmetic types}, which support the basic arithmetic operators.
     3574The use of an assertion in the \nonterm{spec-parameter-list} declares that, in order to be arithmetic, a type must also be scalar ( and hence that scalar operations are available ).
     3575This is equivalent to inheritance of specifications.
     3576\begin{lstlisting}
     3577trait arithmetic( otype T | scalar( T ) ) {§\impl{arithmetic}§§\use{scalar}§
    43463578        T +?( T ), -?( T );
    43473579        T ?*?( T, T ), ?/?( T, T ), ?+?( T, T ), ?-?( T, T );
     
    43493581\end{lstlisting}
    43503582
    4351 The various flavors of \lstinline$char$ and \lstinline$int$ and the enumerated types make up the
    4352 \define{integral types}.
    4353 \begin{lstlisting}
    4354 context integral( type T | arithmetic( T ) ) {@\impl{integral}@@\use{arithmetic}@
     3583The various flavors of ©char© and ©int© and the enumerated types make up the \define{integral types}.
     3584\begin{lstlisting}
     3585trait integral( otype T | arithmetic( T ) ) {§\impl{integral}§§\use{arithmetic}§
    43553586        T ~?( T );
    43563587        T ?&?( T, T ), ?|?( T, T ), ?^?( T, T );
     
    43663597The only operation that can be applied to all modifiable lvalues is simple assignment.
    43673598\begin{lstlisting}
    4368 context m_lvalue( type T ) {@\impl{m_lvalue}@
     3599trait m_lvalue( otype T ) {§\impl{m_lvalue}§
    43693600        T ?=?( T *, T );
    43703601};
     
    43723603
    43733604Modifiable scalar lvalues are scalars and are modifiable lvalues, and assertions in the
    4374 \nonterm{spec-parameter-list} reflect those relationships. This is equivalent to multiple
    4375 inheritance of specifications. Scalars can also be incremented and decremented.
    4376 \begin{lstlisting}
    4377 context m_l_scalar( type T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@
    4378         T ?++( T * ), ?--( T * );@\use{scalar}@@\use{m_lvalue}@
     3605\nonterm{spec-parameter-list} reflect those relationships.
     3606This is equivalent to multiple inheritance of specifications.
     3607Scalars can also be incremented and decremented.
     3608\begin{lstlisting}
     3609trait m_l_scalar( otype T | scalar( T ) | m_lvalue( T ) ) {§\impl{m_l_scalar}§
     3610        T ?++( T * ), ?--( T * );§\use{scalar}§§\use{m_lvalue}§
    43793611        T ++?( T * ), --?( T * );
    43803612};
    43813613\end{lstlisting}
    43823614
    4383 Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic. Note that this
    4384 results in the ``inheritance'' of \lstinline$scalar$ along both paths.
    4385 \begin{lstlisting}
    4386 context m_l_arithmetic( type T | m_l_scalar( T ) | arithmetic( T ) ) {@\impl{m_l_arithmetic}@
    4387         T ?/=?( T *, T ), ?*=?( T *, T );@\use{m_l_scalar}@@\use{arithmetic}@
     3615Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic.
     3616Note that this results in the ``inheritance'' of ©scalar© along both paths.
     3617\begin{lstlisting}
     3618trait m_l_arithmetic( otype T | m_l_scalar( T ) | arithmetic( T ) ) {§\impl{m_l_arithmetic}§
     3619        T ?/=?( T *, T ), ?*=?( T *, T );§\use{m_l_scalar}§§\use{arithmetic}§
    43883620        T ?+=?( T *, T ), ?-=?( T *, T );
    43893621};
    4390 
    4391 context m_l_integral( type T | m_l_arithmetic( T ) | integral( T ) ) {@\impl{m_l_integral}@
    4392         T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );@\use{m_l_arithmetic}@
    4393         T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );@\use{integral}@
     3622trait m_l_integral( otype T | m_l_arithmetic( T ) | integral( T ) ) {§\impl{m_l_integral}§
     3623        T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );§\use{m_l_arithmetic}§
     3624        T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );§\use{integral}§
    43943625};
    43953626\end{lstlisting}
     
    43983629\subsection{Pointer and array types}
    43993630
    4400 Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a
    4401 constant pointer to the first element of the array, and the subscript expression
    4402 ``\lstinline$a[i]$'' is equivalent to the dereferencing expression ``\lstinline$(*( a+( i )))$''.
    4403 Technically, pointer arithmetic and pointer comparisons other than ``\lstinline$==$'' and
    4404 ``\lstinline$!=$'' are only defined for pointers to array elements, but the type system does not
    4405 enforce those restrictions. Consequently, there is no need for a separate ``array type''
    4406 specification.
    4407 
    4408 Pointer types are scalar types. Like other scalar types, they have ``\lstinline$+$'' and
    4409 ``\lstinline$-$'' operators, but the types do not match the types of the operations in
    4410 \lstinline$arithmetic$, so these operators cannot be consolidated in \lstinline$scalar$.
    4411 \begin{lstlisting}
    4412 context pointer( type P | scalar( P ) ) {@\impl{pointer}@@\use{scalar}@
     3631Array 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 )))©''.
     3632Technically, 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.
     3633Consequently, there is no need for a separate ``array type'' specification.
     3634
     3635Pointer types are scalar types.
     3636Like 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©.
     3637\begin{lstlisting}
     3638trait pointer( type P | scalar( P ) ) {§\impl{pointer}§§\use{scalar}§
    44133639        P ?+?( P, long int ), ?+?( long int, P ), ?-?( P, long int );
    44143640        ptrdiff_t ?-?( P, P );
    44153641};
    4416 
    4417 context m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@
     3642trait m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {§\impl{m_l_pointer}§
    44183643        P ?+=?( P *, long int ), ?-=?( P *, long int );
    44193644        P ?=?( P *, void * );
     
    44223647\end{lstlisting}
    44233648
    4424 Specifications that define the dereference operator ( or subscript operator ) require two
    4425 parameters, one for the pointer type and one for the pointed-at ( or element ) type. Different
    4426 specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not
    4427 included in types. The assertion ``\lstinline$|ptr_to( Safe_pointer, int )$'' should be read as
    4428 ``\lstinline$Safe_pointer$ acts like a pointer to \lstinline$int$''.
    4429 \begin{lstlisting}
    4430 context ptr_to( type P | pointer( P ), type T ) {@\impl{ptr_to}@@\use{pointer}@
    4431         lvalue T *?( P ); lvalue T ?[?]( P, long int );
     3649Specifications 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.
     3650Different specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not included in types.
     3651The assertion ``©|ptr_to( Safe_pointer, int )©'' should be read as ``©Safe_pointer© acts like a pointer to ©int©''.
     3652\begin{lstlisting}
     3653trait ptr_to( otype P | pointer( P ), otype T ) {§\impl{ptr_to}§§\use{pointer}§
     3654        lvalue T *?( P );
     3655        lvalue T ?[?]( P, long int );
    44323656};
    4433 
    4434 context ptr_to_const( type P | pointer( P ), type T ) {@\impl{ptr_to_const}@
    4435         const lvalue T *?( P ); const lvalue T ?[?]( P, long int );@\use{pointer}@
     3657trait ptr_to_const( otype P | pointer( P ), otype T ) {§\impl{ptr_to_const}§
     3658        const lvalue T *?( P );
     3659        const lvalue T ?[?]( P, long int );§\use{pointer}§
    44363660};
    4437 
    4438 context ptr_to_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_volatile}@
    4439         volatile lvalue T *?( P ); volatile lvalue T ?[?]( P, long int );@\use{pointer}@
     3661trait ptr_to_volatile( otype P | pointer( P ), otype T ) }§\impl{ptr_to_volatile}§
     3662        volatile lvalue T *?( P );
     3663        volatile lvalue T ?[?]( P, long int );§\use{pointer}§
    44403664};
    4441 \end{lstlisting}
    4442 \begin{lstlisting}
    4443 context ptr_to_const_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_const_volatile}@
    4444         const volatile lvalue T *?( P );@\use{pointer}@
     3665trait ptr_to_const_volatile( otype P | pointer( P ), otype T ) }§\impl{ptr_to_const_volatile}§
     3666        const volatile lvalue T *?( P );§\use{pointer}§
    44453667        const volatile lvalue T ?[?]( P, long int );
    44463668};
    44473669\end{lstlisting}
    44483670
    4449 Assignment to pointers is more complicated than is the case with other types, because the target's
    4450 type can have extra type qualifiers in the pointed-at type: a ``\lstinline$T *$'' can be assigned to
    4451 a ``\lstinline$const T *$'', a ``\lstinline$volatile T *$'', and a ``\lstinline$const volatile T *$''.
    4452 Again, the pointed-at type is passed in, so that assertions can connect these specifications to the
    4453 ``\lstinline$ptr_to$'' specifications.
    4454 \begin{lstlisting}
    4455 context m_l_ptr_to( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to}@ type T | ptr_to( P, T )@\use{ptr_to}@ {
     3671Assignment 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 *©''.
     3672Again, the pointed-at type is passed in, so that assertions can connect these specifications to the ``©ptr_to©'' specifications.
     3673\begin{lstlisting}
     3674trait 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}§ {
    44563675        P ?=?( P *, T * );
    44573676        T * ?=?( T **, P );
    44583677};
    4459 
    4460 context m_l_ptr_to_const( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_const}@ type T | ptr_to_const( P, T )@\use{ptr_to_const}@) {
     3678trait 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}§) {
    44613679        P ?=?( P *, const T * );
    44623680        const T * ?=?( const T **, P );
    44633681};
    4464 
    4465 context m_l_ptr_to_volatile( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_volatile}@ type T | ptr_to_volatile( P, T )) {@\use{ptr_to_volatile}@
     3682trait 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}§
    44663683        P ?=?( P *, volatile T * );
    44673684        volatile T * ?=?( volatile T **, P );
    44683685};
    4469 
    4470 context m_l_ptr_to_const_volatile( type P | ptr_to_const_volatile( P ),@\use{ptr_to_const_volatile}@@\impl{m_l_ptr_to_const_volatile}@
    4471                 type 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}@
     3686trait 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}§
     3687                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}§
    44723688        P ?=?( P *, const volatile T * );
    44733689        const volatile T * ?=?( const volatile T **, P );
     
    44753691\end{lstlisting}
    44763692
    4477 Note the regular manner in which type qualifiers appear in those specifications. An alternative
    4478 specification can make use of the fact that qualification of the pointed-at type is part of a
    4479 pointer type to capture that regularity.
    4480 \begin{lstlisting}
    4481 context 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 ) ) {
     3693Note the regular manner in which type qualifiers appear in those specifications.
     3694An 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.
     3695\begin{lstlisting}
     3696trait 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 ) ) {
    44823697        MyP ?=?( MyP *, CP );
    44833698        CP ?=?( CP *, MyP );
    44843699};
    44853700\end{lstlisting}
    4486 The assertion ``\lstinline$| m_l_ptr_like( Safe_ptr, const int * )$'' should be read as
    4487 ``\lstinline$Safe_ptr$ is a pointer type like \lstinline$const int *$''. This specification has two
    4488 defects, compared to the original four: there is no automatic assertion that dereferencing a
    4489 \lstinline$MyP$ produces an lvalue of the type that \lstinline$CP$ points at, and the
    4490 ``\lstinline$|m_l_pointer( CP )$'' assertion provides only a weak assurance that the argument passed
    4491 to \lstinline$CP$ really is a pointer type.
     3701The assertion ``©| m_l_ptr_like( Safe_ptr, const int * )©'' should be read as ``©Safe_ptr© is a pointer type like ©const int *©''.
     3702This 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.
    44923703
    44933704
    44943705\section{Relationships between operations}
    44953706
    4496 Different operators often have related meanings; for instance, in C, ``\lstinline$+$'',
    4497 ``\lstinline$+=$'', and the two versions of ``\lstinline$++$'' perform variations of addition.
    4498 Languages like {\CC} and Ada allow programmers to define operators for new types, but do not
    4499 require that these relationships be preserved, or even that all of the operators be implemented.
    4500 Completeness and consistency is left to the good taste and discretion of the programmer. It is
    4501 possible to encourage these attributes by providing generic operator functions, or member functions
    4502 of abstract classes, that are defined in terms of other, related operators.
    4503 
    4504 In \CFA, polymorphic functions provide the equivalent of these generic operators, and
    4505 specifications explicitly define the minimal implementation that a programmer should provide. This
    4506 section shows a few examples.
     3707Different operators often have related meanings;
     3708for instance, in C, ``©+©'', ``©+=©'', and the two versions of ``©++©'' perform variations of addition.
     3709Languages 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.
     3710Completeness and consistency is left to the good taste and discretion of the programmer.
     3711It is possible to encourage these attributes by providing generic operator functions, or member functions of abstract classes, that are defined in terms of other, related operators.
     3712
     3713In \CFA, polymorphic functions provide the equivalent of these generic operators, and specifications explicitly define the minimal implementation that a programmer should provide.
     3714This section shows a few examples.
    45073715
    45083716
    45093717\subsection{Relational and equality operators}
    45103718
    4511 The different comparison operators have obvious relationships, but there is no obvious subset of the
    4512 operations to use in the implementation of the others. However, it is usually convenient to
    4513 implement a single comparison function that returns a negative integer, 0, or a positive integer if
    4514 its first argument is respectively less than, equal to, or greater than its second argument; the
    4515 library function \lstinline$strcmp$ is an example.
    4516 
    4517 C and \CFA have an extra, non-obvious comparison operator: ``\lstinline$!$'', logical negation,
    4518 returns 1 if its operand compares equal to 0, and 0 otherwise.
    4519 \begin{lstlisting}
    4520 context comparable( type T ) {
     3719The different comparison operators have obvious relationships, but there is no obvious subset of the operations to use in the implementation of the others.
     3720However, 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;
     3721the library function ©strcmp© is an example.
     3722
     3723C and \CFA have an extra, non-obvious comparison operator: ``©!©'', logical negation, returns 1 if its operand compares equal to 0, and 0 otherwise.
     3724\begin{lstlisting}
     3725trait comparable( otype T ) {
    45213726        const T 0;
    45223727        int compare( T, T );
    45233728}
    4524 
    4525 forall( type T | comparable( T ) ) int ?<?( T l, T r ) {
     3729forall( otype T | comparable( T ) ) int ?<?( T l, T r ) {
    45263730        return compare( l, r ) < 0;
    45273731}
    45283732// ... similarly for <=, ==, >=, >, and !=.
    4529 
    4530 forall( type T | comparable( T ) ) int !?( T operand ) {
     3733forall( otype T | comparable( T ) ) int !?( T operand ) {
    45313734        return !compare( operand, 0 );
    45323735}
     
    45363739\subsection{Arithmetic and integer operations}
    45373740
    4538 A complete arithmetic type would provide the arithmetic operators and the corresponding assignment
    4539 operators. Of these, the assignment operators are more likely to be implemented directly, because
    4540 it is usually more efficient to alter the contents of an existing object than to create and return a
    4541 new one. Similarly, a complete integral type would provide integral operations based on integral
    4542 assignment operations.
    4543 \begin{lstlisting}
    4544 context arith_base( type T ) {
     3741A complete arithmetic type would provide the arithmetic operators and the corresponding assignment operators.
     3742Of these, the assignment operators are more likely to be implemented directly, because it is usually more efficient to alter the contents of an existing object than to create and return a new one.
     3743Similarly, a complete integral type would provide integral operations based on integral assignment operations.
     3744\begin{lstlisting}
     3745trait arith_base( otype T ) {
    45453746        const T 1;
    45463747        T ?+=?( T *, T ), ?-=?( T *, T ), ?*=?( T *, T ), ?/=?( T *, T );
    45473748}
    4548 
    4549 forall( type T | arith_base( T ) ) T ?+?( T l, T r ) {
     3749forall( otype T | arith_base( T ) ) T ?+?( T l, T r ) {
    45503750        return l += r;
    45513751}
    4552 
    4553 forall( type T | arith_base( T ) ) T ?++( T * operand ) {
     3752forall( otype T | arith_base( T ) ) T ?++( T * operand ) {
    45543753        T temporary = *operand;
    45553754        *operand += 1;
    45563755        return temporary;
    45573756}
    4558 
    4559 forall( type T | arith_base( T ) ) T ++?( T * operand ) {
     3757forall( otype T | arith_base( T ) ) T ++?( T * operand ) {
    45603758        return *operand += 1;
    45613759}
    45623760// ... similarly for -, --, *, and /.
    4563 
    4564 context int_base( type T ) {
     3761trait int_base( otype T ) {
    45653762        T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );
    45663763        T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );
    45673764}
    4568 
    4569 forall( type T | int_base( T ) ) T ?&?( T l, T r ) {
     3765forall( otype T | int_base( T ) ) T ?&?( T l, T r ) {
    45703766        return l &= r;
    45713767}
     
    45733769\end{lstlisting}
    45743770
    4575 Note that, although an arithmetic type would certainly provide comparison functions, and an integral
    4576 type would provide arithmetic operations, there does not have to be any relationship among
    4577 \lstinline$int_base$, \lstinline$arith_base$ and \lstinline$comparable$. Note also that these
    4578 declarations provide guidance and assistance, but they do not define an absolutely minimal set of
    4579 requirements. A truly minimal implementation of an arithmetic type might only provide
    4580 \lstinline$0$, \lstinline$1$, and \lstinline$?-=?$, which would be used by polymorphic
    4581 \lstinline$?+=?$, \lstinline$?*=?$, and \lstinline$?/=?$ functions.
    4582 
    4583 Note also that \lstinline$short$ is an integer type in C11 terms, but has no operations!
     3771Note 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©.
     3772Note also that these declarations provide guidance and assistance, but they do not define an absolutely minimal set of requirements.
     3773A truly minimal implementation of an arithmetic type might only provide ©0©, ©1©, and ©?-=?©, which would be used by polymorphic ©?+=?©, ©?*=?©, and ©?/=?© functions.
     3774
     3775Note also that ©short© is an integer type in C11 terms, but has no operations!
    45843776
    45853777
     
    45873779Review index entries.
    45883780
    4589 Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers. This gets
    4590 into \lstinline$noalias$ territory. Qualifying anything (``\lstinline$short restrict rs$'') means
    4591 pointer parameters of \lstinline$?++$, etc, would need restrict qualifiers.
    4592 
    4593 Enumerated types. Constants are not ints. Overloading. Definition should be ``representable as an
    4594 integer type'', not ``as an int''. C11 usual conversions freely convert to and from ordinary
    4595 integer types via assignment, which works between any integer types. Does enum Color ?*?( enum
     3781Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers.
     3782This gets into ©noalias© territory.
     3783Qualifying anything (``©short restrict rs©'') means pointer parameters of ©?++©, etc, would need restrict qualifiers.
     3784
     3785Enumerated types.
     3786Constants are not ints.
     3787Overloading.
     3788Definition should be ``representable as an integer type'', not ``as an int''.
     3789C11 usual conversions freely convert to and from ordinary integer types via assignment, which works between any integer types.
     3790Does enum Color ?*?( enum
    45963791Color, enum Color ) really make sense? ?++ does, but it adds (int)1.
    45973792
    4598 Operators on {,signed,unsigned} char and other small types. ?<? harmless; ?*? questionable for
    4599 chars. Generic selections make these choices visible. Safe conversion operators? Predefined
    4600 ``promotion'' function?
    4601 
    4602 \lstinline$register$ assignment might be handled as assignment to a temporary with copying back and
    4603 forth, but copying must not be done by assignment.
    4604 
    4605 Don't use ptrdiff\_t by name in the predefineds.
    4606 
    4607 Polymorphic objects. Polymorphic typedefs and type declarations.
     3793Operators on {,signed,unsigned} char and other small types. ©?<?© harmless;
     3794?*? questionable for chars.
     3795Generic selections make these choices visible.
     3796Safe conversion operators? Predefined ``promotion'' function?
     3797
     3798©register© assignment might be handled as assignment to a temporary with copying back and forth, but copying must not be done by assignment.
     3799
     3800Don't use ©ptrdiff_t© by name in the predefineds.
     3801
     3802Polymorphic objects.
     3803Polymorphic typedefs and type declarations.
    46083804
    46093805
    46103806\bibliographystyle{plain}
    4611 \bibliography{refrat}
     3807\bibliography{cfa}
    46123808
    46133809
    46143810\addcontentsline{toc}{chapter}{\indexname} % add index name to table of contents
    46153811\begin{theindex}
    4616 Italic page numbers give the location of the main entry for the referenced term. Plain page numbers
    4617 denote uses of the indexed term. Entries for grammar non-terminals are italicized. A typewriter
    4618 font is used for grammar terminals and program identifiers.
     3812Italic page numbers give the location of the main entry for the referenced term.
     3813Plain page numbers denote uses of the indexed term.
     3814Entries for grammar non-terminals are italicized.
     3815A typewriter font is used for grammar terminals and program identifiers.
    46193816\indexspace
    46203817\input{refrat.ind}
  • src/ArgTweak/FunctionFixer.cc

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

    r679864e1 r242d458  
    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
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Sep 17 15:25:58 2015
    13 // Update Count     : 233
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug  4 13:35:30 2016
     13// Update Count     : 352
    1414//
    1515
     
    2121#include "Parser/ParseNode.h"
    2222
    23 #include "SynTree/Type.h"
     23#include "SynTree/Declaration.h"
    2424#include "SynTree/Expression.h"
    2525#include "SynTree/Initializer.h"
    2626#include "SynTree/Statement.h"
    27 
    28 #include "utility.h"
    29 #include "UnimplementedError.h"
     27#include "SynTree/Type.h"
     28#include "SynTree/Attribute.h"
     29
     30#include "Common/utility.h"
     31#include "Common/UnimplementedError.h"
    3032
    3133#include "CodeGenerator.h"
     
    3335#include "GenType.h"
    3436
     37#include "InitTweak/InitTweak.h"
     38
    3539using namespace std;
    3640
     
    4145        bool wantSpacing( Statement * stmt) {
    4246                return dynamic_cast< IfStmt * >( stmt ) || dynamic_cast< CompoundStmt * >( stmt ) ||
    43                         dynamic_cast< WhileStmt * >( stmt ) || dynamic_cast< ForStmt * > ( stmt ) || dynamic_cast< SwitchStmt *>( stmt );
    44         }
    45 
    46         ostream & CodeGenerator::Indenter::operator()( ostream & output ) {
     47                        dynamic_cast< WhileStmt * >( stmt ) || dynamic_cast< ForStmt * >( stmt ) || dynamic_cast< SwitchStmt *>( stmt );
     48        }
     49
     50        void CodeGenerator::extension( Expression * expr ) {
     51                if ( expr->get_extension() ) {
     52                        output << "__extension__ ";
     53                } // if
     54        } // extension
     55
     56        void CodeGenerator::extension( Declaration * decl ) {
     57                if ( decl->get_extension() ) {
     58                        output << "__extension__ ";
     59                } // if
     60        } // extension
     61
     62        ostream & CodeGenerator::Indenter::operator()( ostream & output ) const {
    4763          return output << string( cg.cur_indent, ' ' );
    4864        }
    4965
    50         ostream & operator<<( ostream & output, CodeGenerator::Indenter &indent ) {
     66        ostream & operator<<( ostream & output, const CodeGenerator::Indenter &indent ) {
    5167                return indent( output );
    5268        }
    5369
    54         CodeGenerator::CodeGenerator( std::ostream &os ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ) { }
    55 
    56         CodeGenerator::CodeGenerator( std::ostream &os, std::string init, int indentation, bool infunp )
    57                         : indent( *this), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
     70        CodeGenerator::LabelPrinter & CodeGenerator::LabelPrinter::operator()( std::list< Label > & l ) {
     71                labels = &l;
     72                return *this;
     73        }
     74
     75        ostream & operator<<( ostream & output, CodeGenerator::LabelPrinter & printLabels ) {
     76                std::list< Label > & labs = *printLabels.labels;
     77                // l.unique(); // assumes a sorted list. Why not use set? Does order matter?
     78                for ( Label & l : labs ) {
     79                        output << l.get_name() + ": ";
     80                        printLabels.cg.genAttributes( l.get_attributes() );
     81                } // for
     82                return output;
     83        }
     84
     85        CodeGenerator::CodeGenerator( std::ostream & os ) : indent( *this), cur_indent( 0 ), insideFunction( false ), output( os ), printLabels( *this ) {}
     86
     87        CodeGenerator::CodeGenerator( std::ostream & os, std::string init, int indentation, bool infunp )
     88                        : indent( *this), cur_indent( indentation ), insideFunction( infunp ), output( os ), printLabels( *this ) {
    5889                //output << std::string( init );
    5990        }
    6091
    61         CodeGenerator::CodeGenerator( std::ostream &os, char *init, int indentation, bool infunp )
    62                         : indent( *this ), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
     92        CodeGenerator::CodeGenerator( std::ostream & os, char * init, int indentation, bool infunp )
     93                        : indent( *this ), cur_indent( indentation ), insideFunction( infunp ), output( os ), printLabels( *this ) {
    6394                //output << std::string( init );
    6495        }
    6596
    66         string mangleName( DeclarationWithType *decl ) {
     97        string mangleName( DeclarationWithType * decl ) {
    6798                if ( decl->get_mangleName() != "" ) {
    68                         return decl->get_mangleName();
     99                        // need to incorporate scope level in order to differentiate names for destructors
     100                        return decl->get_scopedMangleName();
    69101                } else {
    70102                        return decl->get_name();
     
    72104        }
    73105
     106        void CodeGenerator::genAttributes( std::list< Attribute * > & attributes ) {
     107                if ( ! attributes.empty() ) {
     108                        output << "__attribute__ ((";
     109                        for ( Attribute *& attr : attributes ) {
     110                                if ( ! attr->empty() ) {
     111                                        output << attr->get_name() << "(";
     112                                        genCommaList( attr->get_parameters().begin(), attr->get_parameters().end() );
     113                                        output << ")";
     114                                } // if
     115                                output << ",";
     116                        } // for
     117                        output << ")) ";
     118                } // if
     119        }
     120
     121
    74122        //*** Declarations
    75         void CodeGenerator::visit( FunctionDecl *functionDecl ) {
     123        void CodeGenerator::visit( FunctionDecl * functionDecl ) {
     124                extension( functionDecl );
     125                genAttributes( functionDecl->get_attributes() );
     126
    76127                handleStorageClass( functionDecl );
    77128                if ( functionDecl->get_isInline() ) {
     
    95146        }
    96147
    97         void CodeGenerator::visit( ObjectDecl *objectDecl ) {
     148        void CodeGenerator::visit( ObjectDecl * objectDecl ) {
     149                extension( objectDecl );
     150                genAttributes( objectDecl->get_attributes() );
     151
    98152                handleStorageClass( objectDecl );
    99153                output << genType( objectDecl->get_type(), mangleName( objectDecl ) );
    100        
     154
    101155                if ( objectDecl->get_init() ) {
    102156                        output << " = ";
    103157                        objectDecl->get_init()->accept( *this );
    104158                } // if
     159
    105160                if ( objectDecl->get_bitfieldWidth() ) {
    106161                        output << ":";
     
    109164        }
    110165
    111         void CodeGenerator::handleAggregate( AggregateDecl *aggDecl ) {
     166        void CodeGenerator::handleAggregate( AggregateDecl * aggDecl ) {
    112167                if ( aggDecl->get_name() != "" )
    113168                        output << aggDecl->get_name();
    114        
    115                 std::list< Declaration * > &memb = aggDecl->get_members();
     169
     170                std::list< Declaration * > & memb = aggDecl->get_members();
     171                if ( ! memb.empty() ) {
     172//              if ( aggDecl->has_body() ) {
     173//                      std::list< Declaration * > & memb = aggDecl->get_members();
     174                        output << " {" << endl;
     175
     176                        cur_indent += CodeGenerator::tabsize;
     177                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end(); i++ ) {
     178                                output << indent;
     179                                (*i)->accept( *this );
     180                                output << ";" << endl;
     181                        } // for
     182
     183                        cur_indent -= CodeGenerator::tabsize;
     184
     185                        output << indent << "}";
     186                } // if
     187        }
     188
     189        void CodeGenerator::visit( StructDecl * structDecl ) {
     190                extension( structDecl );
     191                output << "struct ";
     192                handleAggregate( structDecl );
     193        }
     194
     195        void CodeGenerator::visit( UnionDecl * unionDecl ) {
     196                extension( unionDecl );
     197                output << "union ";
     198                handleAggregate( unionDecl );
     199        }
     200
     201        void CodeGenerator::visit( EnumDecl * enumDecl ) {
     202                extension( enumDecl );
     203                output << "enum ";
     204
     205                if ( enumDecl->get_name() != "" )
     206                        output << enumDecl->get_name();
     207
     208                std::list< Declaration* > &memb = enumDecl->get_members();
    116209
    117210                if ( ! memb.empty() ) {
    118211                        output << " {" << endl;
    119212
    120                         cur_indent += CodeGenerator::tabsize; 
     213                        cur_indent += CodeGenerator::tabsize;
    121214                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    122                                 output << indent;
    123                                 (*i)->accept( *this );
    124                                 output << ";" << endl;
    125                         }
    126 
    127                         cur_indent -= CodeGenerator::tabsize;
    128 
    129                         output << indent << "}";
    130                 } // if
    131         }
    132 
    133         void CodeGenerator::visit( StructDecl *structDecl ) {
    134                 output << "struct ";
    135                 handleAggregate( structDecl );
    136         }
    137 
    138         void CodeGenerator::visit( UnionDecl *aggregateDecl ) {
    139                 output << "union ";
    140                 handleAggregate( aggregateDecl );
    141         }
    142  
    143         void CodeGenerator::visit( EnumDecl *aggDecl ) {
    144                 output << "enum ";
    145 
    146                 if ( aggDecl->get_name() != "" )
    147                         output << aggDecl->get_name();
    148        
    149                 std::list< Declaration* > &memb = aggDecl->get_members();
    150 
    151                 if ( ! memb.empty() ) {
    152                         output << " {" << endl;
    153 
    154                         cur_indent += CodeGenerator::tabsize;
    155                         for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    156                                 ObjectDecl *obj = dynamic_cast< ObjectDecl* >( *i );
     215                                ObjectDecl * obj = dynamic_cast< ObjectDecl* >( *i );
    157216                                assert( obj );
    158                                 output << indent << mangleName( obj ); 
     217                                output << indent << mangleName( obj );
    159218                                if ( obj->get_init() ) {
    160219                                        output << " = ";
     
    164223                        } // for
    165224
    166                         cur_indent -= CodeGenerator::tabsize; 
     225                        cur_indent -= CodeGenerator::tabsize;
    167226
    168227                        output << indent << "}";
    169228                } // if
    170229        }
    171  
    172         void CodeGenerator::visit( ContextDecl *aggregateDecl ) {}
    173  
    174         void CodeGenerator::visit( TypedefDecl *typeDecl ) {
    175                 output << "typedef ";
    176                 output << genType( typeDecl->get_base(), typeDecl->get_name() );
    177         }
    178  
    179         void CodeGenerator::visit( TypeDecl *typeDecl ) {
     230
     231        void CodeGenerator::visit( TraitDecl * traitDecl ) {}
     232
     233        void CodeGenerator::visit( TypedefDecl * typeDecl ) {
     234                assert( false && "Typedefs are removed and substituted in earlier passes." );
     235                //output << "typedef ";
     236                //output << genType( typeDecl->get_base(), typeDecl->get_name() );
     237        }
     238
     239        void CodeGenerator::visit( TypeDecl * typeDecl ) {
    180240                // really, we should mutate this into something that isn't a TypeDecl but that requires large-scale changes,
    181241                // still to be done
     242                extension( typeDecl );
    182243                output << "extern unsigned long " << typeDecl->get_name();
    183244                if ( typeDecl->get_base() ) {
     
    199260                                (*iter)->accept( *this );
    200261                                output << "]";
    201                         }
    202                 }
     262                        } // if
     263                } // for
    203264                output << " = ";
    204265        }
    205266
    206         void CodeGenerator::visit( SingleInit *init ) {
     267        void CodeGenerator::visit( SingleInit * init ) {
    207268                printDesignators( init->get_designators() );
    208269                init->get_value()->accept( *this );
    209270        }
    210271
    211         void CodeGenerator::visit( ListInit *init ) {
     272        void CodeGenerator::visit( ListInit * init ) {
    212273                printDesignators( init->get_designators() );
    213274                output << "{ ";
    214                 genCommaList( init->begin_initializers(), init->end_initializers() );
     275                if ( init->begin() == init->end() ) {
     276                        // illegal to leave initializer list empty for scalar initializers, but always legal to have 0
     277                        output << "0";
     278                } else {
     279                        genCommaList( init->begin(), init->end() );
     280                } // if
    215281                output << " }";
    216282        }
    217283
    218         void CodeGenerator::visit( Constant *constant ) {
     284        void CodeGenerator::visit( Constant * constant ) {
    219285                output << constant->get_value() ;
    220286        }
    221287
    222288        //*** Expressions
    223         void CodeGenerator::visit( ApplicationExpr *applicationExpr ) {
    224                 if ( VariableExpr *varExpr = dynamic_cast< VariableExpr* >( applicationExpr->get_function() ) ) {
     289        void CodeGenerator::visit( ApplicationExpr * applicationExpr ) {
     290                extension( applicationExpr );
     291                if ( VariableExpr * varExpr = dynamic_cast< VariableExpr* >( applicationExpr->get_function() ) ) {
    225292                        OperatorInfo opInfo;
    226293                        if ( varExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( varExpr->get_var()->get_name(), opInfo ) ) {
     
    230297                                  case OT_POSTFIXASSIGN:
    231298                                  case OT_INFIXASSIGN:
     299                                  case OT_CTOR:
     300                                  case OT_DTOR:
    232301                                        {
    233302                                                assert( arg != applicationExpr->get_args().end() );
    234                                                 if ( AddressExpr *addrExpr = dynamic_cast< AddressExpr * >( *arg ) ) {
    235                
     303                                                if ( AddressExpr * addrExpr = dynamic_cast< AddressExpr * >( *arg ) ) {
     304                                                        // remove & from first assignment/ctor argument
    236305                                                        *arg = addrExpr->get_arg();
    237306                                                } else {
    238                                                         UntypedExpr *newExpr = new UntypedExpr( new NameExpr( "*?" ) );
     307                                                        // no address-of operator, so must be a pointer - add dereference
     308                                                        UntypedExpr * newExpr = new UntypedExpr( new NameExpr( "*?" ) );
    239309                                                        newExpr->get_args().push_back( *arg );
     310                                                        assert( (*arg)->get_results().size() == 1 );
     311                                                        Type * type = InitTweak::getPointerBase( (*arg)->get_results().front() );
     312                                                        assert( type );
     313                                                        newExpr->get_results().push_back( type );
    240314                                                        *arg = newExpr;
    241315                                                } // if
    242316                                                break;
    243317                                        }
    244              
     318
    245319                                  default:
    246320                                        // do nothing
    247321                                        ;
    248                                 }
    249            
     322                                } // switch
     323
    250324                                switch ( opInfo.type ) {
    251325                                  case OT_INDEX:
     
    256330                                        output << "]";
    257331                                        break;
    258              
     332
    259333                                  case OT_CALL:
     334                                        // there are no intrinsic definitions of the function call operator
     335                                        assert( false );
     336                                        break;
     337
    260338                                  case OT_CTOR:
    261339                                  case OT_DTOR:
    262                                         // there are no intrinsic definitions of the function call operator or constructors or destructors
    263                                         assert( false );
    264                                         break;
    265              
     340                                        if ( applicationExpr->get_args().size() == 1 ) {
     341                                                // the expression fed into a single parameter constructor or destructor may contain side
     342                                                // effects, so must still output this expression
     343                                                output << "(";
     344                                                (*arg++)->accept( *this );
     345                                                output << ") /* " << opInfo.inputName << " */";
     346                                        } else if ( applicationExpr->get_args().size() == 2 ) {
     347                                                // intrinsic two parameter constructors are essentially bitwise assignment
     348                                                output << "(";
     349                                                (*arg++)->accept( *this );
     350                                                output << opInfo.symbol;
     351                                                (*arg)->accept( *this );
     352                                                output << ") /* " << opInfo.inputName << " */";
     353                                        } else {
     354                                                // no constructors with 0 or more than 2 parameters
     355                                                assert( false );
     356                                        } // if
     357                                        break;
     358
    266359                                  case OT_PREFIX:
    267360                                  case OT_PREFIXASSIGN:
     
    272365                                        output << ")";
    273366                                        break;
    274              
     367
    275368                                  case OT_POSTFIX:
    276369                                  case OT_POSTFIXASSIGN:
     
    279372                                        output << opInfo.symbol;
    280373                                        break;
     374
    281375
    282376                                  case OT_INFIX:
     
    289383                                        output << ")";
    290384                                        break;
    291              
     385
    292386                                  case OT_CONSTANT:
    293387                                  case OT_LABELADDRESS:
    294388                                        // there are no intrinsic definitions of 0/1 or label addresses as functions
    295389                                        assert( false );
    296                                 }
     390                                } // switch
    297391                        } else {
    298392                                varExpr->accept( *this );
     
    308402                } // if
    309403        }
    310  
    311         void CodeGenerator::visit( UntypedExpr *untypedExpr ) {
    312                 if ( NameExpr *nameExpr = dynamic_cast< NameExpr* >( untypedExpr->get_function() ) ) {
     404
     405        void CodeGenerator::visit( UntypedExpr * untypedExpr ) {
     406                extension( untypedExpr );
     407                if ( NameExpr * nameExpr = dynamic_cast< NameExpr* >( untypedExpr->get_function() ) ) {
    313408                        OperatorInfo opInfo;
    314409                        if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
     
    322417                                        output << "]";
    323418                                        break;
    324              
     419
    325420                                  case OT_CALL:
    326                                         case OT_CTOR:
    327                                         case OT_DTOR:
    328421                                        assert( false );
    329                                         break;
    330              
     422
     423                                  case OT_CTOR:
     424                                  case OT_DTOR:
     425                                        if ( untypedExpr->get_args().size() == 1 ) {
     426                                                // the expression fed into a single parameter constructor or destructor may contain side
     427                                                // effects, so must still output this expression
     428                                                output << "(";
     429                                                (*arg++)->accept( *this );
     430                                                output << ") /* " << opInfo.inputName << " */";
     431                                        } else if ( untypedExpr->get_args().size() == 2 ) {
     432                                                // intrinsic two parameter constructors are essentially bitwise assignment
     433                                                output << "(";
     434                                                (*arg++)->accept( *this );
     435                                                output << opInfo.symbol;
     436                                                (*arg)->accept( *this );
     437                                                output << ") /* " << opInfo.inputName << " */";
     438                                        } else {
     439                                                // no constructors with 0 or more than 2 parameters
     440                                                assert( false );
     441                                        } // if
     442                                        break;
     443
    331444                                  case OT_PREFIX:
    332445                                  case OT_PREFIXASSIGN:
     
    338451                                        output << ")";
    339452                                        break;
    340              
     453
    341454                                  case OT_POSTFIX:
    342455                                  case OT_POSTFIXASSIGN:
     
    345458                                        output << opInfo.symbol;
    346459                                        break;
    347  
     460
    348461                                  case OT_INFIX:
    349462                                  case OT_INFIXASSIGN:
     
    355468                                        output << ")";
    356469                                        break;
    357                                        
     470
    358471                                  case OT_CONSTANT:
    359472                                        // there are no intrinsic definitions of 0 or 1 as functions
    360473                                        assert( false );
    361                                 }
     474                                } // switch
    362475                        } else {
    363                                 nameExpr->accept( *this );
    364                                 output << "(";
    365                                 genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
    366                                 output << ")";
     476                                if ( nameExpr->get_name() == "..." ) { // case V1 ... V2 or case V1~V2
     477                                        assert( untypedExpr->get_args().size() == 2 );
     478                                        (*untypedExpr->get_args().begin())->accept( *this );
     479                                        output << " ... ";
     480                                        (*--untypedExpr->get_args().end())->accept( *this );
     481                                } else {                                                                // builtin routines
     482                                        nameExpr->accept( *this );
     483                                        output << "(";
     484                                        genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
     485                                        output << ")";
     486                                } // if
    367487                        } // if
    368488                } else {
     
    373493                } // if
    374494        }
    375  
    376         void CodeGenerator::visit( NameExpr *nameExpr ) {
     495
     496        void CodeGenerator::visit( RangeExpr * rangeExpr ) {
     497                rangeExpr->get_low()->accept( *this );
     498                output << " ... ";
     499                rangeExpr->get_high()->accept( *this );
     500        }
     501
     502        void CodeGenerator::visit( NameExpr * nameExpr ) {
     503                extension( nameExpr );
    377504                OperatorInfo opInfo;
    378505                if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
     
    383510                } // if
    384511        }
    385  
    386         void CodeGenerator::visit( AddressExpr *addressExpr ) {
     512
     513        void CodeGenerator::visit( AddressExpr * addressExpr ) {
     514                extension( addressExpr );
    387515                output << "(&";
    388516                // this hack makes sure that we don't convert "constant_zero" to "0" if we're taking its address
    389                 if ( VariableExpr *variableExpr = dynamic_cast< VariableExpr* >( addressExpr->get_arg() ) ) {
     517                if ( VariableExpr * variableExpr = dynamic_cast< VariableExpr* >( addressExpr->get_arg() ) ) {
    390518                        output << mangleName( variableExpr->get_var() );
    391519                } else {
     
    395523        }
    396524
    397         void CodeGenerator::visit( CastExpr *castExpr ) {
    398                 // if the cast is to an lvalue type, then the cast
    399                 // should be dropped, since the result of a cast is
    400                 // never an lvalue in C
    401                 if ( castExpr->get_results().front()->get_isLvalue() ) {
    402                         castExpr->get_arg()->accept( *this );
    403                 } else {
    404                         output << "((";
    405                         if ( castExpr->get_results().empty() ) {
    406                                 output << "void" ;
    407                         } else {
    408                                 output << genType( castExpr->get_results().front(), "" );
    409                         } // if
     525        void CodeGenerator::visit( CastExpr * castExpr ) {
     526                extension( castExpr );
     527                output << "(";
     528                if ( castExpr->get_results().empty() ) {
     529                        output << "(void)" ;
     530                } else if ( ! castExpr->get_results().front()->get_isLvalue() ) {
     531                        // at least one result type of cast, but not an lvalue
     532                        output << "(";
     533                        output << genType( castExpr->get_results().front(), "" );
    410534                        output << ")";
    411                         castExpr->get_arg()->accept( *this );
    412                         output << ")";                 
    413                 }
    414         }
    415  
    416         void CodeGenerator::visit( UntypedMemberExpr *memberExpr ) {
     535                } else {
     536                        // otherwise, the cast is to an lvalue type, so the cast should be dropped, since the result of a cast is
     537                        // never an lvalue in C
     538                } // if
     539                castExpr->get_arg()->accept( *this );
     540                output << ")";
     541        }
     542
     543        void CodeGenerator::visit( UntypedMemberExpr * memberExpr ) {
    417544                assert( false );
    418545        }
    419  
    420         void CodeGenerator::visit( MemberExpr *memberExpr ) {
     546
     547        void CodeGenerator::visit( MemberExpr * memberExpr ) {
     548                extension( memberExpr );
    421549                memberExpr->get_aggregate()->accept( *this );
    422550                output << "." << mangleName( memberExpr->get_member() );
    423551        }
    424  
    425         void CodeGenerator::visit( VariableExpr *variableExpr ) {
     552
     553        void CodeGenerator::visit( VariableExpr * variableExpr ) {
     554                extension( variableExpr );
    426555                OperatorInfo opInfo;
    427556                if ( variableExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( variableExpr->get_var()->get_name(), opInfo ) && opInfo.type == OT_CONSTANT ) {
     
    431560                } // if
    432561        }
    433  
    434         void CodeGenerator::visit( ConstantExpr *constantExpr ) {
     562
     563        void CodeGenerator::visit( ConstantExpr * constantExpr ) {
    435564                assert( constantExpr->get_constant() );
     565                extension( constantExpr );
    436566                constantExpr->get_constant()->accept( *this );
    437567        }
    438  
    439         void CodeGenerator::visit( SizeofExpr *sizeofExpr ) {
     568
     569        void CodeGenerator::visit( SizeofExpr * sizeofExpr ) {
     570                extension( sizeofExpr );
    440571                output << "sizeof(";
    441572                if ( sizeofExpr->get_isType() ) {
     
    446577                output << ")";
    447578        }
    448  
    449         void CodeGenerator::visit( LogicalExpr *logicalExpr ) {
     579
     580        void CodeGenerator::visit( AlignofExpr * alignofExpr ) {
     581                // use GCC extension to avoid bumping std to C11
     582                extension( alignofExpr );
     583                output << "__alignof__(";
     584                if ( alignofExpr->get_isType() ) {
     585                        output << genType( alignofExpr->get_type(), "" );
     586                } else {
     587                        alignofExpr->get_expr()->accept( *this );
     588                } // if
     589                output << ")";
     590        }
     591
     592        void CodeGenerator::visit( UntypedOffsetofExpr * offsetofExpr ) {
     593                assert( false && "UntypedOffsetofExpr should not reach code generation." );
     594        }
     595
     596        void CodeGenerator::visit( OffsetofExpr * offsetofExpr ) {
     597                // use GCC builtin
     598                output << "__builtin_offsetof(";
     599                output << genType( offsetofExpr->get_type(), "" );
     600                output << ", " << mangleName( offsetofExpr->get_member() );
     601                output << ")";
     602        }
     603
     604        void CodeGenerator::visit( OffsetPackExpr * offsetPackExpr ) {
     605                assert( false && "OffsetPackExpr should not reach code generation." );
     606        }
     607
     608        void CodeGenerator::visit( LogicalExpr * logicalExpr ) {
     609                extension( logicalExpr );
    450610                output << "(";
    451611                logicalExpr->get_arg1()->accept( *this );
     
    458618                output << ")";
    459619        }
    460  
    461         void CodeGenerator::visit( ConditionalExpr *conditionalExpr ) {
     620
     621        void CodeGenerator::visit( ConditionalExpr * conditionalExpr ) {
     622                extension( conditionalExpr );
    462623                output << "(";
    463624                conditionalExpr->get_arg1()->accept( *this );
     
    468629                output << ")";
    469630        }
    470  
    471         void CodeGenerator::visit( CommaExpr *commaExpr ) {
     631
     632        void CodeGenerator::visit( CommaExpr * commaExpr ) {
     633                extension( commaExpr );
    472634                output << "(";
    473635                commaExpr->get_arg1()->accept( *this );
     
    476638                output << ")";
    477639        }
    478  
    479         void CodeGenerator::visit( TupleExpr *tupleExpr ) {}
    480  
    481         void CodeGenerator::visit( TypeExpr *typeExpr ) {}
    482 
    483         void CodeGenerator::visit( AsmExpr *asmExpr ) {
     640
     641        void CodeGenerator::visit( TupleExpr * tupleExpr ) {}
     642
     643        void CodeGenerator::visit( TypeExpr * typeExpr ) {}
     644
     645        void CodeGenerator::visit( AsmExpr * asmExpr ) {
    484646                if ( asmExpr->get_inout() ) {
    485647                        output << "[ ";
     
    494656
    495657        //*** Statements
    496         void CodeGenerator::visit( CompoundStmt *compoundStmt ) {
     658        void CodeGenerator::visit( CompoundStmt * compoundStmt ) {
    497659                std::list<Statement*> ks = compoundStmt->get_kids();
    498660                output << "{" << endl;
     
    507669                        if ( wantSpacing( *i ) ) {
    508670                                output << endl;
    509                         }
    510                 }
    511                 cur_indent -= CodeGenerator::tabsize; 
     671                        } // if
     672                } // for
     673                cur_indent -= CodeGenerator::tabsize;
    512674
    513675                output << indent << "}";
    514676        }
    515677
    516         void CodeGenerator::visit( ExprStmt *exprStmt ) {
    517                 // I don't see why this check is necessary.
    518                 // If this starts to cause problems then put it back in,
    519                 // with an explanation
     678        void CodeGenerator::visit( ExprStmt * exprStmt ) {
    520679                assert( exprStmt );
    521 
    522                 // if ( exprStmt != 0 ) {
    523                 exprStmt->get_expr()->accept( *this );
    524                 output << ";" ;
    525                 // } // if
    526         }
    527 
    528         void CodeGenerator::visit( AsmStmt *asmStmt ) {
     680                // cast the top-level expression to void to reduce gcc warnings.
     681                Expression * expr = new CastExpr( exprStmt->get_expr() );
     682                expr->accept( *this );
     683                output << ";";
     684        }
     685
     686        void CodeGenerator::visit( AsmStmt * asmStmt ) {
    529687                output << "asm ";
    530688                if ( asmStmt->get_voltile() ) output << "volatile ";
     
    549707        }
    550708
    551         void CodeGenerator::visit( IfStmt *ifStmt ) {
     709        void CodeGenerator::visit( IfStmt * ifStmt ) {
    552710                output << "if ( ";
    553711                ifStmt->get_condition()->accept( *this );
     
    562720        }
    563721
    564         void CodeGenerator::visit( SwitchStmt *switchStmt ) {
     722        void CodeGenerator::visit( SwitchStmt * switchStmt ) {
    565723                output << "switch ( " ;
    566724                switchStmt->get_condition()->accept( *this );
    567725                output << " ) ";
    568                
     726
    569727                output << "{" << std::endl;
    570728                cur_indent += CodeGenerator::tabsize;
    571 
    572                 acceptAll( switchStmt->get_branches(), *this );
    573 
     729                acceptAll( switchStmt->get_statements(), *this );
    574730                cur_indent -= CodeGenerator::tabsize;
    575 
    576731                output << indent << "}";
    577732        }
    578733
    579         void CodeGenerator::visit( CaseStmt *caseStmt ) {
     734        void CodeGenerator::visit( CaseStmt * caseStmt ) {
    580735                output << indent;
    581736                if ( caseStmt->isDefault()) {
     
    586741                } // if
    587742                output << ":\n";
    588                
     743
    589744                std::list<Statement *> sts = caseStmt->get_statements();
    590745
     
    594749                        (*i)->accept( *this );
    595750                        output << endl;
    596                 }
     751                } // for
    597752                cur_indent -= CodeGenerator::tabsize;
    598753        }
    599754
    600         void CodeGenerator::visit( BranchStmt *branchStmt ) {
     755        void CodeGenerator::visit( BranchStmt * branchStmt ) {
    601756                switch ( branchStmt->get_type()) {
    602757                  case BranchStmt::Goto:
    603758                        if ( ! branchStmt->get_target().empty() )
    604759                                output << "goto " << branchStmt->get_target();
    605                         else { 
     760                        else {
    606761                                if ( branchStmt->get_computedTarget() != 0 ) {
    607762                                        output << "goto *";
     
    616771                        output << "continue";
    617772                        break;
    618                 }
     773                } // switch
    619774                output << ";";
    620775        }
    621776
    622777
    623         void CodeGenerator::visit( ReturnStmt *returnStmt ) {
     778        void CodeGenerator::visit( ReturnStmt * returnStmt ) {
    624779                output << "return ";
    625 
    626                 // xxx -- check for null expression;
    627                 if ( returnStmt->get_expr() ) {
    628                         returnStmt->get_expr()->accept( *this );
    629                 } // if
     780                maybeAccept( returnStmt->get_expr(), *this );
    630781                output << ";";
    631782        }
    632783
    633         void CodeGenerator::visit( WhileStmt *whileStmt ) {
    634                 if ( whileStmt->get_isDoWhile() )
     784        void CodeGenerator::visit( WhileStmt * whileStmt ) {
     785                if ( whileStmt->get_isDoWhile() ) {
    635786                        output << "do" ;
    636                 else {
     787                } else {
    637788                        output << "while (" ;
    638789                        whileStmt->get_condition()->accept( *this );
     
    653804        }
    654805
    655         void CodeGenerator::visit( ForStmt *forStmt ) {
    656                 // initialization is always hoisted, so don't
    657                 // bother doing anything with that
     806        void CodeGenerator::visit( ForStmt * forStmt ) {
     807                // initialization is always hoisted, so don't bother doing anything with that
    658808                output << "for (;";
    659809
    660                 if ( forStmt->get_condition() != 0 )
     810                if ( forStmt->get_condition() != 0 ) {
    661811                        forStmt->get_condition()->accept( *this );
     812                } // if
    662813                output << ";";
    663814
    664                 if ( forStmt->get_increment() != 0 )
    665                         forStmt->get_increment()->accept( *this );
     815                if ( forStmt->get_increment() != 0 ) {
     816                        // cast the top-level expression to void to reduce gcc warnings.
     817                        Expression * expr = new CastExpr( forStmt->get_increment() );
     818                        expr->accept( *this );
     819                } // if
    666820                output << ") ";
    667821
     
    672826        }
    673827
    674         void CodeGenerator::visit( NullStmt *nullStmt ) {
     828        void CodeGenerator::visit( NullStmt * nullStmt ) {
    675829                //output << indent << CodeGenerator::printLabels( nullStmt->get_labels() );
    676830                output << "/* null statement */ ;";
    677831        }
    678832
    679         void CodeGenerator::visit( DeclStmt *declStmt ) {
     833        void CodeGenerator::visit( DeclStmt * declStmt ) {
    680834                declStmt->get_decl()->accept( *this );
    681        
     835
    682836                if ( doSemicolon( declStmt->get_decl() ) ) {
    683837                        output << ";";
     
    685839        }
    686840
    687         std::string CodeGenerator::printLabels( std::list< Label > &l ) {
    688                 std::string str( "" );
    689                 l.unique(); // assumes a sorted list. Why not use set?
    690 
    691                 for ( std::list< Label >::iterator i = l.begin(); i != l.end(); i++ )
    692                         str += *i + ": ";
    693 
    694                 return str;
    695         }
    696 
    697         void CodeGenerator::handleStorageClass( Declaration *decl ) {
     841        void CodeGenerator::handleStorageClass( Declaration * decl ) {
    698842                switch ( decl->get_storageClass() ) {
    699843                  case DeclarationNode::Extern:
  • src/CodeGen/CodeGenerator.h

    r679864e1 r242d458  
    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
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 14:27:14 2015
    13 // Update Count     : 27
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug  4 13:37:07 2016
     13// Update Count     : 38
    1414//
    1515
     
    1919#include <list>
    2020
     21#include "SynTree/Declaration.h"
    2122#include "SynTree/SynTree.h"
    2223#include "SynTree/Visitor.h"
     24
    2325#include "SymTab/Indexer.h"
    2426
     
    3840                virtual void visit( UnionDecl *aggregateDecl );
    3941                virtual void visit( EnumDecl *aggregateDecl );
    40                 virtual void visit( ContextDecl *aggregateDecl );
     42                virtual void visit( TraitDecl *aggregateDecl );
    4143                virtual void visit( TypedefDecl *typeDecl );
    4244                virtual void visit( TypeDecl *typeDecl );
     
    5254                virtual void visit( ApplicationExpr *applicationExpr );
    5355                virtual void visit( UntypedExpr *untypedExpr );
     56                virtual void visit( RangeExpr * rangeExpr );
    5457                virtual void visit( NameExpr *nameExpr );
    5558                virtual void visit( AddressExpr *addressExpr );
     
    5861                virtual void visit( MemberExpr *memberExpr );
    5962                virtual void visit( VariableExpr *variableExpr );
    60                 virtual void visit( ConstantExpr *constantExpr ); 
     63                virtual void visit( ConstantExpr *constantExpr );
    6164                virtual void visit( SizeofExpr *sizeofExpr );
     65                virtual void visit( AlignofExpr *alignofExpr );
     66                virtual void visit( UntypedOffsetofExpr *offsetofExpr );
     67                virtual void visit( OffsetofExpr *offsetofExpr );
     68                virtual void visit( OffsetPackExpr *offsetPackExpr );
    6269                virtual void visit( LogicalExpr *logicalExpr );
    6370                virtual void visit( ConditionalExpr *conditionalExpr );
     
    7986                virtual void visit( ForStmt * );
    8087                virtual void visit( NullStmt * );
    81                 virtual void visit( DeclStmt * );
     88                virtual void visit( DeclStmt * );
     89
     90                void genAttributes( std::list< Attribute * > & attributes );
    8291
    8392                template< class Iterator > void genCommaList( Iterator begin, Iterator end );
     
    8695                        Indenter(CodeGenerator &cg) : cg(cg) {}
    8796                        CodeGenerator & cg;
    88                         std::ostream& operator()(std::ostream & os);
     97                        std::ostream& operator()(std::ostream & os) const;
    8998                };
     99
     100                struct LabelPrinter {
     101                        LabelPrinter(CodeGenerator &cg) : cg(cg), labels( 0 ) {}
     102                        LabelPrinter & operator()( std::list< Label > & l );
     103                        CodeGenerator & cg;
     104                        std::list< Label > * labels;
     105                };
     106
     107                void extension( Expression *expr );
     108                void extension( Declaration *decl );
    90109          private:
    91110
     
    94113                bool insideFunction;
    95114                std::ostream &output;
     115                LabelPrinter printLabels;
    96116
    97117                void printDesignators( std::list< Expression * > & );
    98                 static std::string printLabels ( std::list < Label > & );
    99118                void handleStorageClass( Declaration *decl );
    100119                void handleAggregate( AggregateDecl *aggDecl );
    101120                void handleTypedef( NamedTypeDecl *namedType );
     121        }; // CodeGenerator
    102122
    103         };
    104        
    105123        template< class Iterator >
    106124        void CodeGenerator::genCommaList( Iterator begin, Iterator end ) {
     
    113131                } // for
    114132        }
    115  
     133
    116134        inline bool doSemicolon( Declaration* decl ) {
    117135                if ( FunctionDecl* func = dynamic_cast< FunctionDecl* >( decl ) ) {
  • src/CodeGen/FixNames.cc

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

    r679864e1 r242d458  
    1919#include "GenType.h"
    2020#include "CodeGenerator.h"
     21
     22#include "SynTree/Declaration.h"
     23#include "SynTree/Expression.h"
     24#include "SynTree/Type.h"
    2125#include "SynTree/Visitor.h"
    22 #include "SynTree/Type.h"
    23 #include "SynTree/Expression.h"
    2426
    2527namespace CodeGen {
     
    3941                virtual void visit( EnumInstType *enumInst );
    4042                virtual void visit( TypeInstType *typeInst );
     43                virtual void visit( VarArgsType *varArgsType );
    4144 
    4245          private:
     
    191194        }
    192195
     196        void GenType::visit( VarArgsType *varArgsType ) {
     197                typeString = "__builtin_va_list " + typeString;
     198                handleQualifiers( varArgsType );
     199        }
     200
    193201        void GenType::handleQualifiers( Type *type ) {
    194202                if ( type->get_isConst() ) {
  • src/CodeGen/OperatorTable.cc

    r679864e1 r242d458  
    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
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Oct 06 15:26:34 2015
     12// Last Modified On : Thu Apr 14 16:48:27 2016
    1313// Update Count     : 9
    1414//
     
    2121                const OperatorInfo tableValues[] = {
    2222                        {       "?[?]",         "",             "_operator_index",                              OT_INDEX                        },
    23                         {       "?{}",          "",             "_constructor",                                 OT_CTOR                         },
    24                         {       "^?{}",         "",             "_destructor",                                  OT_DTOR                         }, // ~?{}, -?{}, !?{}, $?{}, ??{}, ^?{}, ?destroy, ?delete
     23                        {       "?{}",          "=",            "_constructor",                                 OT_CTOR                         },
     24                        {       "^?{}",         "",             "_destructor",                                  OT_DTOR                         },
    2525                        {       "?()",          "",             "_operator_call",                               OT_CALL                         },
    2626                        {       "?++",          "++",   "_operator_postincr",                   OT_POSTFIXASSIGN        },
  • src/Common/utility.h

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

    r679864e1 r242d458  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 15:25:19 2015
    13 // Update Count     : 2
     12// Last Modified On : Mon Jan 25 21:22:13 2016
     13// Update Count     : 3
    1414//
    1515
     
    1818
    1919#include "SynTree/Mutator.h"
    20 #include "utility.h"
     20#include "Common/utility.h"
    2121
    2222namespace ControlStruct {
  • src/ControlStruct/LabelFixer.cc

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

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // LabelFixer.h -- 
     7// LabelFixer.h --
    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 : Tue Jul 28 13:09:02 2015
    13 // Update Count     : 31
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jul 12 17:36:16 2016
     13// Update Count     : 33
    1414//
    1515
     
    1717#define LABEL_FIXER_H
    1818
    19 #include "utility.h"
     19#include "Common/utility.h"
    2020#include "SynTree/SynTree.h"
    2121#include "SynTree/Visitor.h"
     22#include "SynTree/Label.h"
    2223#include "LabelGenerator.h"
    23 
    2424#include <map>
    2525
     
    4646                virtual void visit( ForStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    4747                virtual void visit( SwitchStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    48                 virtual void visit( ChooseStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    49                 virtual void visit( FallthruStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    5048                virtual void visit( CaseStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    5149                virtual void visit( ReturnStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     
    7472
    7573                  private:
    76                         Label label; 
     74                        Label label;
    7775                        Statement *definition;
    7876                };
    79                  
     77
    8078                std::map < Label, Entry *> labelTable;
    8179                LabelGenerator *generator;
  • src/ControlStruct/LabelGenerator.cc

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

    r679864e1 r242d458  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 15:33:47 2015
    13 // Update Count     : 3
     12// Last Modified On : Mon Jan 25 21:22:30 2016
     13// Update Count     : 4
    1414//
    1515
     
    2121#include "SynTree/Statement.h"
    2222
    23 #include "utility.h"
     23#include "Common/utility.h"
    2424
    2525namespace ControlStruct {
  • src/ControlStruct/MLEMutator.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // MLEMutator.cc -- 
     7// MLEMutator.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 : Mon Jul 20 13:58:35 2015
    13 // Update Count     : 176
    14 //
    15 
    16 // NOTE: There are two known subtle differences from the code that uC++
    17 // generates for the same input
    18 // -CFA puts the break label inside at the end of a switch, uC++ puts it after
    19 // -CFA puts the break label after a block, uC++ puts it inside at the end
    20 // we don't yet know if these differences are important, but if they are then
    21 // the fix would go in this file, since this is where these labels are generated.
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug  4 11:21:32 2016
     13// Update Count     : 202
     14//
     15
     16// NOTE: There are two known subtle differences from the code that uC++ generates for the same input
     17//   -CFA puts the break label inside at the end of a switch, uC++ puts it after
     18//   -CFA puts the break label after a block, uC++ puts it inside at the end
     19// It is unclear if these differences are important, but if they are, then the fix would go in this file, since this is
     20// where these labels are generated.
    2221
    2322#include <cassert>
     
    2726#include "SynTree/Statement.h"
    2827#include "SynTree/Expression.h"
     28#include "SynTree/Attribute.h"
    2929
    3030namespace ControlStruct {
     
    3333                targetTable = 0;
    3434        }
    35 
    36         // break labels have to come after the statement they break out of,
    37         // so mutate a statement, then if they inform us through the breakLabel field
    38         // tha they need a place to jump to on a break statement, add the break label
    39         // to the body of statements
     35        namespace {
     36                Statement * isLoop( Statement * stmt ) { return dynamic_cast< WhileStmt * >( stmt ) ? stmt : dynamic_cast< ForStmt * >( stmt ) ? stmt : 0; }
     37        }
     38
     39        // break labels have to come after the statement they break out of, so mutate a statement, then if they inform us
     40        // through the breakLabel field tha they need a place to jump to on a break statement, add the break label to the
     41        // body of statements
    4042        void MLEMutator::fixBlock( std::list< Statement * > &kids ) {
    4143                for ( std::list< Statement * >::iterator k = kids.begin(); k != kids.end(); k++ ) {
     
    4446                        if ( ! get_breakLabel().empty() ) {
    4547                                std::list< Statement * >::iterator next = k+1;
    46                                 if ( next == kids.end() ) {
    47                                         std::list<Label> ls; ls.push_back( get_breakLabel() );
    48                                         kids.push_back( new NullStmt( ls ) );
    49                                 } else {
    50                                         (*next)->get_labels().push_back( get_breakLabel() );
    51                                 }
    52 
     48                                std::list<Label> ls; ls.push_back( get_breakLabel() );
     49                                kids.insert( next, new NullStmt( ls ) );
    5350                                set_breakLabel("");
    5451                        } // if
     
    6057                if ( labeledBlock ) {
    6158                        Label brkLabel = generator->newLabel("blockBreak");
    62                         enclosingBlocks.push_back( Entry( cmpndStmt, brkLabel ) );
    63                 } // if
    64 
    65                 // a child statement may set the break label
    66                 // - if they do, attach it to the next statement
     59                        enclosingControlStructures.push_back( Entry( cmpndStmt, brkLabel ) );
     60                } // if
     61
     62                // a child statement may set the break label - if they do, attach it to the next statement
    6763                std::list< Statement * > &kids = cmpndStmt->get_kids();
    6864                fixBlock( kids );
    6965
    7066                if ( labeledBlock ) {
    71                         assert( ! enclosingBlocks.empty() );
    72                         if ( ! enclosingBlocks.back().useBreakExit().empty() ) {
    73                                 set_breakLabel( enclosingBlocks.back().useBreakExit() );
    74                         }
    75                         enclosingBlocks.pop_back();
     67                        assert( ! enclosingControlStructures.empty() );
     68                        if ( ! enclosingControlStructures.back().useBreakExit().empty() ) {
     69                                set_breakLabel( enclosingControlStructures.back().useBreakExit() );
     70                        } // if
     71                        enclosingControlStructures.pop_back();
    7672                } // if
    7773
     
    8177        template< typename LoopClass >
    8278        Statement *MLEMutator::handleLoopStmt( LoopClass *loopStmt ) {
    83                 // remember this as the most recent enclosing loop, then mutate
    84                 // the body of the loop -- this will determine whether brkLabel
    85                 // and contLabel are used with branch statements
    86                 // and will recursively do the same to nested loops
     79                // remember this as the most recent enclosing loop, then mutate the body of the loop -- this will determine
     80                // whether brkLabel and contLabel are used with branch statements and will recursively do the same to nested
     81                // loops
    8782                Label brkLabel = generator->newLabel("loopBreak");
    8883                Label contLabel = generator->newLabel("loopContinue");
    89                 enclosingLoops.push_back( Entry( loopStmt, brkLabel, contLabel ) );
     84                enclosingControlStructures.push_back( Entry( loopStmt, brkLabel, contLabel ) );
    9085                loopStmt->set_body ( loopStmt->get_body()->acceptMutator( *this ) );
    9186
     87                Entry &e = enclosingControlStructures.back();
    9288                // sanity check that the enclosing loops have been popped correctly
    93                 Entry &e = enclosingLoops.back();
    9489                assert ( e == loopStmt );
    9590
    96                 // this will take the necessary steps to add definitions of the previous
    97                 // two labels, if they are used.
     91                // this will take the necessary steps to add definitions of the previous two labels, if they are used.
    9892                loopStmt->set_body( mutateLoop( loopStmt->get_body(), e ) );
    99                 enclosingLoops.pop_back();
     93                enclosingControlStructures.pop_back();
    10094
    10195                return loopStmt;
     
    109103        }
    110104
     105        template< typename IfClass >
     106        Statement *MLEMutator::handleIfStmt( IfClass *ifStmt ) {
     107                // generate a label for breaking out of a labeled if
     108                bool labeledBlock = !(ifStmt->get_labels().empty());
     109                if ( labeledBlock ) {
     110                        Label brkLabel = generator->newLabel("blockBreak");
     111                        enclosingControlStructures.push_back( Entry( ifStmt, brkLabel ) );
     112                } // if
     113
     114                Parent::mutate( ifStmt );
     115               
     116                if ( labeledBlock ) {
     117                        if ( ! enclosingControlStructures.back().useBreakExit().empty() ) {
     118                                set_breakLabel( enclosingControlStructures.back().useBreakExit() );
     119                        } // if
     120                        enclosingControlStructures.pop_back();
     121                } // if
     122                return ifStmt;
     123        }
     124
    111125        template< typename SwitchClass >
    112126        Statement *MLEMutator::handleSwitchStmt( SwitchClass *switchStmt ) {
    113                 // generate a label for breaking out of a labeled switch 
     127                // generate a label for breaking out of a labeled switch
    114128                Label brkLabel = generator->newLabel("switchBreak");
    115                 enclosingSwitches.push_back( Entry(switchStmt, brkLabel) );
    116                 mutateAll( switchStmt->get_branches(), *this );
    117 
    118                 Entry &e = enclosingSwitches.back();
     129                enclosingControlStructures.push_back( Entry(switchStmt, brkLabel) );
     130                mutateAll( switchStmt->get_statements(), *this );
     131
     132                Entry &e = enclosingControlStructures.back();
    119133                assert ( e == switchStmt );
    120134
    121135                // only generate break label if labeled break is used
    122                 if (e.isBreakUsed()) {
    123                         // for the purposes of keeping switch statements uniform (i.e. all statements that are
    124                         // direct children of a switch should be CastStmts), append the exit label + break to the
    125                         // last case statement; create a default case if there are no cases
    126                         std::list< Statement * > &branches = switchStmt->get_branches();
    127                         if ( branches.empty() ) {
    128                                 branches.push_back( CaseStmt::makeDefault() );
    129                         }
    130 
    131                         if ( CaseStmt * c = dynamic_cast< CaseStmt * >( branches.back() ) ) {
     136                if ( e.isBreakUsed() ) {
     137                        // for the purposes of keeping switch statements uniform (i.e. all statements that are direct children of a
     138                        // switch should be CastStmts), append the exit label + break to the last case statement; create a default
     139                        // case if there are no cases
     140                        std::list< Statement * > &statements = switchStmt->get_statements();
     141                        if ( statements.empty() ) {
     142                                statements.push_back( CaseStmt::makeDefault() );
     143                        } // if
     144
     145                        if ( CaseStmt * c = dynamic_cast< CaseStmt * >( statements.back() ) ) {
    132146                                std::list<Label> temp; temp.push_back( brkLabel );
    133                                 c->get_statements().push_back( new BranchStmt( temp, Label(""), BranchStmt::Break ) );
    134                         } else assert(0); // as of this point, all branches of a switch are still CaseStmts
    135                 }
    136 
    137                 assert ( enclosingSwitches.back() == switchStmt );
    138                 enclosingSwitches.pop_back();
     147                                c->get_statements().push_back( new BranchStmt( temp, Label("brkLabel"), BranchStmt::Break ) );
     148                        } else assert(0); // as of this point, all statements of a switch are still CaseStmts
     149                } // if
     150
     151                assert ( enclosingControlStructures.back() == switchStmt );
     152                enclosingControlStructures.pop_back();
    139153                return switchStmt;
    140154        }
     
    143157                std::string originalTarget = branchStmt->get_originalTarget();
    144158
    145                 if ( branchStmt->get_type() == BranchStmt::Goto )
     159                std::list< Entry >::reverse_iterator targetEntry;
     160                if ( branchStmt->get_type() == BranchStmt::Goto ) {
    146161                        return branchStmt;
    147 
    148                 // test if continue target is a loop
    149                 if ( branchStmt->get_type() == BranchStmt::Continue) {
    150                         if ( enclosingLoops.empty() ) {
    151                                 throw SemanticError( "'continue' outside a loop" );
    152                         } else if ( branchStmt->get_target() != "" && std::find( enclosingLoops.begin(), enclosingLoops.end(), (*targetTable)[branchStmt->get_target()] ) == enclosingLoops.end() ) {
    153                                 throw SemanticError( "'continue' target label must be an enclosing loop: " + originalTarget );
    154                         }
    155                 }
    156 
    157                 if ( branchStmt->get_type() == BranchStmt::Break && (enclosingLoops.empty() && enclosingSwitches.empty() && enclosingBlocks.empty() ) )
    158                         throw SemanticError( "'break' outside a loop or switch" );
    159 
    160                 if ( branchStmt->get_target() == "" ) return branchStmt;
    161 
    162                 if ( targetTable->find( branchStmt->get_target() ) == targetTable->end() )
     162                } else if ( branchStmt->get_type() == BranchStmt::Continue) {
     163                        // continue target must be a loop
     164                        if ( branchStmt->get_target() == "" ) {
     165                                targetEntry = std::find_if( enclosingControlStructures.rbegin(), enclosingControlStructures.rend(), [](Entry &e) { return isLoop( e.get_controlStructure() ); } );
     166                        } else {
     167                                // labelled continue - lookup label in table ot find attached control structure
     168                                targetEntry = std::find( enclosingControlStructures.rbegin(), enclosingControlStructures.rend(), (*targetTable)[branchStmt->get_target()] );
     169                        } // if
     170                        if ( targetEntry == enclosingControlStructures.rend() || ! isLoop( targetEntry->get_controlStructure() ) ) {
     171                                throw SemanticError( "'continue' target must be an enclosing loop: " + originalTarget );
     172                        } // if
     173                } else if ( branchStmt->get_type() == BranchStmt::Break ) {
     174                        if ( enclosingControlStructures.empty() ) throw SemanticError( "'break' outside a loop, switch, or labelled block" );
     175                        targetEntry = enclosingControlStructures.rbegin();
     176                } else {
     177                        assert( false );
     178                } // if
     179
     180                if ( branchStmt->get_target() != "" && targetTable->find( branchStmt->get_target() ) == targetTable->end() ) {
    163181                        throw SemanticError("The label defined in the exit loop statement does not exist: " + originalTarget );  // shouldn't happen (since that's already checked)
    164 
    165                 std::list< Entry >::iterator check;
    166                 if ( ( check = std::find( enclosingLoops.begin(), enclosingLoops.end(), (*targetTable)[branchStmt->get_target()] ) ) == enclosingLoops.end() )
    167                         // not in loop, checking if in block
    168                         if ( (check = std::find( enclosingBlocks.begin(), enclosingBlocks.end(), (*targetTable)[branchStmt->get_target()] )) == enclosingBlocks.end() )
    169                                 // neither in loop nor in block, checking if in switch/choose
    170                                 if ( (check = std::find( enclosingSwitches.begin(), enclosingSwitches.end(), (*targetTable)[branchStmt->get_target()] )) == enclosingSwitches.end() )
    171                                         throw SemanticError("The target specified in the exit loop statement does not correspond to an enclosing control structure: " + originalTarget );
    172 
    173                 // what about exiting innermost block or switch???
    174                 if ( enclosingLoops.back() == (*check) )
    175                         return branchStmt;                              // exit the innermost loop (labels unnecessary)
     182                } // if
    176183
    177184                // branch error checks, get the appropriate label name and create a goto
     
    179186                switch ( branchStmt->get_type() ) {
    180187                  case BranchStmt::Break:
    181                                 assert( check->useBreakExit() != "");
    182                                 exitLabel = check->useBreakExit();
     188                                assert( targetEntry->useBreakExit() != "");
     189                                exitLabel = targetEntry->useBreakExit();
    183190                                break;
    184191                  case BranchStmt::Continue:
    185                                 assert( check->useContExit() != "");
    186                                 exitLabel = check->useContExit();
     192                                assert( targetEntry->useContExit() != "");
     193                                exitLabel = targetEntry->useContExit();
    187194                                break;
    188195                  default:
     
    190197                } // switch
    191198
    192                 return new BranchStmt( std::list<Label>(), exitLabel, BranchStmt::Goto );
     199                if ( branchStmt->get_target() == "" && branchStmt->get_type() != BranchStmt::Continue ) {
     200                        // unlabelled break/continue - can keep branch as break/continue for extra semantic information, but add
     201                        // exitLabel as its destination so that label passes can easily determine where the break/continue goes to
     202                        branchStmt->set_target( exitLabel );
     203                        return branchStmt;
     204                } else {
     205                        // labelled break/continue - can't easily emulate this with break and continue, so transform into a goto
     206                        delete branchStmt;
     207                        return new BranchStmt( std::list<Label>(), exitLabel, BranchStmt::Goto );
     208                } // if
    193209        }
    194210
     
    206222                        // continue label goes in the body as the last statement
    207223                        std::list< Label > labels; labels.push_back( e.useContExit() );
    208                         newBody->get_kids().push_back( new NullStmt( labels ) );                       
    209                 }
     224                        newBody->get_kids().push_back( new NullStmt( labels ) );
     225                } // if
    210226
    211227                if ( e.isBreakUsed() ) {
    212                         // break label goes after the loop -- it'll get set by the
    213                         // outer mutator if we do this
    214                         set_breakLabel( e.useBreakExit() );                     
    215                 }
     228                        // break label goes after the loop -- it'll get set by the outer mutator if we do this
     229                        set_breakLabel( e.useBreakExit() );
     230                } // if
    216231
    217232                return newBody;
     
    226241        }
    227242
     243        Statement *MLEMutator::mutate( IfStmt *ifStmt ) {
     244                return handleIfStmt( ifStmt );
     245        }
     246
    228247        Statement *MLEMutator::mutate( SwitchStmt *switchStmt ) {
    229248                return handleSwitchStmt( switchStmt );
    230249        }
    231 
    232         Statement *MLEMutator::mutate( ChooseStmt *switchStmt ) {
    233                 return handleSwitchStmt( switchStmt );         
    234         }
    235 
    236250} // namespace ControlStruct
    237251
  • src/ControlStruct/MLEMutator.h

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // MLEMutator.h -- 
     7// MLEMutator.h --
    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 : Wed Jun 03 15:06:36 2015
    13 // Update Count     : 25
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jul 12 17:37:01 2016
     13// Update Count     : 34
    1414//
    1515
     
    2020#include <list>
    2121
    22 #include "utility.h"
     22#include "Common/utility.h"
    2323#include "SynTree/SynTree.h"
    2424#include "SynTree/Mutator.h"
     25#include "SynTree/Label.h"
    2526
    2627#include "LabelGenerator.h"
     
    2930        class MLEMutator : public Mutator {
    3031                class Entry;
     32                typedef Mutator Parent;
    3133          public:
    3234                MLEMutator( std::map<Label, Statement *> *t, LabelGenerator *gen = 0 ) : targetTable( t ), breakLabel(std::string("")), generator( gen ) {}
    3335                ~MLEMutator();
    3436
    35                 CompoundStmt *mutate( CompoundStmt *cmpndStmt );
    36                 Statement *mutate( WhileStmt *whileStmt );
    37                 Statement *mutate( ForStmt *forStmt );
    38                 Statement *mutate( BranchStmt *branchStmt ) throw ( SemanticError );
    39 
    40                 Statement *mutate( CaseStmt *caseStmt );
    41                 Statement *mutate( SwitchStmt *switchStmt );
    42                 Statement *mutate( ChooseStmt *switchStmt );
     37                virtual CompoundStmt *mutate( CompoundStmt *cmpndStmt ) override;
     38                virtual Statement *mutate( WhileStmt *whileStmt ) override;
     39                virtual Statement *mutate( ForStmt *forStmt ) override;
     40                virtual Statement *mutate( BranchStmt *branchStmt ) throw ( SemanticError ) override;
     41                virtual Statement *mutate( CaseStmt *caseStmt ) override;
     42                virtual Statement *mutate( IfStmt *ifStmt ) override;
     43                virtual Statement *mutate( SwitchStmt *switchStmt ) override;
    4344
    4445                Statement *mutateLoop( Statement *bodyLoop, Entry &e );
     
    5556                        bool operator!=( const Statement *stmt ) { return ( loop != stmt ); }
    5657
    57                         bool operator==( const Entry &other ) { return ( loop == other.get_loop() ); }
     58                        bool operator==( const Entry &other ) { return ( loop == other.get_controlStructure() ); }
    5859
    59                         Statement *get_loop() const { return loop; }
     60                        Statement *get_controlStructure() const { return loop; }
    6061
    6162                        Label useContExit() { contUsed = true; return contExit; }
     
    6465                        bool isContUsed() const { return contUsed; }
    6566                        bool isBreakUsed() const { return breakUsed; }
    66 
    6767                  private:
    6868                        Statement *loop;
     
    7272
    7373                std::map< Label, Statement * > *targetTable;
    74                 std::list< Entry > enclosingBlocks, enclosingLoops, enclosingSwitches;
     74                std::list< Entry > enclosingControlStructures;
    7575                Label breakLabel;
    7676                LabelGenerator *generator;
     
    7979                Statement *handleLoopStmt( LoopClass *loopStmt );
    8080
    81                 template< typename SwitchClass >
     81                template< typename IfClass >
     82                Statement *handleIfStmt( IfClass *switchStmt );
     83
     84                template< typename SwitchClass >
    8285                Statement *handleSwitchStmt( SwitchClass *switchStmt );
    8386
  • src/ControlStruct/Mutate.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Mutate.cc -- 
     7// Mutate.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 : Wed Jul 15 14:50:04 2015
    13 // Update Count     : 7
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug  4 11:39:08 2016
     13// Update Count     : 9
    1414//
    1515
     
    2020
    2121#include "Mutate.h"
    22 #include "ChooseMutator.h"
    2322#include "LabelFixer.h"
    2423#include "MLEMutator.h"
    25 #include "CaseRangeMutator.h"
    2624#include "ForExprMutator.h"
    2725#include "LabelTypeChecker.h"
    2826//#include "ExceptMutator.h"
    2927
    30 #include "utility.h"
     28#include "Common/utility.h"
    3129
    3230#include "SynTree/Visitor.h"
     
    3937                ForExprMutator formut;
    4038
    41                 // normalizes label definitions and generates multi-level
    42                 // exit labels
     39                // normalizes label definitions and generates multi-level exit labels
    4340                LabelFixer lfix;
    44 
    45                 // transform choose statements into switch statements
    46                 ChooseMutator chmut;
    47 
    48                 // expand case ranges and turn fallthru into a null statement
    49                 CaseRangeMutator ranges;  // has to run after ChooseMutator
    5041
    5142                //ExceptMutator exc;
     
    5445                mutateAll( translationUnit, formut );
    5546                acceptAll( translationUnit, lfix );
    56                 mutateAll( translationUnit, chmut );
    57                 mutateAll( translationUnit, ranges );
    5847                //mutateAll( translationUnit, exc );
    5948                //acceptAll( translationUnit, lbl );
  • src/ControlStruct/module.mk

    r679864e1 r242d458  
    1111## Created On       : Mon Jun  1 17:49:17 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Mon Jun  1 17:51:45 2015
    14 ## Update Count     : 1
     13## Last Modified On : Thu Aug  4 11:38:06 2016
     14## Update Count     : 3
    1515###############################################################################
    1616
     
    1818        ControlStruct/LabelFixer.cc \
    1919        ControlStruct/MLEMutator.cc \
    20         ControlStruct/CaseRangeMutator.cc \
    2120        ControlStruct/Mutate.cc \
    22         ControlStruct/ChooseMutator.cc \
    2321        ControlStruct/ForExprMutator.cc \
    2422        ControlStruct/LabelTypeChecker.cc
  • src/GenPoly/Box.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Box.cc -- 
     7// Box.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 Aug 11 16:22:35 2015
    13 // Update Count     : 89
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Jun 29 21:43:03 2016
     13// Update Count     : 296
    1414//
    1515
     16#include <algorithm>
     17#include <iterator>
     18#include <list>
     19#include <map>
    1620#include <set>
    1721#include <stack>
    1822#include <string>
    19 #include <iterator>
    20 #include <algorithm>
     23#include <utility>
     24#include <vector>
    2125#include <cassert>
    2226
    2327#include "Box.h"
     28#include "DeclMutator.h"
    2429#include "PolyMutator.h"
    2530#include "FindFunction.h"
     31#include "ScopedMap.h"
     32#include "ScopedSet.h"
    2633#include "ScrubTyVars.h"
    2734
    2835#include "Parser/ParseNode.h"
    2936
    30 #include "SynTree/Type.h"
     37#include "SynTree/Constant.h"
     38#include "SynTree/Declaration.h"
    3139#include "SynTree/Expression.h"
    3240#include "SynTree/Initializer.h"
     41#include "SynTree/Mutator.h"
    3342#include "SynTree/Statement.h"
    34 #include "SynTree/Mutator.h"
     43#include "SynTree/Type.h"
     44#include "SynTree/TypeSubstitution.h"
    3545
    3646#include "ResolvExpr/TypeEnvironment.h"
    37 
     47#include "ResolvExpr/TypeMap.h"
     48#include "ResolvExpr/typeops.h"
     49
     50#include "SymTab/Indexer.h"
    3851#include "SymTab/Mangler.h"
    3952
    40 #include "SemanticError.h"
    41 #include "UniqueName.h"
    42 #include "utility.h"
     53#include "Common/SemanticError.h"
     54#include "Common/UniqueName.h"
     55#include "Common/utility.h"
    4356
    4457#include <ext/functional> // temporary
     
    4861                const std::list<Label> noLabels;
    4962
     63                FunctionType *makeAdapterType( FunctionType *adaptee, const TyVarMap &tyVars );
     64
     65                /// Abstracts type equality for a list of parameter types
     66                struct TypeList {
     67                        TypeList() : params() {}
     68                        TypeList( const std::list< Type* > &_params ) : params() { cloneAll(_params, params); }
     69                        TypeList( std::list< Type* > &&_params ) : params( _params ) {}
     70
     71                        TypeList( const TypeList &that ) : params() { cloneAll(that.params, params); }
     72                        TypeList( TypeList &&that ) : params( std::move( that.params ) ) {}
     73
     74                        /// Extracts types from a list of TypeExpr*
     75                        TypeList( const std::list< TypeExpr* >& _params ) : params() {
     76                                for ( std::list< TypeExpr* >::const_iterator param = _params.begin(); param != _params.end(); ++param ) {
     77                                        params.push_back( (*param)->get_type()->clone() );
     78                                }
     79                        }
     80
     81                        TypeList& operator= ( const TypeList &that ) {
     82                                deleteAll( params );
     83
     84                                params.clear();
     85                                cloneAll( that.params, params );
     86
     87                                return *this;
     88                        }
     89
     90                        TypeList& operator= ( TypeList &&that ) {
     91                                deleteAll( params );
     92
     93                                params = std::move( that.params );
     94
     95                                return *this;
     96                        }
     97
     98                        ~TypeList() { deleteAll( params ); }
     99
     100                        bool operator== ( const TypeList& that ) const {
     101                                if ( params.size() != that.params.size() ) return false;
     102
     103                                SymTab::Indexer dummy;
     104                                for ( std::list< Type* >::const_iterator it = params.begin(), jt = that.params.begin(); it != params.end(); ++it, ++jt ) {
     105                                        if ( ! ResolvExpr::typesCompatible( *it, *jt, dummy ) ) return false;
     106                                }
     107                                return true;
     108                        }
     109
     110                        std::list< Type* > params;  ///< Instantiation parameters
     111                };
     112
     113                /// Maps a key and a TypeList to the some value, accounting for scope
     114                template< typename Key, typename Value >
     115                class InstantiationMap {
     116                        /// Wraps value for a specific (Key, TypeList) combination
     117                        typedef std::pair< TypeList, Value* > Instantiation;
     118                        /// List of TypeLists paired with their appropriate values
     119                        typedef std::vector< Instantiation > ValueList;
     120                        /// Underlying map type; maps keys to a linear list of corresponding TypeLists and values
     121                        typedef ScopedMap< Key*, ValueList > InnerMap;
     122
     123                        InnerMap instantiations;  ///< instantiations
     124
     125                public:
     126                        /// Starts a new scope
     127                        void beginScope() { instantiations.beginScope(); }
     128
     129                        /// Ends a scope
     130                        void endScope() { instantiations.endScope(); }
     131
     132                        /// Gets the value for the (key, typeList) pair, returns NULL on none such.
     133                        Value *lookup( Key *key, const std::list< TypeExpr* >& params ) const {
     134                                TypeList typeList( params );
     135
     136                                // scan scopes for matches to the key
     137                                for ( typename InnerMap::const_iterator insts = instantiations.find( key ); insts != instantiations.end(); insts = instantiations.findNext( insts, key ) ) {
     138                                        for ( typename ValueList::const_reverse_iterator inst = insts->second.rbegin(); inst != insts->second.rend(); ++inst ) {
     139                                                if ( inst->first == typeList ) return inst->second;
     140                                        }
     141                                }
     142                                // no matching instantiations found
     143                                return 0;
     144                        }
     145
     146                        /// Adds a value for a (key, typeList) pair to the current scope
     147                        void insert( Key *key, const std::list< TypeExpr* > &params, Value *value ) {
     148                                instantiations[ key ].push_back( Instantiation( TypeList( params ), value ) );
     149                        }
     150                };
     151
     152                /// Adds layout-generation functions to polymorphic types
     153                class LayoutFunctionBuilder : public DeclMutator {
     154                        unsigned int functionNesting;  // current level of nested functions
     155                public:
     156                        LayoutFunctionBuilder() : functionNesting( 0 ) {}
     157
     158                        virtual DeclarationWithType *mutate( FunctionDecl *functionDecl );
     159                        virtual Declaration *mutate( StructDecl *structDecl );
     160                        virtual Declaration *mutate( UnionDecl *unionDecl );
     161                };
     162
     163                /// 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
    50164                class Pass1 : public PolyMutator {
    51165                  public:
     
    58172                        virtual Expression *mutate( CommaExpr *commaExpr );
    59173                        virtual Expression *mutate( ConditionalExpr *condExpr );
    60                         virtual Statement *mutate(ReturnStmt *catchStmt);
     174                        virtual Statement * mutate( ReturnStmt *returnStmt );
    61175                        virtual Type *mutate( PointerType *pointerType );
    62                         virtual Type *mutate( FunctionType *pointerType );
    63  
     176                        virtual Type * mutate( FunctionType *functionType );
     177
    64178                        virtual void doBeginScope();
    65179                        virtual void doEndScope();
    66180                  private:
    67                         void passTypeVars( ApplicationExpr *appExpr, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars );
     181                        /// Pass the extra type parameters from polymorphic generic arguments or return types into a function application
     182                        void passArgTypeVars( ApplicationExpr *appExpr, Type *parmType, Type *argBaseType, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars, std::set< std::string > &seenTypes );
     183                        /// passes extra type parameters into a polymorphic function application
     184                        void passTypeVars( ApplicationExpr *appExpr, ReferenceToType *polyRetType, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars );
     185                        /// wraps a function application with a new temporary for the out-parameter return value
    68186                        Expression *addRetParam( ApplicationExpr *appExpr, FunctionType *function, Type *retType, std::list< Expression *>::iterator &arg );
    69                         Expression *addPolyRetParam( ApplicationExpr *appExpr, FunctionType *function, std::string typeName, std::list< Expression *>::iterator &arg );
     187                        /// Replaces all the type parameters of a generic type with their concrete equivalents under the current environment
     188                        void replaceParametersWithConcrete( ApplicationExpr *appExpr, std::list< Expression* >& params );
     189                        /// Replaces a polymorphic type with its concrete equivalant under the current environment (returns itself if concrete).
     190                        /// If `doClone` is set to false, will not clone interior types
     191                        Type *replaceWithConcrete( ApplicationExpr *appExpr, Type *type, bool doClone = true );
     192                        /// wraps a function application returning a polymorphic type with a new temporary for the out-parameter return value
     193                        Expression *addPolyRetParam( ApplicationExpr *appExpr, FunctionType *function, ReferenceToType *polyType, std::list< Expression *>::iterator &arg );
    70194                        Expression *applyAdapter( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars );
    71195                        void boxParam( Type *formal, Expression *&arg, const TyVarMap &exprTyVars );
    72196                        void boxParams( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars );
    73197                        void addInferredParams( ApplicationExpr *appExpr, FunctionType *functionType, std::list< Expression *>::iterator &arg, const TyVarMap &tyVars );
    74                         void findAssignOps( const std::list< TypeDecl *> &forall );
     198                        /// Stores assignment operators from assertion list in local map of assignment operations
     199                        void findTypeOps( const std::list< TypeDecl *> &forall );
    75200                        void passAdapters( ApplicationExpr *appExpr, FunctionType *functionType, const TyVarMap &exprTyVars );
    76201                        FunctionDecl *makeAdapter( FunctionType *adaptee, FunctionType *realType, const std::string &mangleName, const TyVarMap &tyVars );
     202                        /// Replaces intrinsic operator functions with their arithmetic desugaring
    77203                        Expression *handleIntrinsics( ApplicationExpr *appExpr );
     204                        /// Inserts a new temporary variable into the current scope with an auto-generated name
    78205                        ObjectDecl *makeTemporary( Type *type );
    79206
    80                         typedef std::map< std::string, FunctionDecl *> AdapterMap;
    81                         std::map< std::string, DeclarationWithType *> assignOps;
    82                         std::stack< AdapterMap > adapters;
     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
     211                        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
     215                        ScopedMap< std::string, DeclarationWithType* > adapters;     ///< Set of adapter functions in the current scope
     216
    83217                        DeclarationWithType *retval;
    84218                        bool useRetval;
     
    86220                };
    87221
     222                /// * Moves polymorphic returns in function types to pointer-type parameters
     223                /// * adds type size and assertion parameters to parameter lists
    88224                class Pass2 : public PolyMutator {
    89225                  public:
    90                         Pass2();
    91226                        template< typename DeclClass >
    92227                        DeclClass *handleDecl( DeclClass *decl, Type *type );
     
    97232                        virtual Type *mutate( PointerType *pointerType );
    98233                        virtual Type *mutate( FunctionType *funcType );
     234
    99235                  private:
    100236                        void addAdapters( FunctionType *functionType );
    101  
     237
    102238                        std::map< UniqueId, std::string > adapterName;
    103239                };
    104240
    105                 class Pass3 : public PolyMutator {
    106                   public:
     241                /// Mutator pass that replaces concrete instantiations of generic types with actual struct declarations, scoped appropriately
     242                class GenericInstantiator : public DeclMutator {
     243                        /// Map of (generic type, parameter list) pairs to concrete type instantiations
     244                        InstantiationMap< AggregateDecl, AggregateDecl > instantiations;
     245                        /// Namer for concrete types
     246                        UniqueName typeNamer;
     247
     248                public:
     249                        GenericInstantiator() : DeclMutator(), instantiations(), typeNamer("_conc_") {}
     250
     251                        virtual Type* mutate( StructInstType *inst );
     252                        virtual Type* mutate( UnionInstType *inst );
     253
     254        //              virtual Expression* mutate( MemberExpr *memberExpr );
     255
     256                        virtual void doBeginScope();
     257                        virtual void doEndScope();
     258                private:
     259                        /// Wrap instantiation lookup for structs
     260                        StructDecl* lookup( StructInstType *inst, const std::list< TypeExpr* > &typeSubs ) { return (StructDecl*)instantiations.lookup( inst->get_baseStruct(), typeSubs ); }
     261                        /// Wrap instantiation lookup for unions
     262                        UnionDecl* lookup( UnionInstType *inst, const std::list< TypeExpr* > &typeSubs ) { return (UnionDecl*)instantiations.lookup( inst->get_baseUnion(), typeSubs ); }
     263                        /// Wrap instantiation insertion for structs
     264                        void insert( StructInstType *inst, const std::list< TypeExpr* > &typeSubs, StructDecl *decl ) { instantiations.insert( inst->get_baseStruct(), typeSubs, decl ); }
     265                        /// Wrap instantiation insertion for unions
     266                        void insert( UnionInstType *inst, const std::list< TypeExpr* > &typeSubs, UnionDecl *decl ) { instantiations.insert( inst->get_baseUnion(), typeSubs, decl ); }
     267                };
     268
     269                /// Replaces member and size/align/offsetof expressions on polymorphic generic types with calculated expressions.
     270                /// * Replaces member expressions for polymorphic types with calculated add-field-offset-and-dereference
     271                /// * Calculates polymorphic offsetof expressions from offset array
     272                /// * Inserts dynamic calculation of polymorphic type layouts where needed
     273                class PolyGenericCalculator : public PolyMutator {
     274                public:
    107275                        template< typename DeclClass >
    108276                        DeclClass *handleDecl( DeclClass *decl, Type *type );
     
    114282                        virtual Type *mutate( PointerType *pointerType );
    115283                        virtual Type *mutate( FunctionType *funcType );
     284                        virtual Expression *mutate( MemberExpr *memberExpr );
     285                        virtual Expression *mutate( SizeofExpr *sizeofExpr );
     286                        virtual Expression *mutate( AlignofExpr *alignofExpr );
     287                        virtual Expression *mutate( OffsetofExpr *offsetofExpr );
     288                        virtual Expression *mutate( OffsetPackExpr *offsetPackExpr );
     289
     290                        virtual void doBeginScope();
     291                        virtual void doEndScope();
     292
     293                private:
     294                        /// Makes a new variable in the current scope with the given name, type & optional initializer
     295                        ObjectDecl *makeVar( const std::string &name, Type *type, Initializer *init = 0 );
     296                        /// returns true if the type has a dynamic layout; such a layout will be stored in appropriately-named local variables when the function returns
     297                        bool findGeneric( Type *ty );
     298                        /// adds type parameters to the layout call; will generate the appropriate parameters if needed
     299                        void addOtypeParamsToLayoutCall( UntypedExpr *layoutCall, const std::list< Type* > &otypeParams );
     300
     301                        /// Enters a new scope for type-variables, adding the type variables from ty
     302                        void beginTypeScope( Type *ty );
     303                        /// Exits the type-variable scope
     304                        void endTypeScope();
     305
     306                        ScopedSet< std::string > knownLayouts;          ///< Set of generic type layouts known in the current scope, indexed by sizeofName
     307                        ScopedSet< std::string > knownOffsets;          ///< Set of non-generic types for which the offset array exists in the current scope, indexed by offsetofName
     308                };
     309
     310                /// Replaces initialization of polymorphic values with alloca, declaration of dtype/ftype with appropriate void expression, and sizeof expressions of polymorphic types with the proper variable
     311                class Pass3 : public PolyMutator {
     312                  public:
     313                        template< typename DeclClass >
     314                        DeclClass *handleDecl( DeclClass *decl, Type *type );
     315                        virtual DeclarationWithType *mutate( FunctionDecl *functionDecl );
     316                        virtual ObjectDecl *mutate( ObjectDecl *objectDecl );
     317                        virtual TypedefDecl *mutate( TypedefDecl *objectDecl );
     318                        virtual TypeDecl *mutate( TypeDecl *objectDecl );
     319                        virtual Type *mutate( PointerType *pointerType );
     320                        virtual Type *mutate( FunctionType *funcType );
    116321                  private:
    117322                };
     
    119324        } // anonymous namespace
    120325
    121         void printAllNotBuiltin( const std::list< Declaration *>& translationUnit, std::ostream &os ) {
    122                 for ( std::list< Declaration *>::const_iterator i = translationUnit.begin(); i != translationUnit.end(); ++i ) {
    123                         if ( ! LinkageSpec::isBuiltin( (*i)->get_linkage() ) ) {
    124                                 (*i)->print( os );
    125                                 os << std::endl;
    126                         } // if
     326        /// version of mutateAll with special handling for translation unit so you can check the end of the prelude when debugging
     327        template< typename MutatorType >
     328        inline void mutateTranslationUnit( std::list< Declaration* > &translationUnit, MutatorType &mutator ) {
     329                bool seenIntrinsic = false;
     330                SemanticError errors;
     331                for ( typename std::list< Declaration* >::iterator i = translationUnit.begin(); i != translationUnit.end(); ++i ) {
     332                        try {
     333                                if ( *i ) {
     334                                        if ( (*i)->get_linkage() == LinkageSpec::Intrinsic ) {
     335                                                seenIntrinsic = true;
     336                                        } else if ( seenIntrinsic ) {
     337                                                seenIntrinsic = false; // break on this line when debugging for end of prelude
     338                                        }
     339
     340                                        *i = dynamic_cast< Declaration* >( (*i)->acceptMutator( mutator ) );
     341                                        assert( *i );
     342                                } // if
     343                        } catch( SemanticError &e ) {
     344                                errors.append( e );
     345                        } // try
    127346                } // for
     347                if ( ! errors.isEmpty() ) {
     348                        throw errors;
     349                } // if
    128350        }
    129351
    130352        void box( std::list< Declaration *>& translationUnit ) {
     353                LayoutFunctionBuilder layoutBuilder;
    131354                Pass1 pass1;
    132355                Pass2 pass2;
     356                GenericInstantiator instantiator;
     357                PolyGenericCalculator polyCalculator;
    133358                Pass3 pass3;
    134                 mutateAll( translationUnit, pass1 );
    135                 mutateAll( translationUnit, pass2 );
    136                 mutateAll( translationUnit, pass3 );
     359
     360                layoutBuilder.mutateDeclarationList( translationUnit );
     361                mutateTranslationUnit/*All*/( translationUnit, pass1 );
     362                mutateTranslationUnit/*All*/( translationUnit, pass2 );
     363                instantiator.mutateDeclarationList( translationUnit );
     364                mutateTranslationUnit/*All*/( translationUnit, polyCalculator );
     365                mutateTranslationUnit/*All*/( translationUnit, pass3 );
    137366        }
    138367
     368        ////////////////////////////////// LayoutFunctionBuilder ////////////////////////////////////////////
     369
     370        DeclarationWithType *LayoutFunctionBuilder::mutate( FunctionDecl *functionDecl ) {
     371                functionDecl->set_functionType( maybeMutate( functionDecl->get_functionType(), *this ) );
     372                mutateAll( functionDecl->get_oldDecls(), *this );
     373                ++functionNesting;
     374                functionDecl->set_statements( maybeMutate( functionDecl->get_statements(), *this ) );
     375                --functionNesting;
     376                return functionDecl;
     377        }
     378
     379        /// Get a list of type declarations that will affect a layout function
     380        std::list< TypeDecl* > takeOtypeOnly( std::list< TypeDecl* > &decls ) {
     381                std::list< TypeDecl * > otypeDecls;
     382
     383                for ( std::list< TypeDecl* >::const_iterator decl = decls.begin(); decl != decls.end(); ++decl ) {
     384                        if ( (*decl)->get_kind() == TypeDecl::Any ) {
     385                                otypeDecls.push_back( *decl );
     386                        }
     387                }
     388
     389                return otypeDecls;
     390        }
     391
     392        /// Adds parameters for otype layout to a function type
     393        void addOtypeParams( FunctionType *layoutFnType, std::list< TypeDecl* > &otypeParams ) {
     394                BasicType sizeAlignType( Type::Qualifiers(), BasicType::LongUnsignedInt );
     395
     396                for ( std::list< TypeDecl* >::const_iterator param = otypeParams.begin(); param != otypeParams.end(); ++param ) {
     397                        TypeInstType paramType( Type::Qualifiers(), (*param)->get_name(), *param );
     398                        std::string paramName = mangleType( &paramType );
     399                        layoutFnType->get_parameters().push_back( new ObjectDecl( sizeofName( paramName ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignType.clone(), 0 ) );
     400                        layoutFnType->get_parameters().push_back( new ObjectDecl( alignofName( paramName ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignType.clone(), 0 ) );
     401                }
     402        }
     403
     404        /// Builds a layout function declaration
     405        FunctionDecl *buildLayoutFunctionDecl( AggregateDecl *typeDecl, unsigned int functionNesting, FunctionType *layoutFnType ) {
     406                // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
     407                // because each unit generates copies of the default routines for each aggregate.
     408                FunctionDecl *layoutDecl = new FunctionDecl(
     409                        layoutofName( typeDecl ), functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, layoutFnType, new CompoundStmt( noLabels ), true, false );
     410                layoutDecl->fixUniqueId();
     411                return layoutDecl;
     412        }
     413
     414        /// Makes a unary operation
     415        Expression *makeOp( const std::string &name, Expression *arg ) {
     416                UntypedExpr *expr = new UntypedExpr( new NameExpr( name ) );
     417                expr->get_args().push_back( arg );
     418                return expr;
     419        }
     420
     421        /// Makes a binary operation
     422        Expression *makeOp( const std::string &name, Expression *lhs, Expression *rhs ) {
     423                UntypedExpr *expr = new UntypedExpr( new NameExpr( name ) );
     424                expr->get_args().push_back( lhs );
     425                expr->get_args().push_back( rhs );
     426                return expr;
     427        }
     428
     429        /// Returns the dereference of a local pointer variable
     430        Expression *derefVar( ObjectDecl *var ) {
     431                return makeOp( "*?", new VariableExpr( var ) );
     432        }
     433
     434        /// makes an if-statement with a single-expression if-block and no then block
     435        Statement *makeCond( Expression *cond, Expression *ifPart ) {
     436                return new IfStmt( noLabels, cond, new ExprStmt( noLabels, ifPart ), 0 );
     437        }
     438
     439        /// makes a statement that assigns rhs to lhs if lhs < rhs
     440        Statement *makeAssignMax( Expression *lhs, Expression *rhs ) {
     441                return makeCond( makeOp( "?<?", lhs, rhs ), makeOp( "?=?", lhs->clone(), rhs->clone() ) );
     442        }
     443
     444        /// makes a statement that aligns lhs to rhs (rhs should be an integer power of two)
     445        Statement *makeAlignTo( Expression *lhs, Expression *rhs ) {
     446                // check that the lhs is zeroed out to the level of rhs
     447                Expression *ifCond = makeOp( "?&?", lhs, makeOp( "?-?", rhs, new ConstantExpr( Constant( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), "1" ) ) ) );
     448                // if not aligned, increment to alignment
     449                Expression *ifExpr = makeOp( "?+=?", lhs->clone(), makeOp( "?-?", rhs->clone(), ifCond->clone() ) );
     450                return makeCond( ifCond, ifExpr );
     451        }
     452
     453        /// adds an expression to a compound statement
     454        void addExpr( CompoundStmt *stmts, Expression *expr ) {
     455                stmts->get_kids().push_back( new ExprStmt( noLabels, expr ) );
     456        }
     457
     458        /// adds a statement to a compound statement
     459        void addStmt( CompoundStmt *stmts, Statement *stmt ) {
     460                stmts->get_kids().push_back( stmt );
     461        }
     462
     463        Declaration *LayoutFunctionBuilder::mutate( StructDecl *structDecl ) {
     464                // do not generate layout function for "empty" tag structs
     465                if ( structDecl->get_members().empty() ) return structDecl;
     466
     467                // get parameters that can change layout, exiting early if none
     468                std::list< TypeDecl* > otypeParams = takeOtypeOnly( structDecl->get_parameters() );
     469                if ( otypeParams.empty() ) return structDecl;
     470
     471                // build layout function signature
     472                FunctionType *layoutFnType = new FunctionType( Type::Qualifiers(), false );
     473                BasicType *sizeAlignType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
     474                PointerType *sizeAlignOutType = new PointerType( Type::Qualifiers(), sizeAlignType );
     475
     476                ObjectDecl *sizeParam = new ObjectDecl( sizeofName( structDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType, 0 );
     477                layoutFnType->get_parameters().push_back( sizeParam );
     478                ObjectDecl *alignParam = new ObjectDecl( alignofName( structDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 );
     479                layoutFnType->get_parameters().push_back( alignParam );
     480                ObjectDecl *offsetParam = new ObjectDecl( offsetofName( structDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 );
     481                layoutFnType->get_parameters().push_back( offsetParam );
     482                addOtypeParams( layoutFnType, otypeParams );
     483
     484                // build function decl
     485                FunctionDecl *layoutDecl = buildLayoutFunctionDecl( structDecl, functionNesting, layoutFnType );
     486
     487                // calculate struct layout in function body
     488
     489                // initialize size and alignment to 0 and 1 (will have at least one member to re-edit size
     490                addExpr( layoutDecl->get_statements(), makeOp( "?=?", derefVar( sizeParam ), new ConstantExpr( Constant( sizeAlignType->clone(), "0" ) ) ) );
     491                addExpr( layoutDecl->get_statements(), makeOp( "?=?", derefVar( alignParam ), new ConstantExpr( Constant( sizeAlignType->clone(), "1" ) ) ) );
     492                unsigned long n_members = 0;
     493                bool firstMember = true;
     494                for ( std::list< Declaration* >::const_iterator member = structDecl->get_members().begin(); member != structDecl->get_members().end(); ++member ) {
     495                        DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( *member );
     496                        assert( dwt );
     497                        Type *memberType = dwt->get_type();
     498
     499                        if ( firstMember ) {
     500                                firstMember = false;
     501                        } else {
     502                                // make sure all members after the first (automatically aligned at 0) are properly padded for alignment
     503                                addStmt( layoutDecl->get_statements(), makeAlignTo( derefVar( sizeParam ), new AlignofExpr( memberType->clone() ) ) );
     504                        }
     505
     506                        // 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 ) ) ),
     508                                                                              derefVar( sizeParam ) ) );
     509                        ++n_members;
     510
     511                        // add member size to current size
     512                        addExpr( layoutDecl->get_statements(), makeOp( "?+=?", derefVar( sizeParam ), new SizeofExpr( memberType->clone() ) ) );
     513
     514                        // take max of member alignment and global alignment
     515                        addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( alignParam ), new AlignofExpr( memberType->clone() ) ) );
     516                }
     517                // make sure the type is end-padded to a multiple of its alignment
     518                addStmt( layoutDecl->get_statements(), makeAlignTo( derefVar( sizeParam ), derefVar( alignParam ) ) );
     519
     520                addDeclarationAfter( layoutDecl );
     521                return structDecl;
     522        }
     523
     524        Declaration *LayoutFunctionBuilder::mutate( UnionDecl *unionDecl ) {
     525                // do not generate layout function for "empty" tag unions
     526                if ( unionDecl->get_members().empty() ) return unionDecl;
     527
     528                // get parameters that can change layout, exiting early if none
     529                std::list< TypeDecl* > otypeParams = takeOtypeOnly( unionDecl->get_parameters() );
     530                if ( otypeParams.empty() ) return unionDecl;
     531
     532                // build layout function signature
     533                FunctionType *layoutFnType = new FunctionType( Type::Qualifiers(), false );
     534                BasicType *sizeAlignType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
     535                PointerType *sizeAlignOutType = new PointerType( Type::Qualifiers(), sizeAlignType );
     536
     537                ObjectDecl *sizeParam = new ObjectDecl( sizeofName( unionDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType, 0 );
     538                layoutFnType->get_parameters().push_back( sizeParam );
     539                ObjectDecl *alignParam = new ObjectDecl( alignofName( unionDecl->get_name() ), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, sizeAlignOutType->clone(), 0 );
     540                layoutFnType->get_parameters().push_back( alignParam );
     541                addOtypeParams( layoutFnType, otypeParams );
     542
     543                // build function decl
     544                FunctionDecl *layoutDecl = buildLayoutFunctionDecl( unionDecl, functionNesting, layoutFnType );
     545
     546                // calculate union layout in function body
     547                addExpr( layoutDecl->get_statements(), makeOp( "?=?", derefVar( sizeParam ), new ConstantExpr( Constant( sizeAlignType->clone(), "1" ) ) ) );
     548                addExpr( layoutDecl->get_statements(), makeOp( "?=?", derefVar( alignParam ), new ConstantExpr( Constant( sizeAlignType->clone(), "1" ) ) ) );
     549                for ( std::list< Declaration* >::const_iterator member = unionDecl->get_members().begin(); member != unionDecl->get_members().end(); ++member ) {
     550                        DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( *member );
     551                        assert( dwt );
     552                        Type *memberType = dwt->get_type();
     553
     554                        // take max member size and global size
     555                        addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( sizeParam ), new SizeofExpr( memberType->clone() ) ) );
     556
     557                        // take max of member alignment and global alignment
     558                        addStmt( layoutDecl->get_statements(), makeAssignMax( derefVar( alignParam ), new AlignofExpr( memberType->clone() ) ) );
     559                }
     560                // make sure the type is end-padded to a multiple of its alignment
     561                addStmt( layoutDecl->get_statements(), makeAlignTo( derefVar( sizeParam ), derefVar( alignParam ) ) );
     562
     563                addDeclarationAfter( layoutDecl );
     564                return unionDecl;
     565        }
     566
    139567        ////////////////////////////////////////// Pass1 ////////////////////////////////////////////////////
    140568
    141569        namespace {
     570                std::string makePolyMonoSuffix( FunctionType * function, const TyVarMap &tyVars ) {
     571                        std::stringstream name;
     572
     573                        // NOTE: this function previously used isPolyObj, which failed to produce
     574                        // the correct thing in some situations. It's not clear to me why this wasn't working.
     575
     576                        // if the return type or a parameter type involved polymorphic types, then the adapter will need
     577                        // to take those polymorphic types as pointers. Therefore, there can be two different functions
     578                        // with the same mangled name, so we need to further mangle the names.
     579                        for ( std::list< DeclarationWithType *>::iterator retval = function->get_returnVals().begin(); retval != function->get_returnVals().end(); ++retval ) {
     580                                if ( isPolyType( (*retval)->get_type(), tyVars ) ) {
     581                                        name << "P";
     582                                } else {
     583                                        name << "M";
     584                                }
     585                        }
     586                        name << "_";
     587                        std::list< DeclarationWithType *> &paramList = function->get_parameters();
     588                        for ( std::list< DeclarationWithType *>::iterator arg = paramList.begin(); arg != paramList.end(); ++arg ) {
     589                                if ( isPolyType( (*arg)->get_type(), tyVars ) ) {
     590                                        name << "P";
     591                                } else {
     592                                        name << "M";
     593                                }
     594                        } // for
     595                        return name.str();
     596                }
     597
     598                std::string mangleAdapterName( FunctionType * function, const TyVarMap &tyVars ) {
     599                        return SymTab::Mangler::mangle( function ) + makePolyMonoSuffix( function, tyVars );
     600                }
     601
    142602                std::string makeAdapterName( const std::string &mangleName ) {
    143603                        return "_adapter" + mangleName;
    144604                }
    145605
    146                 bool isPolyRet( FunctionType *function, std::string &name, const TyVarMap &otherTyVars ) {
    147                         bool doTransform = false;
    148                         if ( ! function->get_returnVals().empty() ) {
    149                                 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( function->get_returnVals().front()->get_type() ) ) {
    150        
    151                                         // figure out if the return type is specified by a type parameter
    152                                         for ( std::list< TypeDecl *>::const_iterator tyVar = function->get_forall().begin(); tyVar != function->get_forall().end(); ++tyVar ) {
    153                                                 if ( (*tyVar)->get_name() == typeInst->get_name() ) {
    154                                                         doTransform = true;
    155                                                         name = typeInst->get_name();
    156                                                         break;
     606                Pass1::Pass1() : useRetval( false ), tempNamer( "_temp" ) {}
     607
     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;
    157615                                                } // if
    158                                         } // for
    159                                         if ( ! doTransform && otherTyVars.find( typeInst->get_name() ) != otherTyVars.end() ) {
    160                                                 doTransform = true;
    161616                                        } // if
    162617                                } // if
    163618                        } // if
    164                         return doTransform;
    165                 }
    166 
    167                 bool isPolyRet( FunctionType *function, std::string &name ) {
    168                         TyVarMap dummyTyVars;
    169                         return isPolyRet( function, name, dummyTyVars );
    170                 }
    171 
    172                 bool isPolyRet( FunctionType *function, const TyVarMap &otherTyVars ) {
    173                         std::string dummyString;
    174                         return isPolyRet( function, dummyString, otherTyVars );
    175                 }
    176 
    177                 Pass1::Pass1()
    178                         : useRetval( false ), tempNamer( "_temp" ) {
    179                 }
    180 
    181                 bool checkAssignment( DeclarationWithType *decl, std::string &name ) {
    182                         if ( decl->get_name() == "?=?" ) {
    183                                 if ( PointerType *ptrType = dynamic_cast< PointerType *>( decl->get_type() ) ) {
    184                                         if ( FunctionType *funType = dynamic_cast< FunctionType *>( ptrType->get_base() ) ) {
    185                                                 if ( funType->get_parameters().size() == 2 ) {
    186                                                         if ( PointerType *pointer = dynamic_cast< PointerType *>( funType->get_parameters().front()->get_type() ) ) {
    187                                                                 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( pointer->get_base() ) ) {
    188                                                                         name = typeInst->get_name();
    189                                                                         return true;
     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;
    190631                                                                } // if
    191632                                                        } // if
     
    194635                                } // if
    195636                        } // if
    196                         return false;
    197                 }
    198 
    199                 void Pass1::findAssignOps( const std::list< TypeDecl *> &forall ) {
    200                         assignOps.clear();
     637                        return 0;
     638                }
     639
     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;
     673                                                } // if
     674                                        } // if
     675                                } // if
     676                        } // if
     677                        return 0;
     678                }
     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 ) {
     729                        // what if a nested function uses an assignment operator?
     730                        // assignOps.clear();
    201731                        for ( std::list< TypeDecl *>::const_iterator i = forall.begin(); i != forall.end(); ++i ) {
    202732                                for ( std::list< DeclarationWithType *>::const_iterator assert = (*i)->get_assertions().begin(); assert != (*i)->get_assertions().end(); ++assert ) {
    203733                                        std::string typeName;
    204                                         if ( checkAssignment( *assert, typeName ) ) {
    205                                                 assignOps[ typeName ] = *assert;
     734                                        if ( TypeInstType *typeInst = isTypeInstAssignment( *assert ) ) {
     735                                                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;
    206742                                        } // if
    207743                                } // for
     
    210746
    211747                DeclarationWithType *Pass1::mutate( FunctionDecl *functionDecl ) {
    212                         if ( functionDecl->get_statements() ) {
    213                                 TyVarMap oldtyVars = scopeTyVars;
     748                        // 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 );
     764                                }
     765                        }
     766
     767                        if ( functionDecl->get_statements() ) {         // empty routine body ?
     768                                doBeginScope();
     769                                scopeTyVars.beginScope();
     770                                assignOps.beginScope();
     771                                ctorOps.beginScope();
     772                                copyOps.beginScope();
     773                                dtorOps.beginScope();
     774
    214775                                DeclarationWithType *oldRetval = retval;
    215776                                bool oldUseRetval = useRetval;
    216        
     777
     778                                // process polymorphic return value
    217779                                retval = 0;
    218                                 std::string typeName;
    219                                 if ( isPolyRet( functionDecl->get_functionType(), typeName ) && functionDecl->get_linkage() == LinkageSpec::Cforall ) {
     780                                if ( isPolyRet( functionDecl->get_functionType() ) && functionDecl->get_linkage() == LinkageSpec::Cforall ) {
    220781                                        retval = functionDecl->get_functionType()->get_returnVals().front();
    221  
     782
    222783                                        // give names to unnamed return values
    223784                                        if ( retval->get_name() == "" ) {
     
    226787                                        } // if
    227788                                } // if
    228        
    229                                 scopeTyVars.clear();
    230 ///     std::cerr << "clear\n";
     789
     790                                FunctionType *functionType = functionDecl->get_functionType();
    231791                                makeTyVarMap( functionDecl->get_functionType(), scopeTyVars );
    232                                 findAssignOps( functionDecl->get_functionType()->get_forall() );
     792                                findTypeOps( functionDecl->get_functionType()->get_forall() );
     793
     794                                std::list< DeclarationWithType *> &paramList = functionType->get_parameters();
     795                                std::list< FunctionType *> functions;
     796                                for ( std::list< TypeDecl *>::iterator tyVar = functionType->get_forall().begin(); tyVar != functionType->get_forall().end(); ++tyVar ) {
     797                                        for ( std::list< DeclarationWithType *>::iterator assert = (*tyVar)->get_assertions().begin(); assert != (*tyVar)->get_assertions().end(); ++assert ) {
     798                                                findFunction( (*assert)->get_type(), functions, scopeTyVars, needsAdapter );
     799                                        } // for
     800                                } // for
     801                                for ( std::list< DeclarationWithType *>::iterator arg = paramList.begin(); arg != paramList.end(); ++arg ) {
     802                                        findFunction( (*arg)->get_type(), functions, scopeTyVars, needsAdapter );
     803                                } // for
     804
     805                                for ( std::list< FunctionType *>::iterator funType = functions.begin(); funType != functions.end(); ++funType ) {
     806                                        std::string mangleName = mangleAdapterName( *funType, scopeTyVars );
     807                                        if ( adapters.find( mangleName ) == adapters.end() ) {
     808                                                std::string adapterName = makeAdapterName( mangleName );
     809                                                adapters.insert( std::pair< std::string, DeclarationWithType *>( mangleName, new ObjectDecl( adapterName, DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new PointerType( Type::Qualifiers(), makeAdapterType( *funType, scopeTyVars ) ), 0 ) ) );
     810                                        } // if
     811                                } // for
     812
    233813                                functionDecl->set_statements( functionDecl->get_statements()->acceptMutator( *this ) );
    234  
    235                                 scopeTyVars = oldtyVars;
    236 ///     std::cerr << "end FunctionDecl: ";
    237 ///     for ( TyVarMap::iterator i = scopeTyVars.begin(); i != scopeTyVars.end(); ++i ) {
    238 ///       std::cerr << i->first << " ";
    239 ///     }
    240 ///     std::cerr << "\n";
     814
     815                                scopeTyVars.endScope();
     816                                assignOps.endScope();
     817                                ctorOps.endScope();
     818                                copyOps.endScope();
     819                                dtorOps.endScope();
    241820                                retval = oldRetval;
    242821                                useRetval = oldUseRetval;
    243                                 // doEndScope();
     822                                doEndScope();
    244823                        } // if
    245824                        return functionDecl;
     
    247826
    248827                TypeDecl *Pass1::mutate( TypeDecl *typeDecl ) {
    249 ///     std::cerr << "add " << typeDecl->get_name() << "\n";
    250828                        scopeTyVars[ typeDecl->get_name() ] = typeDecl->get_kind();
    251829                        return Mutator::mutate( typeDecl );
     
    272850                }
    273851
    274                 void Pass1::passTypeVars( ApplicationExpr *appExpr, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars ) {
     852                void Pass1::passArgTypeVars( ApplicationExpr *appExpr, Type *parmType, Type *argBaseType, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars, std::set< std::string > &seenTypes ) {
     853                        Type *polyType = isPolyType( parmType, exprTyVars );
     854                        if ( polyType && ! dynamic_cast< TypeInstType* >( polyType ) ) {
     855                                std::string typeName = mangleType( polyType );
     856                                if ( seenTypes.count( typeName ) ) return;
     857
     858                                arg = appExpr->get_args().insert( arg, new SizeofExpr( argBaseType->clone() ) );
     859                                arg++;
     860                                arg = appExpr->get_args().insert( arg, new AlignofExpr( argBaseType->clone() ) );
     861                                arg++;
     862                                if ( dynamic_cast< StructInstType* >( polyType ) ) {
     863                                        if ( StructInstType *argBaseStructType = dynamic_cast< StructInstType* >( argBaseType ) ) {
     864                                                // zero-length arrays are forbidden by C, so don't pass offset for empty struct
     865                                                if ( ! argBaseStructType->get_baseStruct()->get_members().empty() ) {
     866                                                        arg = appExpr->get_args().insert( arg, new OffsetPackExpr( argBaseStructType->clone() ) );
     867                                                        arg++;
     868                                                }
     869                                        } else {
     870                                                throw SemanticError( "Cannot pass non-struct type for generic struct" );
     871                                        }
     872                                }
     873
     874                                seenTypes.insert( typeName );
     875                        }
     876                }
     877
     878                void Pass1::passTypeVars( ApplicationExpr *appExpr, ReferenceToType *polyRetType, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars ) {
     879                        // pass size/align for type variables
    275880                        for ( TyVarMap::const_iterator tyParm = exprTyVars.begin(); tyParm != exprTyVars.end(); ++tyParm ) {
    276881                                ResolvExpr::EqvClass eqvClass;
     
    281886                                                arg = appExpr->get_args().insert( arg, new SizeofExpr( concrete->clone() ) );
    282887                                                arg++;
     888                                                arg = appExpr->get_args().insert( arg, new AlignofExpr( concrete->clone() ) );
     889                                                arg++;
    283890                                        } else {
    284                                                 throw SemanticError( "unbound type variable in application ", appExpr );
     891                                                /// xxx - should this be an assertion?
     892                                                throw SemanticError( "unbound type variable: " + tyParm->first + " in application ", appExpr );
    285893                                        } // if
    286894                                } // if
    287895                        } // for
     896
     897                        // add size/align for generic types to parameter list
     898                        if ( appExpr->get_function()->get_results().empty() ) return;
     899                        FunctionType *funcType = getFunctionType( appExpr->get_function()->get_results().front() );
     900                        assert( funcType );
     901
     902                        std::list< DeclarationWithType* >::const_iterator fnParm = funcType->get_parameters().begin();
     903                        std::list< Expression* >::const_iterator fnArg = arg;
     904                        std::set< std::string > seenTypes; //< names for generic types we've seen
     905
     906                        // a polymorphic return type may need to be added to the argument list
     907                        if ( polyRetType ) {
     908                                Type *concRetType = replaceWithConcrete( appExpr, polyRetType );
     909                                passArgTypeVars( appExpr, polyRetType, concRetType, arg, exprTyVars, seenTypes );
     910                        }
     911
     912                        // add type information args for presently unseen types in parameter list
     913                        for ( ; fnParm != funcType->get_parameters().end() && fnArg != appExpr->get_args().end(); ++fnParm, ++fnArg ) {
     914                                VariableExpr *fnArgBase = getBaseVar( *fnArg );
     915                                if ( ! fnArgBase || fnArgBase->get_results().empty() ) continue;
     916                                passArgTypeVars( appExpr, (*fnParm)->get_type(), fnArgBase->get_results().front(), arg, exprTyVars, seenTypes );
     917                        }
    288918                }
    289919
     
    294924                }
    295925
    296                 TypeInstType *isPolyType( Type *type, const TypeSubstitution *env, const TyVarMap &tyVars ) {
    297                         if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( type ) ) {
    298                                 if ( env ) {
    299                                         if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
    300                                                 return isPolyType( newType, env, tyVars );
    301                                         } // if
     926                Expression *Pass1::addRetParam( ApplicationExpr *appExpr, FunctionType *function, Type *retType, std::list< Expression *>::iterator &arg ) {
     927                        // ***** Code Removal ***** After introducing a temporary variable for all return expressions, the following code appears superfluous.
     928                        // if ( useRetval ) {
     929                        //      assert( retval );
     930                        //      arg = appExpr->get_args().insert( arg, new VariableExpr( retval ) );
     931                        //      arg++;
     932                        // } else {
     933
     934                        // Create temporary to hold return value of polymorphic function and produce that temporary as a result
     935                        // using a comma expression.  Possibly change comma expression into statement expression "{}" for multiple
     936                        // return values.
     937                        ObjectDecl *newObj = makeTemporary( retType->clone() );
     938                        Expression *paramExpr = new VariableExpr( newObj );
     939
     940                        // If the type of the temporary is not polymorphic, box temporary by taking its address;
     941                        // otherwise the temporary is already boxed and can be used directly.
     942                        if ( ! isPolyType( newObj->get_type(), scopeTyVars, env ) ) {
     943                                paramExpr = new AddressExpr( paramExpr );
     944                        } // if
     945                        arg = appExpr->get_args().insert( arg, paramExpr ); // add argument to function call
     946                        arg++;
     947                        // Build a comma expression to call the function and emulate a normal return.
     948                        CommaExpr *commaExpr = new CommaExpr( appExpr, new VariableExpr( newObj ) );
     949                        commaExpr->set_env( appExpr->get_env() );
     950                        appExpr->set_env( 0 );
     951                        return commaExpr;
     952                        // } // if
     953                        // return appExpr;
     954                }
     955
     956                void Pass1::replaceParametersWithConcrete( ApplicationExpr *appExpr, std::list< Expression* >& params ) {
     957                        for ( std::list< Expression* >::iterator param = params.begin(); param != params.end(); ++param ) {
     958                                TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param );
     959                                assert(paramType && "Aggregate parameters should be type expressions");
     960                                paramType->set_type( replaceWithConcrete( appExpr, paramType->get_type(), false ) );
     961                        }
     962                }
     963
     964                Type *Pass1::replaceWithConcrete( ApplicationExpr *appExpr, Type *type, bool doClone ) {
     965                        if ( TypeInstType *typeInst = dynamic_cast< TypeInstType * >( type ) ) {
     966                                Type *concrete = env->lookup( typeInst->get_name() );
     967                                if ( concrete == 0 ) {
     968                                        throw SemanticError( "Unbound type variable " + typeInst->get_name() + " in ", appExpr );
    302969                                } // if
    303                                 if ( tyVars.find( typeInst->get_name() ) != tyVars.end() ) {
    304                                         return typeInst;
    305                                 } else {
    306                                         return 0;
    307                                 } // if
    308                         } else {
    309                                 return 0;
    310                         } // if
    311                 }
    312 
    313                 Expression *Pass1::addRetParam( ApplicationExpr *appExpr, FunctionType *function, Type *retType, std::list< Expression *>::iterator &arg ) {
    314                         if ( useRetval ) {
    315                                 assert( retval );
    316                                 arg = appExpr->get_args().insert( arg, new VariableExpr( retval ) );
    317                                 arg++;
    318                         } else {
    319                                 ObjectDecl *newObj = makeTemporary( retType->clone() );
    320                                 Expression *paramExpr = new VariableExpr( newObj );
    321                                 if ( ! isPolyType( newObj->get_type(), env, scopeTyVars ) ) {
    322                                         paramExpr = new AddressExpr( paramExpr );
    323                                 } // if
    324                                 arg = appExpr->get_args().insert( arg, paramExpr );
    325                                 arg++;
    326 ///     stmtsToAdd.push_back( new ExprStmt( noLabels, appExpr ) );
    327                                 CommaExpr *commaExpr = new CommaExpr( appExpr, new VariableExpr( newObj ) );
    328                                 commaExpr->set_env( appExpr->get_env() );
    329                                 appExpr->set_env( 0 );
    330                                 return commaExpr;
    331                         } // if
    332                         return appExpr;
    333                 }
    334 
    335                 Expression *Pass1::addPolyRetParam( ApplicationExpr *appExpr, FunctionType *function, std::string typeName, std::list< Expression *>::iterator &arg ) {
    336                         ResolvExpr::EqvClass eqvClass;
     970                                return concrete;
     971                        } else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) {
     972                                if ( doClone ) {
     973                                        structType = structType->clone();
     974                                }
     975                                replaceParametersWithConcrete( appExpr, structType->get_parameters() );
     976                                return structType;
     977                        } else if ( UnionInstType *unionType = dynamic_cast< UnionInstType* >( type ) ) {
     978                                if ( doClone ) {
     979                                        unionType = unionType->clone();
     980                                }
     981                                replaceParametersWithConcrete( appExpr, unionType->get_parameters() );
     982                                return unionType;
     983                        }
     984                        return type;
     985                }
     986
     987                Expression *Pass1::addPolyRetParam( ApplicationExpr *appExpr, FunctionType *function, ReferenceToType *polyType, std::list< Expression *>::iterator &arg ) {
    337988                        assert( env );
    338                         Type *concrete = env->lookup( typeName );
    339                         if ( concrete == 0 ) {
    340                                 throw SemanticError( "Unbound type variable " + typeName + " in ", appExpr );
    341                         } // if
     989                        Type *concrete = replaceWithConcrete( appExpr, polyType );
     990                        // add out-parameter for return value
    342991                        return addRetParam( appExpr, function, concrete, arg );
    343992                }
     
    345994                Expression *Pass1::applyAdapter( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &tyVars ) {
    346995                        Expression *ret = appExpr;
    347                         if ( ! function->get_returnVals().empty() && isPolyVal( function->get_returnVals().front()->get_type(), tyVars ) ) {
     996                        if ( ! function->get_returnVals().empty() && isPolyType( function->get_returnVals().front()->get_type(), tyVars ) ) {
    348997                                ret = addRetParam( appExpr, function, function->get_returnVals().front()->get_type(), arg );
    349998                        } // if
    350                         std::string mangleName = SymTab::Mangler::mangle( function );
     999                        std::string mangleName = mangleAdapterName( function, tyVars );
    3511000                        std::string adapterName = makeAdapterName( mangleName );
    3521001
    353                         appExpr->get_args().push_front( appExpr->get_function() );
     1002                        // cast adaptee to void (*)(), since it may have any type inside a polymorphic function
     1003                        Type * adapteeType = new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) );
     1004                        appExpr->get_args().push_front( new CastExpr( appExpr->get_function(), adapteeType ) );
    3541005                        appExpr->set_function( new NameExpr( adapterName ) );
    355  
     1006
    3561007                        return ret;
    3571008                }
     
    3591010                void Pass1::boxParam( Type *param, Expression *&arg, const TyVarMap &exprTyVars ) {
    3601011                        assert( ! arg->get_results().empty() );
    361 ///   if ( ! dynamic_cast< PointerType *>( arg->get_results().front() ) ) {
    362                         TypeInstType *typeInst = dynamic_cast< TypeInstType *>( param );
    363                         if ( typeInst && exprTyVars.find( typeInst->get_name() ) != exprTyVars.end() ) {
    364                                 if ( dynamic_cast< TypeInstType *>( arg->get_results().front() ) ) {
    365                                         // if the argument's type is a type parameter, we don't need to box again!
     1012                        if ( isPolyType( param, exprTyVars ) ) {
     1013                                if ( isPolyType( arg->get_results().front() ) ) {
     1014                                        // if the argument's type is polymorphic, we don't need to box again!
    3661015                                        return;
    3671016                                } else if ( arg->get_results().front()->get_isLvalue() ) {
    368                                         // VariableExpr and MemberExpr are lvalues
    369                                         arg = new AddressExpr( arg );
     1017                                        // 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
     1019                                        if ( CommaExpr *commaArg = dynamic_cast< CommaExpr* >( arg ) ) {
     1020                                                commaArg->set_arg2( new AddressExpr( commaArg->get_arg2() ) );
     1021                                        } else {
     1022                                                arg = new AddressExpr( arg );
     1023                                        }
    3701024                                } else {
    371                                         ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, arg->get_results().front()->clone(), 0 );
     1025                                        // use type computed in unification to declare boxed variables
     1026                                        Type * newType = param->clone();
     1027                                        if ( env ) env->apply( newType );
     1028                                        ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, newType, 0 );
    3721029                                        newObj->get_type()->get_qualifiers() = Type::Qualifiers(); // TODO: is this right???
    3731030                                        stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
     
    3791036                                } // if
    3801037                        } // if
    381 ///   }
    382                 }
    383 
     1038                }
     1039
     1040                /// cast parameters to polymorphic functions so that types are replaced with
     1041                /// void * if they are type parameters in the formal type.
     1042                /// this gets rid of warnings from gcc.
    3841043                void addCast( Expression *&actual, Type *formal, const TyVarMap &tyVars ) {
    385                         Type *newType = formal->clone();
    386                         std::list< FunctionType *> functions;
    387                         // instead of functions needing adapters, this really ought to look for
    388                         // any function mentioning a polymorphic type
    389                         findAndReplaceFunction( newType, functions, tyVars, needsAdapter );
    390                         if ( ! functions.empty() ) {
     1044                        Type * newType = formal->clone();
     1045                        if ( getFunctionType( newType ) ) {
     1046                                newType = ScrubTyVars::scrub( newType, tyVars );
    3911047                                actual = new CastExpr( actual, newType );
    392                         } else {
    393                                 delete newType;
    3941048                        } // if
    3951049                }
    3961050
    3971051                void Pass1::boxParams( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars ) {
    398 ///   std::cout << "function is ";
    399 ///   function->print( std::cout );
    4001052                        for ( std::list< DeclarationWithType *>::const_iterator param = function->get_parameters().begin(); param != function->get_parameters().end(); ++param, ++arg ) {
    401 ///     std::cout << "parameter is ";
    402 ///     (*param)->print( std::fcout );
    403 ///     std::cout << std::endl << "argument is ";
    404 ///     (*arg)->print( std::cout );
    4051053                                assert( arg != appExpr->get_args().end() );
    4061054                                addCast( *arg, (*param)->get_type(), exprTyVars );
     
    4141062                                for ( std::list< DeclarationWithType *>::iterator assert = (*tyVar)->get_assertions().begin(); assert != (*tyVar)->get_assertions().end(); ++assert ) {
    4151063                                        InferredParams::const_iterator inferParam = appExpr->get_inferParams().find( (*assert)->get_uniqueId() );
    416                                         assert( inferParam != appExpr->get_inferParams().end() );
     1064                                        assert( inferParam != appExpr->get_inferParams().end() && "NOTE: Explicit casts of polymorphic functions to compatible monomorphic functions are currently unsupported" );
    4171065                                        Expression *newExpr = inferParam->second.expr->clone();
    4181066                                        addCast( newExpr, (*assert)->get_type(), tyVars );
     
    4371085                        // actually make the adapter type
    4381086                        FunctionType *adapter = adaptee->clone();
    439                         if ( ! adapter->get_returnVals().empty() && isPolyVal( adapter->get_returnVals().front()->get_type(), tyVars ) ) {
     1087                        if ( ! adapter->get_returnVals().empty() && isPolyType( adapter->get_returnVals().front()->get_type(), tyVars ) ) {
    4401088                                makeRetParm( adapter );
    4411089                        } // if
     
    4471095                        assert( param );
    4481096                        assert( arg );
    449 ///   std::cout << "arg type is ";
    450 ///   arg->get_type()->print( std::cout );
    451 ///   std::cout << "param type is ";
    452 ///   param->get_type()->print( std::cout );
    453 ///   std::cout << " tyVars are: ";
    454 ///   printTyVarMap( std::cout, tyVars );
    455                         if ( isPolyVal( realParam->get_type(), tyVars ) ) {
    456 ///     if ( dynamic_cast< PointerType *>( arg->get_type() ) ) {
    457 ///       return new CastExpr( new VariableExpr( param ), arg->get_type()->clone() );
    458 ///     } else {
    459                                 UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    460                                 deref->get_args().push_back( new CastExpr( new VariableExpr( param ), new PointerType( Type::Qualifiers(), arg->get_type()->clone() ) ) );
    461                                 deref->get_results().push_back( arg->get_type()->clone() );
    462                                 return deref;
    463 ///     }
     1097                        if ( isPolyType( realParam->get_type(), tyVars ) ) {
     1098                                if ( ! isPolyType( arg->get_type() ) ) {
     1099                                        UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
     1100                                        deref->get_args().push_back( new CastExpr( new VariableExpr( param ), new PointerType( Type::Qualifiers(), arg->get_type()->clone() ) ) );
     1101                                        deref->get_results().push_back( arg->get_type()->clone() );
     1102                                        return deref;
     1103                                } // if
    4641104                        } // if
    4651105                        return new VariableExpr( param );
     
    4771117                }
    4781118
    479 
    480 
    4811119                FunctionDecl *Pass1::makeAdapter( FunctionType *adaptee, FunctionType *realType, const std::string &mangleName, const TyVarMap &tyVars ) {
    4821120                        FunctionType *adapterType = makeAdapterType( adaptee, tyVars );
     
    4861124                        ApplicationExpr *adapteeApp = new ApplicationExpr( new CastExpr( new VariableExpr( adapteeDecl ), new PointerType( Type::Qualifiers(), realType ) ) );
    4871125                        Statement *bodyStmt;
    488  
     1126
    4891127                        std::list< TypeDecl *>::iterator tyArg = realType->get_forall().begin();
    4901128                        std::list< TypeDecl *>::iterator tyParam = adapterType->get_forall().begin();
     
    5001138                                } // for
    5011139                        } // for
    502  
     1140
    5031141                        std::list< DeclarationWithType *>::iterator arg = realType->get_parameters().begin();
    5041142                        std::list< DeclarationWithType *>::iterator param = adapterType->get_parameters().begin();
    5051143                        std::list< DeclarationWithType *>::iterator realParam = adaptee->get_parameters().begin();
    506                         param++;                // skip adaptee parameter
     1144                        param++;                // skip adaptee parameter in the adapter type
    5071145                        if ( realType->get_returnVals().empty() ) {
     1146                                // void return
    5081147                                addAdapterParams( adapteeApp, arg, param, adapterType->get_parameters().end(), realParam, tyVars );
    5091148                                bodyStmt = new ExprStmt( noLabels, adapteeApp );
    510                         } else if ( isPolyVal( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
     1149                        } else if ( isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
     1150                                // return type T
    5111151                                if ( (*param)->get_name() == "" ) {
    5121152                                        (*param)->set_name( "_ret" );
     
    5441184                        } // for
    5451185
    546                         // parameter function types for which an appropriate adapter has been generated.
    547                         // we cannot use the types after applying substitutions, since two different
    548                         // parameter types may be unified to the same type
     1186                        // parameter function types for which an appropriate adapter has been generated.  we cannot use the types
     1187                        // after applying substitutions, since two different parameter types may be unified to the same type
    5491188                        std::set< std::string > adaptersDone;
    5501189
     
    5541193                                std::string mangleName = SymTab::Mangler::mangle( realFunction );
    5551194
    556                                 // only attempt to create an adapter or pass one as a parameter if we haven't
    557                                 // already done so for this pre-substitution parameter function type.
     1195                                // only attempt to create an adapter or pass one as a parameter if we haven't already done so for this
     1196                                // pre-substitution parameter function type.
    5581197                                if ( adaptersDone.find( mangleName ) == adaptersDone.end() ) {
    559                                         std::string mangleName = SymTab::Mangler::mangle( realFunction );
    5601198                                        adaptersDone.insert( adaptersDone.begin(), mangleName );
    561                                        
    562                                         // apply substitution to type variables to figure out what the
    563                                         // adapter's type should look like
     1199
     1200                                        // apply substitution to type variables to figure out what the adapter's type should look like
    5641201                                        assert( env );
    5651202                                        env->apply( realFunction );
    5661203                                        mangleName = SymTab::Mangler::mangle( realFunction );
    567 
    568                                         if ( needsAdapter( realFunction, exprTyVars, true ) ) {
    569                                                 // the function still contains type variables, which means we are in a polymorphic
    570                                                 // context and the adapter function is a parameter - call the parameter and don't
    571                                                 // create a new adapter.
    572                                                 appExpr->get_args().push_front( new NameExpr( makeAdapterName ( mangleName ) ) );
    573                                         } else {
    574                                                 if ( isPolyRet( originalFunction, exprTyVars ) ) {
    575                                                         // if the return type involved polymorphic types, then
    576                                                         // the adapter will need to take those polymorphic types
    577                                                         // as pointers. Therefore, there can be two different
    578                                                         // functions with the same mangled name, so we need two adapter map
    579                                                         // stacks and also we need the mangled names to be different.
    580                                                         mangleName += "polyret_";
    581                                                 }
    582 
    583                                                 AdapterMap & adapters = Pass1::adapters.top();
    584                                                 AdapterMap::iterator adapter = adapters.find( mangleName );
    585                                                 if ( adapter == adapters.end() ) {
    586                                                         // adapter has not been created yet in the current scope, so define it
    587                                                         FunctionDecl *newAdapter = makeAdapter( *funType, realFunction, mangleName, exprTyVars );
    588                                                         adapter = adapters.insert( adapters.begin(), std::pair< std::string, FunctionDecl *>( mangleName, newAdapter ) );
    589                                                         stmtsToAdd.push_back( new DeclStmt( noLabels, newAdapter ) );
    590                                                 } // if
    591                                                 assert( adapter != adapters.end() );
    592 
    593                                                 // add the appropriate adapter as a parameter
    594                                                 appExpr->get_args().push_front( new VariableExpr( adapter->second ) );
     1204                                        mangleName += makePolyMonoSuffix( originalFunction, exprTyVars );
     1205
     1206                                        typedef ScopedMap< std::string, DeclarationWithType* >::iterator AdapterIter;
     1207                                        AdapterIter adapter = adapters.find( mangleName );
     1208                                        if ( adapter == adapters.end() ) {
     1209                                                // adapter has not been created yet in the current scope, so define it
     1210                                                FunctionDecl *newAdapter = makeAdapter( *funType, realFunction, mangleName, exprTyVars );
     1211                                                std::pair< AdapterIter, bool > answer = adapters.insert( std::pair< std::string, DeclarationWithType *>( mangleName, newAdapter ) );
     1212                                                adapter = answer.first;
     1213                                                stmtsToAdd.push_back( new DeclStmt( noLabels, newAdapter ) );
    5951214                                        } // if
     1215                                        assert( adapter != adapters.end() );
     1216
     1217                                        // add the appropriate adapter as a parameter
     1218                                        appExpr->get_args().push_front( new VariableExpr( adapter->second ) );
    5961219                                } // if
    5971220                        } // for
    598                 }
    599 
    600                 TypeInstType *isPolyPtr( Type *type, const TypeSubstitution *env, const TyVarMap &tyVars ) {
    601                         if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
    602                                 return isPolyType( ptr->get_base(), env, tyVars );
    603                         } else if ( env ) {
    604                                 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( type ) ) {
    605                                         if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
    606                                                 return isPolyPtr( newType, env, tyVars );
    607                                         } // if
    608                                 } // if
    609                         } // if
    610                         return 0;
    611                 }
    612 
    613                 TypeInstType *isPolyPtrPtr( Type *type, const TypeSubstitution *env, const TyVarMap &tyVars ) {
    614                         if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
    615                                 return isPolyPtr( ptr->get_base(), env, tyVars );
    616                         } else if ( env ) {
    617                                 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( type ) ) {
    618                                         if ( Type *newType = env->lookup( typeInst->get_name() ) ) {
    619                                                 return isPolyPtrPtr( newType, env, tyVars );
    620                                         } // if
    621                                 } // if
    622                         } // if
    623                         return 0;
    624                 }
    625 
    626                 Expression *makeIncrDecrExpr( ApplicationExpr *appExpr, std::string polyName, bool isIncr ) {
     1221                } // passAdapters
     1222
     1223                Expression *makeIncrDecrExpr( ApplicationExpr *appExpr, Type *polyType, bool isIncr ) {
    6271224                        NameExpr *opExpr;
    6281225                        if ( isIncr ) {
     
    6371234                                addAssign->get_args().push_back( appExpr->get_args().front() );
    6381235                        } // if
    639                         addAssign->get_args().push_back( new NameExpr( polyName ) );
     1236                        addAssign->get_args().push_back( new NameExpr( sizeofName( mangleType( polyType ) ) ) );
    6401237                        addAssign->get_results().front() = appExpr->get_results().front()->clone();
    6411238                        if ( appExpr->get_env() ) {
     
    6541251                                                assert( ! appExpr->get_results().empty() );
    6551252                                                assert( appExpr->get_args().size() == 2 );
    656                                                 TypeInstType *typeInst1 = isPolyPtr( appExpr->get_args().front()->get_results().front(), env, scopeTyVars );
    657                                                 TypeInstType *typeInst2 = isPolyPtr( appExpr->get_args().back()->get_results().front(), env, scopeTyVars );
    658                                                 assert( ! typeInst1 || ! typeInst2 );
     1253                                                Type *baseType1 = isPolyPtr( appExpr->get_args().front()->get_results().front(), scopeTyVars, env );
     1254                                                Type *baseType2 = isPolyPtr( appExpr->get_args().back()->get_results().front(), scopeTyVars, env );
     1255                                                assert( ! baseType1 || ! baseType2 ); // the arguments cannot both be polymorphic pointers
    6591256                                                UntypedExpr *ret = 0;
    660                                                 if ( typeInst1 || typeInst2 ) {
     1257                                                if ( baseType1 || baseType2 ) { // one of the arguments is a polymorphic pointer
    6611258                                                        ret = new UntypedExpr( new NameExpr( "?+?" ) );
    6621259                                                } // if
    663                                                 if ( typeInst1 ) {
     1260                                                if ( baseType1 ) {
    6641261                                                        UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
    6651262                                                        multiply->get_args().push_back( appExpr->get_args().back() );
    666                                                         multiply->get_args().push_back( new NameExpr( typeInst1->get_name() ) );
     1263                                                        multiply->get_args().push_back( new SizeofExpr( baseType1->clone() ) );
    6671264                                                        ret->get_args().push_back( appExpr->get_args().front() );
    6681265                                                        ret->get_args().push_back( multiply );
    669                                                 } else if ( typeInst2 ) {
     1266                                                } else if ( baseType2 ) {
    6701267                                                        UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
    6711268                                                        multiply->get_args().push_back( appExpr->get_args().front() );
    672                                                         multiply->get_args().push_back( new NameExpr( typeInst2->get_name() ) );
     1269                                                        multiply->get_args().push_back( new SizeofExpr( baseType2->clone() ) );
    6731270                                                        ret->get_args().push_back( multiply );
    6741271                                                        ret->get_args().push_back( appExpr->get_args().back() );
    6751272                                                } // if
    676                                                 if ( typeInst1 || typeInst2 ) {
     1273                                                if ( baseType1 || baseType2 ) {
    6771274                                                        ret->get_results().push_front( appExpr->get_results().front()->clone() );
    6781275                                                        if ( appExpr->get_env() ) {
     
    6871284                                                assert( ! appExpr->get_results().empty() );
    6881285                                                assert( ! appExpr->get_args().empty() );
    689                                                 if ( isPolyType( appExpr->get_results().front(), env, scopeTyVars ) ) {
     1286                                                if ( isPolyType( appExpr->get_results().front(), scopeTyVars, env ) ) {
    6901287                                                        Expression *ret = appExpr->get_args().front();
    6911288                                                        delete ret->get_results().front();
     
    7021299                                                assert( ! appExpr->get_results().empty() );
    7031300                                                assert( appExpr->get_args().size() == 1 );
    704                                                 if ( TypeInstType *typeInst = isPolyPtr( appExpr->get_results().front(), env, scopeTyVars ) ) {
     1301                                                if ( Type *baseType = isPolyPtr( appExpr->get_results().front(), scopeTyVars, env ) ) {
    7051302                                                        Type *tempType = appExpr->get_results().front()->clone();
    7061303                                                        if ( env ) {
     
    7161313                                                                assignExpr->get_args().push_back( appExpr->get_args().front()->clone() );
    7171314                                                        } // if
    718                                                         CommaExpr *firstComma = new CommaExpr( assignExpr, makeIncrDecrExpr( appExpr, typeInst->get_name(), varExpr->get_var()->get_name() == "?++" ) );
     1315                                                        CommaExpr *firstComma = new CommaExpr( assignExpr, makeIncrDecrExpr( appExpr, baseType, varExpr->get_var()->get_name() == "?++" ) );
    7191316                                                        return new CommaExpr( firstComma, tempExpr );
    7201317                                                } // if
     
    7221319                                                assert( ! appExpr->get_results().empty() );
    7231320                                                assert( appExpr->get_args().size() == 1 );
    724                                                 if ( TypeInstType *typeInst = isPolyPtr( appExpr->get_results().front(), env, scopeTyVars ) ) {
    725                                                         return makeIncrDecrExpr( appExpr, typeInst->get_name(), varExpr->get_var()->get_name() == "++?" );
     1321                                                if ( Type *baseType = isPolyPtr( appExpr->get_results().front(), scopeTyVars, env ) ) {
     1322                                                        return makeIncrDecrExpr( appExpr, baseType, varExpr->get_var()->get_name() == "++?" );
    7261323                                                } // if
    7271324                                        } else if ( varExpr->get_var()->get_name() == "?+?" || varExpr->get_var()->get_name() == "?-?" ) {
    7281325                                                assert( ! appExpr->get_results().empty() );
    7291326                                                assert( appExpr->get_args().size() == 2 );
    730                                                 TypeInstType *typeInst1 = isPolyPtr( appExpr->get_args().front()->get_results().front(), env, scopeTyVars );
    731                                                 TypeInstType *typeInst2 = isPolyPtr( appExpr->get_args().back()->get_results().front(), env, scopeTyVars );
    732                                                 if ( typeInst1 && typeInst2 ) {
     1327                                                Type *baseType1 = isPolyPtr( appExpr->get_args().front()->get_results().front(), scopeTyVars, env );
     1328                                                Type *baseType2 = isPolyPtr( appExpr->get_args().back()->get_results().front(), scopeTyVars, env );
     1329                                                if ( baseType1 && baseType2 ) {
    7331330                                                        UntypedExpr *divide = new UntypedExpr( new NameExpr( "?/?" ) );
    7341331                                                        divide->get_args().push_back( appExpr );
    735                                                         divide->get_args().push_back( new NameExpr( typeInst1->get_name() ) );
     1332                                                        divide->get_args().push_back( new SizeofExpr( baseType1->clone() ) );
    7361333                                                        divide->get_results().push_front( appExpr->get_results().front()->clone() );
    7371334                                                        if ( appExpr->get_env() ) {
     
    7401337                                                        } // if
    7411338                                                        return divide;
    742                                                 } else if ( typeInst1 ) {
     1339                                                } else if ( baseType1 ) {
    7431340                                                        UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
    7441341                                                        multiply->get_args().push_back( appExpr->get_args().back() );
    745                                                         multiply->get_args().push_back( new NameExpr( typeInst1->get_name() ) );
     1342                                                        multiply->get_args().push_back( new SizeofExpr( baseType1->clone() ) );
    7461343                                                        appExpr->get_args().back() = multiply;
    747                                                 } else if ( typeInst2 ) {
     1344                                                } else if ( baseType2 ) {
    7481345                                                        UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
    7491346                                                        multiply->get_args().push_back( appExpr->get_args().front() );
    750                                                         multiply->get_args().push_back( new NameExpr( typeInst2->get_name() ) );
     1347                                                        multiply->get_args().push_back( new SizeofExpr( baseType2->clone() ) );
    7511348                                                        appExpr->get_args().front() = multiply;
    7521349                                                } // if
     
    7541351                                                assert( ! appExpr->get_results().empty() );
    7551352                                                assert( appExpr->get_args().size() == 2 );
    756                                                 TypeInstType *typeInst = isPolyPtr( appExpr->get_results().front(), env, scopeTyVars );
    757                                                 if ( typeInst ) {
     1353                                                Type *baseType = isPolyPtr( appExpr->get_results().front(), scopeTyVars, env );
     1354                                                if ( baseType ) {
    7581355                                                        UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
    7591356                                                        multiply->get_args().push_back( appExpr->get_args().back() );
    760                                                         multiply->get_args().push_back( new NameExpr( typeInst->get_name() ) );
     1357                                                        multiply->get_args().push_back( new SizeofExpr( baseType->clone() ) );
    7611358                                                        appExpr->get_args().back() = multiply;
    7621359                                                } // if
     
    7691366
    7701367                Expression *Pass1::mutate( ApplicationExpr *appExpr ) {
    771 ///    std::cerr << "mutate appExpr: ";
    772 ///    for ( TyVarMap::iterator i = scopeTyVars.begin(); i != scopeTyVars.end(); ++i ) {
    773 ///       std::cerr << i->first << " ";
    774 ///    }
    775 ///    std::cerr << "\n";
     1368                        // std::cerr << "mutate appExpr: ";
     1369                        // for ( TyVarMap::iterator i = scopeTyVars.begin(); i != scopeTyVars.end(); ++i ) {
     1370                        //      std::cerr << i->first << " ";
     1371                        // }
     1372                        // std::cerr << "\n";
    7761373                        bool oldUseRetval = useRetval;
    7771374                        useRetval = false;
     
    7791376                        mutateAll( appExpr->get_args(), *this );
    7801377                        useRetval = oldUseRetval;
    781  
     1378
    7821379                        assert( ! appExpr->get_function()->get_results().empty() );
    7831380                        PointerType *pointer = dynamic_cast< PointerType *>( appExpr->get_function()->get_results().front() );
     
    7851382                        FunctionType *function = dynamic_cast< FunctionType *>( pointer->get_base() );
    7861383                        assert( function );
    787  
     1384
    7881385                        if ( Expression *newExpr = handleIntrinsics( appExpr ) ) {
    7891386                                return newExpr;
    7901387                        } // if
    791  
     1388
    7921389                        Expression *ret = appExpr;
    793  
     1390
    7941391                        std::list< Expression *>::iterator arg = appExpr->get_args().begin();
    7951392                        std::list< Expression *>::iterator paramBegin = appExpr->get_args().begin();
    796  
    797                         std::string typeName;
    798                         if ( isPolyRet( function, typeName ) ) {
    799                                 ret = addPolyRetParam( appExpr, function, typeName, arg );
     1393
     1394                        TyVarMap exprTyVars( (TypeDecl::Kind)-1 );
     1395                        makeTyVarMap( function, exprTyVars );
     1396                        ReferenceToType *polyRetType = isPolyRet( function );
     1397
     1398                        if ( polyRetType ) {
     1399                                ret = addPolyRetParam( appExpr, function, polyRetType, arg );
    8001400                        } else if ( needsAdapter( function, scopeTyVars ) ) {
    801 ///     std::cerr << "needs adapter: ";
    802 ///     for ( TyVarMap::iterator i = scopeTyVars.begin(); i != scopeTyVars.end(); ++i ) {
    803 ///       std::cerr << i->first << " ";
    804 ///     }
    805 ///     std::cerr << "\n";
     1401                                // std::cerr << "needs adapter: ";
     1402                                // printTyVarMap( std::cerr, scopeTyVars );
     1403                                // std::cerr << *env << std::endl;
    8061404                                // change the application so it calls the adapter rather than the passed function
    8071405                                ret = applyAdapter( appExpr, function, arg, scopeTyVars );
    8081406                        } // if
    8091407                        arg = appExpr->get_args().begin();
    810  
    811                         TyVarMap exprTyVars;
    812                         makeTyVarMap( function, exprTyVars );
    813  
    814                         passTypeVars( appExpr, arg, exprTyVars );
     1408
     1409                        passTypeVars( appExpr, polyRetType, arg, exprTyVars );
    8151410                        addInferredParams( appExpr, function, arg, exprTyVars );
    8161411
    8171412                        arg = paramBegin;
    818  
     1413
    8191414                        boxParams( appExpr, function, arg, exprTyVars );
    820 
    8211415                        passAdapters( appExpr, function, exprTyVars );
    8221416
     
    8251419
    8261420                Expression *Pass1::mutate( UntypedExpr *expr ) {
    827                         if ( ! expr->get_results().empty() && isPolyType( expr->get_results().front(), env, scopeTyVars ) ) {
     1421                        if ( ! expr->get_results().empty() && isPolyType( expr->get_results().front(), scopeTyVars, env ) ) {
    8281422                                if ( NameExpr *name = dynamic_cast< NameExpr *>( expr->get_function() ) ) {
    8291423                                        if ( name->get_name() == "*?" ) {
     
    8401434                Expression *Pass1::mutate( AddressExpr *addrExpr ) {
    8411435                        assert( ! addrExpr->get_arg()->get_results().empty() );
     1436
     1437                        bool needs = false;
     1438                        if ( UntypedExpr *expr = dynamic_cast< UntypedExpr *>( addrExpr->get_arg() ) ) {
     1439                                if ( ! expr->get_results().empty() && isPolyType( expr->get_results().front(), scopeTyVars, env ) ) {
     1440                                        if ( NameExpr *name = dynamic_cast< NameExpr *>( expr->get_function() ) ) {
     1441                                                if ( name->get_name() == "*?" ) {
     1442                                                        if ( ApplicationExpr * appExpr = dynamic_cast< ApplicationExpr * >( expr->get_args().front() ) ) {
     1443                                                                assert( ! appExpr->get_function()->get_results().empty() );
     1444                                                                PointerType *pointer = dynamic_cast< PointerType *>( appExpr->get_function()->get_results().front() );
     1445                                                                assert( pointer );
     1446                                                                FunctionType *function = dynamic_cast< FunctionType *>( pointer->get_base() );
     1447                                                                assert( function );
     1448                                                                needs = needsAdapter( function, scopeTyVars );
     1449                                                        } // if
     1450                                                } // if
     1451                                        } // if
     1452                                } // if
     1453                        } // 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 );
    8421457                        addrExpr->set_arg( mutateExpression( addrExpr->get_arg() ) );
    843                         if ( isPolyType( addrExpr->get_arg()->get_results().front(), env, scopeTyVars ) ) {
     1458                        if ( polytype || needs ) {
    8441459                                Expression *ret = addrExpr->get_arg();
    8451460                                delete ret->get_results().front();
     
    8531468                }
    8541469
    855                 Statement * Pass1::mutate(ReturnStmt *retStmt) {
    856                         // a cast expr on a polymorphic return value is either redundant or invalid
    857                         while ( CastExpr *castExpr = dynamic_cast< CastExpr *>( retStmt->get_expr() ) ) {
    858                                 retStmt->set_expr( castExpr->get_arg() );
    859                                 retStmt->get_expr()->set_env( castExpr->get_env() );
    860                                 castExpr->set_env( 0 );
    861                                 castExpr->set_arg( 0 );
    862                                 delete castExpr;
    863                         }
    864                         if ( retval && retStmt->get_expr() ) {
    865                                 assert( ! retStmt->get_expr()->get_results().empty() );
    866                                 if ( retStmt->get_expr()->get_results().front()->get_isLvalue() ) {
    867 ///       retStmt->set_expr( mutateExpression( retStmt->get_expr() ) );
    868                                         TypeInstType *typeInst = dynamic_cast< TypeInstType *>( retval->get_type() );
    869                                         assert( typeInst );
    870                                         std::map< std::string, DeclarationWithType *>::const_iterator assignIter = assignOps.find( typeInst->get_name() );
     1470                /// Wraps a function declaration in a new pointer-to-function variable expression
     1471                VariableExpr *wrapFunctionDecl( DeclarationWithType *functionDecl ) {
     1472                        // line below cloned from FixFunction.cc
     1473                        // xxx - functionObj is never added to a list of declarations...
     1474                        ObjectDecl *functionObj = new ObjectDecl( functionDecl->get_name(), functionDecl->get_storageClass(), functionDecl->get_linkage(), 0,
     1475                                                                  new PointerType( Type::Qualifiers(), functionDecl->get_type()->clone() ), 0 );
     1476                        functionObj->set_mangleName( functionDecl->get_mangleName() );
     1477                        functionObj->set_scopeLevel( functionDecl->get_scopeLevel() );
     1478                        return new VariableExpr( functionObj );
     1479                }
     1480
     1481                /// Finds the operation declaration for a given type in one of the two maps
     1482                DeclarationWithType* findOpForType( Type *formalType, const ScopedMap< std::string, DeclarationWithType* >& ops, ResolvExpr::TypeMap< DeclarationWithType >& scopedOps ) {
     1483                        if ( TypeInstType *formalTypeInstType = dynamic_cast< TypeInstType* >( formalType ) ) {
     1484                                ScopedMap< std::string, DeclarationWithType *>::const_iterator opIt = ops.find( formalTypeInstType->get_name() );
     1485                                return opIt == ops.end() ? 0 : opIt->second;
     1486                        } else {
     1487                                return scopedOps.find( formalType );
     1488                        }
     1489                }
     1490
     1491                /// Adds an assertion parameter to the application expression for the actual assertion declaration valued with the assert op
     1492                void addAssertionFor( ApplicationExpr *appExpr, DeclarationWithType *actualDecl, DeclarationWithType *assertOp ) {
     1493                        appExpr->get_inferParams()[ actualDecl->get_uniqueId() ]
     1494                                        = ParamEntry( assertOp->get_uniqueId(), assertOp->get_type()->clone(), actualDecl->get_type()->clone(), wrapFunctionDecl( assertOp ) );
     1495                }
     1496
     1497                Statement * Pass1::mutate( ReturnStmt *returnStmt ) {
     1498                        if ( retval && returnStmt->get_expr() ) {
     1499                                assert( ! returnStmt->get_expr()->get_results().empty() );
     1500                                // ***** Code Removal ***** After introducing a temporary variable for all return expressions, the following code appears superfluous.
     1501                                // if ( returnStmt->get_expr()->get_results().front()->get_isLvalue() ) {
     1502                                // by this point, a cast expr on a polymorphic return value is redundant
     1503                                while ( CastExpr *castExpr = dynamic_cast< CastExpr *>( returnStmt->get_expr() ) ) {
     1504                                        returnStmt->set_expr( castExpr->get_arg() );
     1505                                        returnStmt->get_expr()->set_env( castExpr->get_env() );
     1506                                        castExpr->set_env( 0 );
     1507                                        castExpr->set_arg( 0 );
     1508                                        delete castExpr;
     1509                                } //while
     1510
     1511                                // find assignment operator for (polymorphic) return type
     1512                                ApplicationExpr *assignExpr = 0;
     1513                                if ( TypeInstType *typeInst = dynamic_cast< TypeInstType *>( retval->get_type() ) ) {
     1514                                        // find assignment operator for type variable
     1515                                        ScopedMap< std::string, DeclarationWithType *>::const_iterator assignIter = assignOps.find( typeInst->get_name() );
    8711516                                        if ( assignIter == assignOps.end() ) {
    872                                                 throw SemanticError( "Attempt to return dtype or ftype object in ", retStmt->get_expr() );
     1517                                                throw SemanticError( "Attempt to return dtype or ftype object in ", returnStmt->get_expr() );
    8731518                                        } // if
    874                                         ApplicationExpr *assignExpr = new ApplicationExpr( new VariableExpr( assignIter->second ) );
    875                                         Expression *retParm = new NameExpr( retval->get_name() );
    876                                         retParm->get_results().push_back( new PointerType( Type::Qualifiers(), retval->get_type()->clone() ) );
    877                                         assignExpr->get_args().push_back( retParm );
    878                                         assignExpr->get_args().push_back( retStmt->get_expr() );
    879                                         stmtsToAdd.push_back( new ExprStmt( noLabels, mutateExpression( assignExpr ) ) );
    880                                 } else {
    881                                         useRetval = true;
    882                                         stmtsToAdd.push_back( new ExprStmt( noLabels, mutateExpression( retStmt->get_expr() ) ) );
    883                                         useRetval = false;
    884                                 } // if
    885                                 retStmt->set_expr( 0 );
     1519                                        assignExpr = new ApplicationExpr( new VariableExpr( assignIter->second ) );
     1520                                } else if ( ReferenceToType *refType = dynamic_cast< ReferenceToType *>( retval->get_type() ) ) {
     1521                                        // find assignment operator for generic type
     1522                                        DeclarationWithType *functionDecl = scopedAssignOps.find( refType );
     1523                                        if ( ! functionDecl ) {
     1524                                                throw SemanticError( "Attempt to return dtype or ftype generic object in ", returnStmt->get_expr() );
     1525                                        }
     1526
     1527                                        // wrap it up in an application expression
     1528                                        assignExpr = new ApplicationExpr( wrapFunctionDecl( functionDecl ) );
     1529                                        assignExpr->set_env( env->clone() );
     1530
     1531                                        // find each of its needed secondary assignment operators
     1532                                        std::list< Expression* > &tyParams = refType->get_parameters();
     1533                                        std::list< TypeDecl* > &forallParams = functionDecl->get_type()->get_forall();
     1534                                        std::list< Expression* >::const_iterator tyIt = tyParams.begin();
     1535                                        std::list< TypeDecl* >::const_iterator forallIt = forallParams.begin();
     1536                                        for ( ; tyIt != tyParams.end() && forallIt != forallParams.end(); ++tyIt, ++forallIt ) {
     1537                                                // Add appropriate mapping to assignment expression environment
     1538                                                TypeExpr *formalTypeExpr = dynamic_cast< TypeExpr* >( *tyIt );
     1539                                                assert( formalTypeExpr && "type parameters must be type expressions" );
     1540                                                Type *formalType = formalTypeExpr->get_type();
     1541                                                assignExpr->get_env()->add( (*forallIt)->get_name(), formalType );
     1542
     1543                                                // skip non-otype parameters (ftype/dtype)
     1544                                                if ( (*forallIt)->get_kind() != TypeDecl::Any ) continue;
     1545
     1546                                                // find otype operators for formal type
     1547                                                DeclarationWithType *assertAssign = findOpForType( formalType, assignOps, scopedAssignOps );
     1548                                                if ( ! assertAssign ) throw SemanticError( "No assignment operation found for ", formalType );
     1549
     1550                                                DeclarationWithType *assertCtor = findOpForType( formalType, ctorOps, scopedCtorOps );
     1551                                                if ( ! assertCtor ) throw SemanticError( "No default constructor found for ", formalType );
     1552
     1553                                                DeclarationWithType *assertCopy = findOpForType( formalType, copyOps, scopedCopyOps );
     1554                                                if ( ! assertCopy ) throw SemanticError( "No copy constructor found for ", formalType );
     1555
     1556                                                DeclarationWithType *assertDtor = findOpForType( formalType, dtorOps, scopedDtorOps );
     1557                                                if ( ! assertDtor ) throw SemanticError( "No destructor found for ", formalType );
     1558
     1559                                                // add inferred parameters for otype operators to assignment expression
     1560                                                // NOTE: Code here assumes that first four assertions are assign op, ctor, copy ctor, dtor, in that order
     1561                                                std::list< DeclarationWithType* > &asserts = (*forallIt)->get_assertions();
     1562                                                assert( asserts.size() >= 4 && "Type param needs otype operator assertions" );
     1563
     1564                                                std::list< DeclarationWithType* >::iterator actualIt = asserts.begin();
     1565                                                addAssertionFor( assignExpr, *actualIt, assertAssign );
     1566                                                ++actualIt;
     1567                                                addAssertionFor( assignExpr, *actualIt, assertCtor );
     1568                                                ++actualIt;
     1569                                                addAssertionFor( assignExpr, *actualIt, assertCopy );
     1570                                                ++actualIt;
     1571                                                addAssertionFor( assignExpr, *actualIt, assertDtor );
     1572
     1573                                        }
     1574                                }
     1575                                assert( assignExpr );
     1576
     1577                                // replace return statement with appropriate assignment to out parameter
     1578                                Expression *retParm = new NameExpr( retval->get_name() );
     1579                                retParm->get_results().push_back( new PointerType( Type::Qualifiers(), retval->get_type()->clone() ) );
     1580                                assignExpr->get_args().push_back( retParm );
     1581                                assignExpr->get_args().push_back( returnStmt->get_expr() );
     1582                                stmtsToAdd.push_back( new ExprStmt( noLabels, mutateExpression( assignExpr ) ) );
     1583                                // } else {
     1584                                //      useRetval = true;
     1585                                //      stmtsToAdd.push_back( new ExprStmt( noLabels, mutateExpression( returnStmt->get_expr() ) ) );
     1586                                //      useRetval = false;
     1587                                // } // if
     1588                                returnStmt->set_expr( 0 );
    8861589                        } else {
    887                                 retStmt->set_expr( mutateExpression( retStmt->get_expr() ) );
     1590                                returnStmt->set_expr( mutateExpression( returnStmt->get_expr() ) );
    8881591                        } // if
    889                         return retStmt;
     1592                        return returnStmt;
    8901593                }
    8911594
    8921595                Type * Pass1::mutate( PointerType *pointerType ) {
    893                         TyVarMap oldtyVars = scopeTyVars;
     1596                        scopeTyVars.beginScope();
    8941597                        makeTyVarMap( pointerType, scopeTyVars );
    895  
     1598
    8961599                        Type *ret = Mutator::mutate( pointerType );
    897  
    898                         scopeTyVars = oldtyVars;
     1600
     1601                        scopeTyVars.endScope();
    8991602                        return ret;
    9001603                }
    9011604
    9021605                Type * Pass1::mutate( FunctionType *functionType ) {
    903                         TyVarMap oldtyVars = scopeTyVars;
     1606                        scopeTyVars.beginScope();
    9041607                        makeTyVarMap( functionType, scopeTyVars );
    905  
     1608
    9061609                        Type *ret = Mutator::mutate( functionType );
    907  
    908                         scopeTyVars = oldtyVars;
     1610
     1611                        scopeTyVars.endScope();
    9091612                        return ret;
    9101613                }
    9111614
    9121615                void Pass1::doBeginScope() {
    913                         // actually, maybe this could (should?) push
    914                         // a copy of the current map
    915                         adapters.push(AdapterMap());
     1616                        adapters.beginScope();
     1617                        scopedAssignOps.beginScope();
     1618                        scopedCtorOps.beginScope();
     1619                        scopedCopyOps.beginScope();
     1620                        scopedDtorOps.beginScope();
    9161621                }
    9171622
    9181623                void Pass1::doEndScope() {
    919                         adapters.pop();
     1624                        adapters.endScope();
     1625                        scopedAssignOps.endScope();
     1626                        scopedCtorOps.endScope();
     1627                        scopedCopyOps.endScope();
     1628                        scopedDtorOps.endScope();
    9201629                }
    9211630
    9221631////////////////////////////////////////// Pass2 ////////////////////////////////////////////////////
    923 
    924                 Pass2::Pass2() {}
    9251632
    9261633                void Pass2::addAdapters( FunctionType *functionType ) {
     
    9341641                        std::set< std::string > adaptersDone;
    9351642                        for ( std::list< FunctionType *>::iterator funType = functions.begin(); funType != functions.end(); ++funType ) {
    936                                 std::string mangleName = SymTab::Mangler::mangle( *funType );
     1643                                std::string mangleName = mangleAdapterName( *funType, scopeTyVars );
    9371644                                if ( adaptersDone.find( mangleName ) == adaptersDone.end() ) {
    9381645                                        std::string adapterName = makeAdapterName( mangleName );
     
    9411648                                }
    9421649                        }
    943 ///  deleteAll( functions );
     1650//  deleteAll( functions );
    9441651                }
    9451652
     
    9731680
    9741681                Type * Pass2::mutate( PointerType *pointerType ) {
    975                         TyVarMap oldtyVars = scopeTyVars;
     1682                        scopeTyVars.beginScope();
    9761683                        makeTyVarMap( pointerType, scopeTyVars );
    977  
     1684
    9781685                        Type *ret = Mutator::mutate( pointerType );
    979  
    980                         scopeTyVars = oldtyVars;
     1686
     1687                        scopeTyVars.endScope();
    9811688                        return ret;
    9821689                }
    9831690
    9841691                Type *Pass2::mutate( FunctionType *funcType ) {
    985                         TyVarMap oldtyVars = scopeTyVars;
     1692                        scopeTyVars.beginScope();
    9861693                        makeTyVarMap( funcType, scopeTyVars );
    987  
    988                         std::string typeName;
    989                         if ( isPolyRet( funcType, typeName ) ) {
     1694
     1695                        // move polymorphic return type to parameter list
     1696                        if ( isPolyRet( funcType ) ) {
    9901697                                DeclarationWithType *ret = funcType->get_returnVals().front();
    9911698                                ret->set_type( new PointerType( Type::Qualifiers(), ret->get_type() ) );
     
    9931700                                funcType->get_returnVals().pop_front();
    9941701                        }
    995  
     1702
     1703                        // add size/align and assertions for type parameters to parameter list
    9961704                        std::list< DeclarationWithType *>::iterator last = funcType->get_parameters().begin();
    9971705                        std::list< DeclarationWithType *> inferredParams;
    998                         ObjectDecl *newObj = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0 );
    999 ///   ObjectDecl *newFunPtr = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new FunctionType( Type::Qualifiers(), true ) ), 0 );
     1706                        ObjectDecl newObj( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0 );
     1707                        ObjectDecl newPtr( "", DeclarationNode::NoStorageClass, LinkageSpec::C, 0,
     1708                                           new PointerType( Type::Qualifiers(), new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) ), 0 );
    10001709                        for ( std::list< TypeDecl *>::const_iterator tyParm = funcType->get_forall().begin(); tyParm != funcType->get_forall().end(); ++tyParm ) {
    1001                                 ObjectDecl *thisParm;
     1710                                ObjectDecl *sizeParm, *alignParm;
     1711                                // add all size and alignment parameters to parameter list
    10021712                                if ( (*tyParm)->get_kind() == TypeDecl::Any ) {
    1003                                         thisParm = newObj->clone();
    1004                                         thisParm->set_name( (*tyParm)->get_name() );
    1005                                         last = funcType->get_parameters().insert( last, thisParm );
     1713                                        TypeInstType parmType( Type::Qualifiers(), (*tyParm)->get_name(), *tyParm );
     1714                                        std::string parmName = mangleType( &parmType );
     1715
     1716                                        sizeParm = newObj.clone();
     1717                                        sizeParm->set_name( sizeofName( parmName ) );
     1718                                        last = funcType->get_parameters().insert( last, sizeParm );
     1719                                        ++last;
     1720
     1721                                        alignParm = newObj.clone();
     1722                                        alignParm->set_name( alignofName( parmName ) );
     1723                                        last = funcType->get_parameters().insert( last, alignParm );
    10061724                                        ++last;
    10071725                                }
     1726                                // move all assertions into parameter list
    10081727                                for ( std::list< DeclarationWithType *>::iterator assert = (*tyParm)->get_assertions().begin(); assert != (*tyParm)->get_assertions().end(); ++assert ) {
    1009 ///      *assert = (*assert)->acceptMutator( *this );
     1728//      *assert = (*assert)->acceptMutator( *this );
    10101729                                        inferredParams.push_back( *assert );
    10111730                                }
    10121731                                (*tyParm)->get_assertions().clear();
    10131732                        }
    1014                         delete newObj;
     1733
     1734                        // add size/align for generic parameter types to parameter list
     1735                        std::set< std::string > seenTypes; // sizeofName for generic types we've seen
     1736                        for ( std::list< DeclarationWithType* >::const_iterator fnParm = last; fnParm != funcType->get_parameters().end(); ++fnParm ) {
     1737                                Type *polyType = isPolyType( (*fnParm)->get_type(), scopeTyVars );
     1738                                if ( polyType && ! dynamic_cast< TypeInstType* >( polyType ) ) {
     1739                                        std::string typeName = mangleType( polyType );
     1740                                        if ( seenTypes.count( typeName ) ) continue;
     1741
     1742                                        ObjectDecl *sizeParm, *alignParm, *offsetParm;
     1743                                        sizeParm = newObj.clone();
     1744                                        sizeParm->set_name( sizeofName( typeName ) );
     1745                                        last = funcType->get_parameters().insert( last, sizeParm );
     1746                                        ++last;
     1747
     1748                                        alignParm = newObj.clone();
     1749                                        alignParm->set_name( alignofName( typeName ) );
     1750                                        last = funcType->get_parameters().insert( last, alignParm );
     1751                                        ++last;
     1752
     1753                                        if ( StructInstType *polyBaseStruct = dynamic_cast< StructInstType* >( polyType ) ) {
     1754                                                // NOTE zero-length arrays are illegal in C, so empty structs have no offset array
     1755                                                if ( ! polyBaseStruct->get_baseStruct()->get_members().empty() ) {
     1756                                                        offsetParm = newPtr.clone();
     1757                                                        offsetParm->set_name( offsetofName( typeName ) );
     1758                                                        last = funcType->get_parameters().insert( last, offsetParm );
     1759                                                        ++last;
     1760                                                }
     1761                                        }
     1762
     1763                                        seenTypes.insert( typeName );
     1764                                }
     1765                        }
     1766
     1767                        // splice assertion parameters into parameter list
    10151768                        funcType->get_parameters().splice( last, inferredParams );
    10161769                        addAdapters( funcType );
    10171770                        mutateAll( funcType->get_returnVals(), *this );
    10181771                        mutateAll( funcType->get_parameters(), *this );
    1019  
    1020                         scopeTyVars = oldtyVars;
     1772
     1773                        scopeTyVars.endScope();
    10211774                        return funcType;
     1775                }
     1776
     1777//////////////////////////////////////// GenericInstantiator //////////////////////////////////////////////////
     1778
     1779                /// Makes substitutions of params into baseParams; returns true if all parameters substituted for a concrete type
     1780                bool makeSubstitutions( const std::list< TypeDecl* >& baseParams, const std::list< Expression* >& params, std::list< TypeExpr* >& out ) {
     1781                        bool allConcrete = true;  // will finish the substitution list even if they're not all concrete
     1782
     1783                        // substitute concrete types for given parameters, and incomplete types for placeholders
     1784                        std::list< TypeDecl* >::const_iterator baseParam = baseParams.begin();
     1785                        std::list< Expression* >::const_iterator param = params.begin();
     1786                        for ( ; baseParam != baseParams.end() && param != params.end(); ++baseParam, ++param ) {
     1787        //                      switch ( (*baseParam)->get_kind() ) {
     1788        //                      case TypeDecl::Any: {   // any type is a valid substitution here; complete types can be used to instantiate generics
     1789                                        TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param );
     1790                                        assert(paramType && "Aggregate parameters should be type expressions");
     1791                                        out.push_back( paramType->clone() );
     1792                                        // check that the substituted type isn't a type variable itself
     1793                                        if ( dynamic_cast< TypeInstType* >( paramType->get_type() ) ) {
     1794                                                allConcrete = false;
     1795                                        }
     1796        //                              break;
     1797        //                      }
     1798        //                      case TypeDecl::Dtype:  // dtype can be consistently replaced with void [only pointers, which become void*]
     1799        //                              out.push_back( new TypeExpr( new VoidType( Type::Qualifiers() ) ) );
     1800        //                              break;
     1801        //                      case TypeDecl::Ftype:  // pointer-to-ftype can be consistently replaced with void (*)(void) [similar to dtype]
     1802        //                              out.push_back( new TypeExpr( new FunctionType( Type::Qualifiers(), false ) ) );
     1803        //                              break;
     1804        //                      }
     1805                        }
     1806
     1807                        // if any parameters left over, not done
     1808                        if ( baseParam != baseParams.end() ) return false;
     1809        //              // if not enough parameters given, substitute remaining incomplete types for placeholders
     1810        //              for ( ; baseParam != baseParams.end(); ++baseParam ) {
     1811        //                      switch ( (*baseParam)->get_kind() ) {
     1812        //                      case TypeDecl::Any:    // no more substitutions here, fail early
     1813        //                              return false;
     1814        //                      case TypeDecl::Dtype:  // dtype can be consistently replaced with void [only pointers, which become void*]
     1815        //                              out.push_back( new TypeExpr( new VoidType( Type::Qualifiers() ) ) );
     1816        //                              break;
     1817        //                      case TypeDecl::Ftype:  // pointer-to-ftype can be consistently replaced with void (*)(void) [similar to dtype]
     1818        //                              out.push_back( new TypeExpr( new FunctionType( Type::Qualifiers(), false ) ) );
     1819        //                              break;
     1820        //                      }
     1821        //              }
     1822
     1823                        return allConcrete;
     1824                }
     1825
     1826                /// Substitutes types of members of in according to baseParams => typeSubs, appending the result to out
     1827                void substituteMembers( const std::list< Declaration* >& in, const std::list< TypeDecl* >& baseParams, const std::list< TypeExpr* >& typeSubs,
     1828                                                                std::list< Declaration* >& out ) {
     1829                        // substitute types into new members
     1830                        TypeSubstitution subs( baseParams.begin(), baseParams.end(), typeSubs.begin() );
     1831                        for ( std::list< Declaration* >::const_iterator member = in.begin(); member != in.end(); ++member ) {
     1832                                Declaration *newMember = (*member)->clone();
     1833                                subs.apply(newMember);
     1834                                out.push_back( newMember );
     1835                        }
     1836                }
     1837
     1838                Type* GenericInstantiator::mutate( StructInstType *inst ) {
     1839                        // mutate subtypes
     1840                        Type *mutated = Mutator::mutate( inst );
     1841                        inst = dynamic_cast< StructInstType* >( mutated );
     1842                        if ( ! inst ) return mutated;
     1843
     1844                        // exit early if no need for further mutation
     1845                        if ( inst->get_parameters().empty() ) return inst;
     1846                        assert( inst->get_baseParameters() && "Base struct has parameters" );
     1847
     1848                        // check if type can be concretely instantiated; put substitutions into typeSubs
     1849                        std::list< TypeExpr* > typeSubs;
     1850                        if ( ! makeSubstitutions( *inst->get_baseParameters(), inst->get_parameters(), typeSubs ) ) {
     1851                                deleteAll( typeSubs );
     1852                                return inst;
     1853                        }
     1854
     1855                        // make concrete instantiation of generic type
     1856                        StructDecl *concDecl = lookup( inst, typeSubs );
     1857                        if ( ! concDecl ) {
     1858                                // set concDecl to new type, insert type declaration into statements to add
     1859                                concDecl = new StructDecl( typeNamer.newName( inst->get_name() ) );
     1860                                substituteMembers( inst->get_baseStruct()->get_members(), *inst->get_baseParameters(), typeSubs,        concDecl->get_members() );
     1861                                DeclMutator::addDeclaration( concDecl );
     1862                                insert( inst, typeSubs, concDecl );
     1863                        }
     1864                        StructInstType *newInst = new StructInstType( inst->get_qualifiers(), concDecl->get_name() );
     1865                        newInst->set_baseStruct( concDecl );
     1866
     1867                        deleteAll( typeSubs );
     1868                        delete inst;
     1869                        return newInst;
     1870                }
     1871
     1872                Type* GenericInstantiator::mutate( UnionInstType *inst ) {
     1873                        // mutate subtypes
     1874                        Type *mutated = Mutator::mutate( inst );
     1875                        inst = dynamic_cast< UnionInstType* >( mutated );
     1876                        if ( ! inst ) return mutated;
     1877
     1878                        // exit early if no need for further mutation
     1879                        if ( inst->get_parameters().empty() ) return inst;
     1880                        assert( inst->get_baseParameters() && "Base union has parameters" );
     1881
     1882                        // check if type can be concretely instantiated; put substitutions into typeSubs
     1883                        std::list< TypeExpr* > typeSubs;
     1884                        if ( ! makeSubstitutions( *inst->get_baseParameters(), inst->get_parameters(), typeSubs ) ) {
     1885                                deleteAll( typeSubs );
     1886                                return inst;
     1887                        }
     1888
     1889                        // make concrete instantiation of generic type
     1890                        UnionDecl *concDecl = lookup( inst, typeSubs );
     1891                        if ( ! concDecl ) {
     1892                                // set concDecl to new type, insert type declaration into statements to add
     1893                                concDecl = new UnionDecl( typeNamer.newName( inst->get_name() ) );
     1894                                substituteMembers( inst->get_baseUnion()->get_members(), *inst->get_baseParameters(), typeSubs, concDecl->get_members() );
     1895                                DeclMutator::addDeclaration( concDecl );
     1896                                insert( inst, typeSubs, concDecl );
     1897                        }
     1898                        UnionInstType *newInst = new UnionInstType( inst->get_qualifiers(), concDecl->get_name() );
     1899                        newInst->set_baseUnion( concDecl );
     1900
     1901                        deleteAll( typeSubs );
     1902                        delete inst;
     1903                        return newInst;
     1904                }
     1905
     1906        //      /// Gets the base struct or union declaration for a member expression; NULL if not applicable
     1907        //      AggregateDecl* getMemberBaseDecl( MemberExpr *memberExpr ) {
     1908        //              // get variable for member aggregate
     1909        //              VariableExpr *varExpr = dynamic_cast< VariableExpr* >( memberExpr->get_aggregate() );
     1910        //              if ( ! varExpr ) return NULL;
     1911        //
     1912        //              // get object for variable
     1913        //              ObjectDecl *objectDecl = dynamic_cast< ObjectDecl* >( varExpr->get_var() );
     1914        //              if ( ! objectDecl ) return NULL;
     1915        //
     1916        //              // get base declaration from object type
     1917        //              Type *objectType = objectDecl->get_type();
     1918        //              StructInstType *structType = dynamic_cast< StructInstType* >( objectType );
     1919        //              if ( structType ) return structType->get_baseStruct();
     1920        //              UnionInstType *unionType = dynamic_cast< UnionInstType* >( objectType );
     1921        //              if ( unionType ) return unionType->get_baseUnion();
     1922        //
     1923        //              return NULL;
     1924        //      }
     1925        //
     1926        //      /// Finds the declaration with the given name, returning decls.end() if none such
     1927        //      std::list< Declaration* >::const_iterator findDeclNamed( const std::list< Declaration* > &decls, const std::string &name ) {
     1928        //              for( std::list< Declaration* >::const_iterator decl = decls.begin(); decl != decls.end(); ++decl ) {
     1929        //                      if ( (*decl)->get_name() == name ) return decl;
     1930        //              }
     1931        //              return decls.end();
     1932        //      }
     1933        //
     1934        //      Expression* Instantiate::mutate( MemberExpr *memberExpr ) {
     1935        //              // mutate, exiting early if no longer MemberExpr
     1936        //              Expression *expr = Mutator::mutate( memberExpr );
     1937        //              memberExpr = dynamic_cast< MemberExpr* >( expr );
     1938        //              if ( ! memberExpr ) return expr;
     1939        //
     1940        //              // get declaration of member and base declaration of member, exiting early if not found
     1941        //              AggregateDecl *memberBase = getMemberBaseDecl( memberExpr );
     1942        //              if ( ! memberBase ) return memberExpr;
     1943        //              DeclarationWithType *memberDecl = memberExpr->get_member();
     1944        //              std::list< Declaration* >::const_iterator baseIt = findDeclNamed( memberBase->get_members(), memberDecl->get_name() );
     1945        //              if ( baseIt == memberBase->get_members().end() ) return memberExpr;
     1946        //              DeclarationWithType *baseDecl = dynamic_cast< DeclarationWithType* >( *baseIt );
     1947        //              if ( ! baseDecl ) return memberExpr;
     1948        //
     1949        //              // check if stated type of the member is not the type of the member's declaration; if so, need a cast
     1950        //              // this *SHOULD* be safe, I don't think anything but the void-replacements I put in for dtypes would make it past the typechecker
     1951        //              SymTab::Indexer dummy;
     1952        //              if ( ResolvExpr::typesCompatible( memberDecl->get_type(), baseDecl->get_type(), dummy ) ) return memberExpr;
     1953        //              else return new CastExpr( memberExpr, memberDecl->get_type() );
     1954        //      }
     1955
     1956                void GenericInstantiator::doBeginScope() {
     1957                        DeclMutator::doBeginScope();
     1958                        instantiations.beginScope();
     1959                }
     1960
     1961                void GenericInstantiator::doEndScope() {
     1962                        DeclMutator::doEndScope();
     1963                        instantiations.endScope();
     1964                }
     1965
     1966////////////////////////////////////////// PolyGenericCalculator ////////////////////////////////////////////////////
     1967
     1968                void PolyGenericCalculator::beginTypeScope( Type *ty ) {
     1969                        scopeTyVars.beginScope();
     1970                        makeTyVarMap( ty, scopeTyVars );
     1971                }
     1972
     1973                void PolyGenericCalculator::endTypeScope() {
     1974                        scopeTyVars.endScope();
     1975                }
     1976
     1977                template< typename DeclClass >
     1978                DeclClass * PolyGenericCalculator::handleDecl( DeclClass *decl, Type *type ) {
     1979                        beginTypeScope( type );
     1980                        knownLayouts.beginScope();
     1981                        knownOffsets.beginScope();
     1982
     1983                        DeclClass *ret = static_cast< DeclClass *>( Mutator::mutate( decl ) );
     1984
     1985                        knownOffsets.endScope();
     1986                        knownLayouts.endScope();
     1987                        endTypeScope();
     1988                        return ret;
     1989                }
     1990
     1991                ObjectDecl * PolyGenericCalculator::mutate( ObjectDecl *objectDecl ) {
     1992                        return handleDecl( objectDecl, objectDecl->get_type() );
     1993                }
     1994
     1995                DeclarationWithType * PolyGenericCalculator::mutate( FunctionDecl *functionDecl ) {
     1996                        return handleDecl( functionDecl, functionDecl->get_functionType() );
     1997                }
     1998
     1999                TypedefDecl * PolyGenericCalculator::mutate( TypedefDecl *typedefDecl ) {
     2000                        return handleDecl( typedefDecl, typedefDecl->get_base() );
     2001                }
     2002
     2003                TypeDecl * PolyGenericCalculator::mutate( TypeDecl *typeDecl ) {
     2004                        scopeTyVars[ typeDecl->get_name() ] = typeDecl->get_kind();
     2005                        return Mutator::mutate( typeDecl );
     2006                }
     2007
     2008                Type * PolyGenericCalculator::mutate( PointerType *pointerType ) {
     2009                        beginTypeScope( pointerType );
     2010
     2011                        Type *ret = Mutator::mutate( pointerType );
     2012
     2013                        endTypeScope();
     2014                        return ret;
     2015                }
     2016
     2017                Type * PolyGenericCalculator::mutate( FunctionType *funcType ) {
     2018                        beginTypeScope( funcType );
     2019
     2020                        // make sure that any type information passed into the function is accounted for
     2021                        for ( std::list< DeclarationWithType* >::const_iterator fnParm = funcType->get_parameters().begin(); fnParm != funcType->get_parameters().end(); ++fnParm ) {
     2022                                // condition here duplicates that in Pass2::mutate( FunctionType* )
     2023                                Type *polyType = isPolyType( (*fnParm)->get_type(), scopeTyVars );
     2024                                if ( polyType && ! dynamic_cast< TypeInstType* >( polyType ) ) {
     2025                                        knownLayouts.insert( mangleType( polyType ) );
     2026                                }
     2027                        }
     2028
     2029                        Type *ret = Mutator::mutate( funcType );
     2030
     2031                        endTypeScope();
     2032                        return ret;
     2033                }
     2034
     2035                Statement *PolyGenericCalculator::mutate( DeclStmt *declStmt ) {
     2036                        if ( ObjectDecl *objectDecl = dynamic_cast< ObjectDecl *>( declStmt->get_decl() ) ) {
     2037                                if ( findGeneric( objectDecl->get_type() ) ) {
     2038                                        // change initialization of a polymorphic value object
     2039                                        // to allocate storage with alloca
     2040                                        Type *declType = objectDecl->get_type();
     2041                                        UntypedExpr *alloc = new UntypedExpr( new NameExpr( "__builtin_alloca" ) );
     2042                                        alloc->get_args().push_back( new NameExpr( sizeofName( mangleType( declType ) ) ) );
     2043
     2044                                        delete objectDecl->get_init();
     2045
     2046                                        std::list<Expression*> designators;
     2047                                        objectDecl->set_init( new SingleInit( alloc, designators, false ) ); // not constructed
     2048                                }
     2049                        }
     2050                        return Mutator::mutate( declStmt );
     2051                }
     2052
     2053                /// Finds the member in the base list that matches the given declaration; returns its index, or -1 if not present
     2054                long findMember( DeclarationWithType *memberDecl, std::list< Declaration* > &baseDecls ) {
     2055                        long i = 0;
     2056                        for(std::list< Declaration* >::const_iterator decl = baseDecls.begin(); decl != baseDecls.end(); ++decl, ++i ) {
     2057                                if ( memberDecl->get_name() != (*decl)->get_name() ) continue;
     2058
     2059                                if ( DeclarationWithType *declWithType = dynamic_cast< DeclarationWithType* >( *decl ) ) {
     2060                                        if ( memberDecl->get_mangleName().empty() || declWithType->get_mangleName().empty()
     2061                                             || memberDecl->get_mangleName() == declWithType->get_mangleName() ) return i;
     2062                                        else continue;
     2063                                } else return i;
     2064                        }
     2065                        return -1;
     2066                }
     2067
     2068                /// Returns an index expression into the offset array for a type
     2069                Expression *makeOffsetIndex( Type *objectType, long i ) {
     2070                        std::stringstream offset_namer;
     2071                        offset_namer << i;
     2072                        ConstantExpr *fieldIndex = new ConstantExpr( Constant( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), offset_namer.str() ) );
     2073                        UntypedExpr *fieldOffset = new UntypedExpr( new NameExpr( "?[?]" ) );
     2074                        fieldOffset->get_args().push_back( new NameExpr( offsetofName( mangleType( objectType ) ) ) );
     2075                        fieldOffset->get_args().push_back( fieldIndex );
     2076                        return fieldOffset;
     2077                }
     2078
     2079                /// Returns an expression dereferenced n times
     2080                Expression *makeDerefdVar( Expression *derefdVar, long n ) {
     2081                        for ( int i = 1; i < n; ++i ) {
     2082                                UntypedExpr *derefExpr = new UntypedExpr( new NameExpr( "*?" ) );
     2083                                derefExpr->get_args().push_back( derefdVar );
     2084                                // xxx - should set results on derefExpr
     2085                                derefdVar = derefExpr;
     2086                        }
     2087                        return derefdVar;
     2088                }
     2089
     2090                Expression *PolyGenericCalculator::mutate( MemberExpr *memberExpr ) {
     2091                        // mutate, exiting early if no longer MemberExpr
     2092                        Expression *expr = Mutator::mutate( memberExpr );
     2093                        memberExpr = dynamic_cast< MemberExpr* >( expr );
     2094                        if ( ! memberExpr ) return expr;
     2095
     2096                        // get declaration for base struct, exiting early if not found
     2097                        int varDepth;
     2098                        VariableExpr *varExpr = getBaseVar( memberExpr->get_aggregate(), &varDepth );
     2099                        if ( ! varExpr ) return memberExpr;
     2100                        ObjectDecl *objectDecl = dynamic_cast< ObjectDecl* >( varExpr->get_var() );
     2101                        if ( ! objectDecl ) return memberExpr;
     2102
     2103                        // only mutate member expressions for polymorphic types
     2104                        int tyDepth;
     2105                        Type *objectType = hasPolyBase( objectDecl->get_type(), scopeTyVars, &tyDepth );
     2106                        if ( ! objectType ) return memberExpr;
     2107                        findGeneric( objectType ); // ensure layout for this type is available
     2108
     2109                        Expression *newMemberExpr = 0;
     2110                        if ( StructInstType *structType = dynamic_cast< StructInstType* >( objectType ) ) {
     2111                                // look up offset index
     2112                                long i = findMember( memberExpr->get_member(), structType->get_baseStruct()->get_members() );
     2113                                if ( i == -1 ) return memberExpr;
     2114
     2115                                // replace member expression with pointer to base plus offset
     2116                                UntypedExpr *fieldLoc = new UntypedExpr( new NameExpr( "?+?" ) );
     2117                                fieldLoc->get_args().push_back( makeDerefdVar( varExpr->clone(), varDepth ) );
     2118                                fieldLoc->get_args().push_back( makeOffsetIndex( objectType, i ) );
     2119                                newMemberExpr = fieldLoc;
     2120                        } else if ( dynamic_cast< UnionInstType* >( objectType ) ) {
     2121                                // union members are all at offset zero, so build appropriately-dereferenced variable
     2122                                newMemberExpr = makeDerefdVar( varExpr->clone(), varDepth );
     2123                        } else return memberExpr;
     2124                        assert( newMemberExpr );
     2125
     2126                        Type *memberType = memberExpr->get_member()->get_type();
     2127                        if ( ! isPolyType( memberType, scopeTyVars ) ) {
     2128                                // Not all members of a polymorphic type are themselves of polymorphic type; in this case the member expression should be wrapped and dereferenced to form an lvalue
     2129                                CastExpr *ptrCastExpr = new CastExpr( newMemberExpr, new PointerType( Type::Qualifiers(), memberType->clone() ) );
     2130                                UntypedExpr *derefExpr = new UntypedExpr( new NameExpr( "*?" ) );
     2131                                derefExpr->get_args().push_back( ptrCastExpr );
     2132                                newMemberExpr = derefExpr;
     2133                        }
     2134
     2135                        delete memberExpr;
     2136                        return newMemberExpr;
     2137                }
     2138
     2139                ObjectDecl *PolyGenericCalculator::makeVar( const std::string &name, Type *type, Initializer *init ) {
     2140                        ObjectDecl *newObj = new ObjectDecl( name, DeclarationNode::NoStorageClass, LinkageSpec::C, 0, type, init );
     2141                        stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
     2142                        return newObj;
     2143                }
     2144
     2145                void PolyGenericCalculator::addOtypeParamsToLayoutCall( UntypedExpr *layoutCall, const std::list< Type* > &otypeParams ) {
     2146                        for ( std::list< Type* >::const_iterator param = otypeParams.begin(); param != otypeParams.end(); ++param ) {
     2147                                if ( findGeneric( *param ) ) {
     2148                                        // push size/align vars for a generic parameter back
     2149                                        std::string paramName = mangleType( *param );
     2150                                        layoutCall->get_args().push_back( new NameExpr( sizeofName( paramName ) ) );
     2151                                        layoutCall->get_args().push_back( new NameExpr( alignofName( paramName ) ) );
     2152                                } else {
     2153                                        layoutCall->get_args().push_back( new SizeofExpr( (*param)->clone() ) );
     2154                                        layoutCall->get_args().push_back( new AlignofExpr( (*param)->clone() ) );
     2155                                }
     2156                        }
     2157                }
     2158
     2159                /// returns true if any of the otype parameters have a dynamic layout and puts all otype parameters in the output list
     2160                bool findGenericParams( std::list< TypeDecl* > &baseParams, std::list< Expression* > &typeParams, std::list< Type* > &out ) {
     2161                        bool hasDynamicLayout = false;
     2162
     2163                        std::list< TypeDecl* >::const_iterator baseParam = baseParams.begin();
     2164                        std::list< Expression* >::const_iterator typeParam = typeParams.begin();
     2165                        for ( ; baseParam != baseParams.end() && typeParam != typeParams.end(); ++baseParam, ++typeParam ) {
     2166                                // skip non-otype parameters
     2167                                if ( (*baseParam)->get_kind() != TypeDecl::Any ) continue;
     2168                                TypeExpr *typeExpr = dynamic_cast< TypeExpr* >( *typeParam );
     2169                                assert( typeExpr && "all otype parameters should be type expressions" );
     2170
     2171                                Type *type = typeExpr->get_type();
     2172                                out.push_back( type );
     2173                                if ( isPolyType( type ) ) hasDynamicLayout = true;
     2174                        }
     2175                        assert( baseParam == baseParams.end() && typeParam == typeParams.end() );
     2176
     2177                        return hasDynamicLayout;
     2178                }
     2179
     2180                bool PolyGenericCalculator::findGeneric( Type *ty ) {
     2181                        ty = replaceTypeInst( ty, env );
     2182
     2183                        if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( ty ) ) {
     2184                                if ( scopeTyVars.find( typeInst->get_name() ) != scopeTyVars.end() ) {
     2185                                        // NOTE assumes here that getting put in the scopeTyVars included having the layout variables set
     2186                                        return true;
     2187                                }
     2188                                return false;
     2189                        } else if ( StructInstType *structTy = dynamic_cast< StructInstType* >( ty ) ) {
     2190                                // check if this type already has a layout generated for it
     2191                                std::string typeName = mangleType( ty );
     2192                                if ( knownLayouts.find( typeName ) != knownLayouts.end() ) return true;
     2193
     2194                                // check if any of the type parameters have dynamic layout; if none do, this type is (or will be) monomorphized
     2195                                std::list< Type* > otypeParams;
     2196                                if ( ! findGenericParams( *structTy->get_baseParameters(), structTy->get_parameters(), otypeParams ) ) return false;
     2197
     2198                                // insert local variables for layout and generate call to layout function
     2199                                knownLayouts.insert( typeName );  // done early so as not to interfere with the later addition of parameters to the layout call
     2200                                Type *layoutType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
     2201
     2202                                int n_members = structTy->get_baseStruct()->get_members().size();
     2203                                if ( n_members == 0 ) {
     2204                                        // all empty structs have the same layout - size 1, align 1
     2205                                        makeVar( sizeofName( typeName ), layoutType, new SingleInit( new ConstantExpr( Constant::from_ulong( (unsigned long)1 ) ) ) );
     2206                                        makeVar( alignofName( typeName ), layoutType->clone(), new SingleInit( new ConstantExpr( Constant::from_ulong( (unsigned long)1 ) ) ) );
     2207                                        // NOTE zero-length arrays are forbidden in C, so empty structs have no offsetof array
     2208                                } else {
     2209                                        ObjectDecl *sizeVar = makeVar( sizeofName( typeName ), layoutType );
     2210                                        ObjectDecl *alignVar = makeVar( alignofName( typeName ), layoutType->clone() );
     2211                                        ObjectDecl *offsetVar = makeVar( offsetofName( typeName ), new ArrayType( Type::Qualifiers(), layoutType->clone(), new ConstantExpr( Constant::from_int( n_members ) ), false, false ) );
     2212
     2213                                        // generate call to layout function
     2214                                        UntypedExpr *layoutCall = new UntypedExpr( new NameExpr( layoutofName( structTy->get_baseStruct() ) ) );
     2215                                        layoutCall->get_args().push_back( new AddressExpr( new VariableExpr( sizeVar ) ) );
     2216                                        layoutCall->get_args().push_back( new AddressExpr( new VariableExpr( alignVar ) ) );
     2217                                        layoutCall->get_args().push_back( new VariableExpr( offsetVar ) );
     2218                                        addOtypeParamsToLayoutCall( layoutCall, otypeParams );
     2219
     2220                                        stmtsToAdd.push_back( new ExprStmt( noLabels, layoutCall ) );
     2221                                }
     2222
     2223                                return true;
     2224                        } else if ( UnionInstType *unionTy = dynamic_cast< UnionInstType* >( ty ) ) {
     2225                                // check if this type already has a layout generated for it
     2226                                std::string typeName = mangleType( ty );
     2227                                if ( knownLayouts.find( typeName ) != knownLayouts.end() ) return true;
     2228
     2229                                // check if any of the type parameters have dynamic layout; if none do, this type is (or will be) monomorphized
     2230                                std::list< Type* > otypeParams;
     2231                                if ( ! findGenericParams( *unionTy->get_baseParameters(), unionTy->get_parameters(), otypeParams ) ) return false;
     2232
     2233                                // insert local variables for layout and generate call to layout function
     2234                                knownLayouts.insert( typeName );  // done early so as not to interfere with the later addition of parameters to the layout call
     2235                                Type *layoutType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
     2236
     2237                                ObjectDecl *sizeVar = makeVar( sizeofName( typeName ), layoutType );
     2238                                ObjectDecl *alignVar = makeVar( alignofName( typeName ), layoutType->clone() );
     2239
     2240                                // generate call to layout function
     2241                                UntypedExpr *layoutCall = new UntypedExpr( new NameExpr( layoutofName( unionTy->get_baseUnion() ) ) );
     2242                                layoutCall->get_args().push_back( new AddressExpr( new VariableExpr( sizeVar ) ) );
     2243                                layoutCall->get_args().push_back( new AddressExpr( new VariableExpr( alignVar ) ) );
     2244                                addOtypeParamsToLayoutCall( layoutCall, otypeParams );
     2245
     2246                                stmtsToAdd.push_back( new ExprStmt( noLabels, layoutCall ) );
     2247
     2248                                return true;
     2249                        }
     2250
     2251                        return false;
     2252                }
     2253
     2254                Expression *PolyGenericCalculator::mutate( SizeofExpr *sizeofExpr ) {
     2255                        Type *ty = sizeofExpr->get_type();
     2256                        if ( findGeneric( ty ) ) {
     2257                                Expression *ret = new NameExpr( sizeofName( mangleType( ty ) ) );
     2258                                delete sizeofExpr;
     2259                                return ret;
     2260                        }
     2261                        return sizeofExpr;
     2262                }
     2263
     2264                Expression *PolyGenericCalculator::mutate( AlignofExpr *alignofExpr ) {
     2265                        Type *ty = alignofExpr->get_type();
     2266                        if ( findGeneric( ty ) ) {
     2267                                Expression *ret = new NameExpr( alignofName( mangleType( ty ) ) );
     2268                                delete alignofExpr;
     2269                                return ret;
     2270                        }
     2271                        return alignofExpr;
     2272                }
     2273
     2274                Expression *PolyGenericCalculator::mutate( OffsetofExpr *offsetofExpr ) {
     2275                        // mutate, exiting early if no longer OffsetofExpr
     2276                        Expression *expr = Mutator::mutate( offsetofExpr );
     2277                        offsetofExpr = dynamic_cast< OffsetofExpr* >( expr );
     2278                        if ( ! offsetofExpr ) return expr;
     2279
     2280                        // only mutate expressions for polymorphic structs/unions
     2281                        Type *ty = offsetofExpr->get_type();
     2282                        if ( ! findGeneric( ty ) ) return offsetofExpr;
     2283
     2284                        if ( StructInstType *structType = dynamic_cast< StructInstType* >( ty ) ) {
     2285                                // replace offsetof expression by index into offset array
     2286                                long i = findMember( offsetofExpr->get_member(), structType->get_baseStruct()->get_members() );
     2287                                if ( i == -1 ) return offsetofExpr;
     2288
     2289                                Expression *offsetInd = makeOffsetIndex( ty, i );
     2290                                delete offsetofExpr;
     2291                                return offsetInd;
     2292                        } else if ( dynamic_cast< UnionInstType* >( ty ) ) {
     2293                                // all union members are at offset zero
     2294                                delete offsetofExpr;
     2295                                return new ConstantExpr( Constant( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), "0" ) );
     2296                        } else return offsetofExpr;
     2297                }
     2298
     2299                Expression *PolyGenericCalculator::mutate( OffsetPackExpr *offsetPackExpr ) {
     2300                        StructInstType *ty = offsetPackExpr->get_type();
     2301
     2302                        Expression *ret = 0;
     2303                        if ( findGeneric( ty ) ) {
     2304                                // pull offset back from generated type information
     2305                                ret = new NameExpr( offsetofName( mangleType( ty ) ) );
     2306                        } else {
     2307                                std::string offsetName = offsetofName( mangleType( ty ) );
     2308                                if ( knownOffsets.find( offsetName ) != knownOffsets.end() ) {
     2309                                        // use the already-generated offsets for this type
     2310                                        ret = new NameExpr( offsetName );
     2311                                } else {
     2312                                        knownOffsets.insert( offsetName );
     2313
     2314                                        std::list< Declaration* > &baseMembers = ty->get_baseStruct()->get_members();
     2315                                        Type *offsetType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
     2316
     2317                                        // build initializer list for offset array
     2318                                        std::list< Initializer* > inits;
     2319                                        for ( std::list< Declaration* >::const_iterator member = baseMembers.begin(); member != baseMembers.end(); ++member ) {
     2320                                                DeclarationWithType *memberDecl;
     2321                                                if ( DeclarationWithType *origMember = dynamic_cast< DeclarationWithType* >( *member ) ) {
     2322                                                        memberDecl = origMember->clone();
     2323                                                } else {
     2324                                                        memberDecl = new ObjectDecl( (*member)->get_name(), DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, offsetType->clone(), 0 );
     2325                                                }
     2326                                                inits.push_back( new SingleInit( new OffsetofExpr( ty->clone(), memberDecl ) ) );
     2327                                        }
     2328
     2329                                        // build the offset array and replace the pack with a reference to it
     2330                                        ObjectDecl *offsetArray = makeVar( offsetName, new ArrayType( Type::Qualifiers(), offsetType, new ConstantExpr( Constant::from_ulong( baseMembers.size() ) ), false, false ),
     2331                                                        new ListInit( inits ) );
     2332                                        ret = new VariableExpr( offsetArray );
     2333                                }
     2334                        }
     2335
     2336                        delete offsetPackExpr;
     2337                        return ret;
     2338                }
     2339
     2340                void PolyGenericCalculator::doBeginScope() {
     2341                        knownLayouts.beginScope();
     2342                        knownOffsets.beginScope();
     2343                }
     2344
     2345                void PolyGenericCalculator::doEndScope() {
     2346                        knownLayouts.endScope();
     2347                        knownOffsets.endScope();
    10222348                }
    10232349
     
    10262352                template< typename DeclClass >
    10272353                DeclClass * Pass3::handleDecl( DeclClass *decl, Type *type ) {
    1028                         TyVarMap oldtyVars = scopeTyVars;
     2354                        scopeTyVars.beginScope();
    10292355                        makeTyVarMap( type, scopeTyVars );
    1030  
     2356
    10312357                        DeclClass *ret = static_cast< DeclClass *>( Mutator::mutate( decl ) );
    10322358                        ScrubTyVars::scrub( decl, scopeTyVars );
    10332359
    1034                         scopeTyVars = oldtyVars;
     2360                        scopeTyVars.endScope();
    10352361                        return ret;
    10362362                }
     
    10492375
    10502376                TypeDecl * Pass3::mutate( TypeDecl *typeDecl ) {
    1051 ///   Initializer *init = 0;
    1052 ///   std::list< Expression *> designators;
    1053 ///   scopeTyVars[ typeDecl->get_name() ] = typeDecl->get_kind();
    1054 ///   if ( typeDecl->get_base() ) {
    1055 ///     init = new SimpleInit( new SizeofExpr( handleDecl( typeDecl, typeDecl->get_base() ) ), designators );
    1056 ///   }
    1057 ///   return new ObjectDecl( typeDecl->get_name(), Declaration::Extern, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::UnsignedInt ), init );
     2377//   Initializer *init = 0;
     2378//   std::list< Expression *> designators;
     2379//   scopeTyVars[ typeDecl->get_name() ] = typeDecl->get_kind();
     2380//   if ( typeDecl->get_base() ) {
     2381//     init = new SimpleInit( new SizeofExpr( handleDecl( typeDecl, typeDecl->get_base() ) ), designators );
     2382//   }
     2383//   return new ObjectDecl( typeDecl->get_name(), Declaration::Extern, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::UnsignedInt ), init );
    10582384
    10592385                        scopeTyVars[ typeDecl->get_name() ] = typeDecl->get_kind();
     
    10622388
    10632389                Type * Pass3::mutate( PointerType *pointerType ) {
    1064                         TyVarMap oldtyVars = scopeTyVars;
     2390                        scopeTyVars.beginScope();
    10652391                        makeTyVarMap( pointerType, scopeTyVars );
    1066  
     2392
    10672393                        Type *ret = Mutator::mutate( pointerType );
    1068  
    1069                         scopeTyVars = oldtyVars;
     2394
     2395                        scopeTyVars.endScope();
    10702396                        return ret;
    10712397                }
    10722398
    10732399                Type * Pass3::mutate( FunctionType *functionType ) {
    1074                         TyVarMap oldtyVars = scopeTyVars;
     2400                        scopeTyVars.beginScope();
    10752401                        makeTyVarMap( functionType, scopeTyVars );
    1076  
     2402
    10772403                        Type *ret = Mutator::mutate( functionType );
    1078  
    1079                         scopeTyVars = oldtyVars;
     2404
     2405                        scopeTyVars.endScope();
    10802406                        return ret;
    1081                 }
    1082 
    1083                 Statement *Pass3::mutate( DeclStmt *declStmt ) {
    1084                         if ( ObjectDecl *objectDecl = dynamic_cast< ObjectDecl *>( declStmt->get_decl() ) ) {
    1085                                 if ( isPolyVal( objectDecl->get_type(), scopeTyVars ) ) {
    1086                                         // change initialization of a polymorphic value object
    1087                                         // to allocate storage with alloca
    1088                                         TypeInstType *typeInst = dynamic_cast< TypeInstType *>( objectDecl->get_type() );
    1089                                         assert( typeInst );
    1090                                         UntypedExpr *alloc = new UntypedExpr( new NameExpr( "__builtin_alloca" ) );
    1091                                         alloc->get_args().push_back( new NameExpr( typeInst->get_name() ) );
    1092 
    1093                                         delete objectDecl->get_init();
    1094 
    1095                                         std::list<Expression*> designators;
    1096                                         objectDecl->set_init( new SingleInit( alloc, designators ) );
    1097                                 }
    1098                         }
    1099                         return Mutator::mutate( declStmt );
    11002407                }
    11012408        } // anonymous namespace
  • src/GenPoly/Box.h

    r679864e1 r242d458  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:32:33 2015
    13 // Update Count     : 2
     12// Last Modified On : Thu Nov 19 17:24:01 2015
     13// Update Count     : 5
    1414//
    1515
  • src/GenPoly/CopyParams.cc

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

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // FindFunction.cc -- 
     7// FindFunction.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:35:48 2015
    13 // Update Count     : 1
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri Feb 05 12:22:20 2016
     13// Update Count     : 6
    1414//
    1515
     
    1919#include "SynTree/Visitor.h"
    2020
     21#include "ScrubTyVars.h"
     22
    2123namespace GenPoly {
    2224        class FindFunction : public Mutator {
    2325          public:
    2426                FindFunction( std::list< FunctionType* > &functions, const TyVarMap &tyVars, bool replaceMode, FindFunctionPredicate predicate );
    25  
     27
    2628                virtual Type *mutate( FunctionType *functionType );
    2729                virtual Type *mutate( PointerType *pointerType );
     
    5355                        TyVarMap::iterator var = tyVars.find( (*i)->get_name() );
    5456                        if ( var != tyVars.end() ) {
    55                                 tyVars.erase( var );
     57                                tyVars.erase( var->first );
    5658                        } // if
    5759                } // for
     
    5961
    6062        Type * FindFunction::mutate( FunctionType *functionType ) {
    61                 TyVarMap oldTyVars = tyVars;
     63                tyVars.beginScope();
    6264                handleForall( functionType->get_forall() );
    6365                mutateAll( functionType->get_returnVals(), *this );
     
    6668                        functions.push_back( functionType );
    6769                        if ( replaceMode ) {
    68                                 ret = new FunctionType( Type::Qualifiers(), true );
     70                                // replace type parameters in function type with void*
     71                                ret = ScrubTyVars::scrub( functionType->clone(), tyVars );
    6972                        } // if
    7073                } // if
    71                 tyVars = oldTyVars;
     74                tyVars.endScope();
    7275                return ret;
    7376        }
    7477
    7578        Type * FindFunction::mutate( PointerType *pointerType ) {
    76                 TyVarMap oldTyVars = tyVars;
     79                tyVars.beginScope();
    7780                handleForall( pointerType->get_forall() );
    7881                Type *ret = Mutator::mutate( pointerType );
    79                 tyVars = oldTyVars;
     82                tyVars.endScope();
    8083                return ret;
    8184        }
  • src/GenPoly/FindFunction.h

    r679864e1 r242d458  
    2323        typedef bool (*FindFunctionPredicate)( FunctionType*, const TyVarMap& );
    2424
     25        /// recursively walk `type`, placing all functions that match `predicate` under `tyVars` into `functions`
    2526        void findFunction( Type *type, std::list< FunctionType* > &functions, const TyVarMap &tyVars, FindFunctionPredicate predicate );
     27        /// like `findFunction`, but also replaces the function type with void ()(void)
    2628        void findAndReplaceFunction( Type *&type, std::list< FunctionType* > &functions, const TyVarMap &tyVars, FindFunctionPredicate predicate );
    2729} // namespace GenPoly
  • src/GenPoly/GenPoly.cc

    r679864e1 r242d458  
    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
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:37:46 2015
    13 // Update Count     : 1
     12// Last Modified On : Wed Jun 29 21:45:53 2016
     13// Update Count     : 14
    1414//
    1515
    1616#include "GenPoly.h"
     17
     18#include "SynTree/Expression.h"
    1719#include "SynTree/Type.h"
    1820
     
    2123
    2224namespace GenPoly {
    23         // interface functions
    24         bool isPolyVal( Type *type, const TyVarMap &tyVars ) {
    25                 return isPolyVal( type, tyVars, false );
    26         }
    27 
    28         bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVars ) { 
    29                 return needsAdapter( adaptee, tyVars, false );
    30         }
    31 
    32         bool isPolyVal( Type *type, const TyVarMap &tyVars, bool considerAllTyVars ) {
    33                 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( type ) ) {
    34                         if ( tyVars.find( typeInst->get_name() ) != tyVars.end() ) {
     25        bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVars ) {
     26                if ( ! adaptee->get_returnVals().empty() && isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
     27                        return true;
     28                } // if
     29                for ( std::list< DeclarationWithType* >::const_iterator innerArg = adaptee->get_parameters().begin(); innerArg != adaptee->get_parameters().end(); ++innerArg ) {
     30                        if ( isPolyType( (*innerArg)->get_type(), tyVars ) ) {
    3531                                return true;
    3632                        } // if
    37                         return considerAllTyVars;
     33                } // for
     34                return false;
     35        }
     36
     37        ReferenceToType *isPolyRet( FunctionType *function ) {
     38                if ( ! function->get_returnVals().empty() ) {
     39                        TyVarMap forallTypes( (TypeDecl::Kind)-1 );
     40                        makeTyVarMap( function, forallTypes );
     41                        return (ReferenceToType*)isPolyType( function->get_returnVals().front()->get_type(), forallTypes );
    3842                } // if
    39                 return false;
    40         }
    41 
    42         // A function needs an adapter if it returns a polymorphic value or if any of its
    43         // parameters have polymorphic type
    44         bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVars, bool considerAllTyVars ) {
    45                 bool needsAdapter = false;
    46                 if ( ! adaptee->get_returnVals().empty() && isPolyVal( adaptee->get_returnVals().front()->get_type(), tyVars, considerAllTyVars ) ) {
    47                         needsAdapter = true;
    48                 } // if
    49                 for ( std::list< DeclarationWithType* >::const_iterator innerArg = adaptee->get_parameters().begin(); ! needsAdapter && innerArg != adaptee->get_parameters().end(); ++innerArg ) {
    50                         if ( isPolyVal( (*innerArg)->get_type(), tyVars, considerAllTyVars ) ) {
    51                                 needsAdapter = true;
    52                         } // if
    53                 } // for
    54                 return needsAdapter;
     43                return 0;
     44        }
     45
     46        namespace {
     47                /// Checks a parameter list for polymorphic parameters; will substitute according to env if present
     48                bool hasPolyParams( std::list< Expression* >& params, const TypeSubstitution *env ) {
     49                        for ( std::list< Expression* >::iterator param = params.begin(); param != params.end(); ++param ) {
     50                                TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param );
     51                                assert(paramType && "Aggregate parameters should be type expressions");
     52                                if ( isPolyType( paramType->get_type(), env ) ) return true;
     53                        }
     54                        return false;
     55                }
     56
     57                /// Checks a parameter list for polymorphic parameters from tyVars; will substitute according to env if present
     58                bool hasPolyParams( std::list< Expression* >& params, const TyVarMap &tyVars, const TypeSubstitution *env ) {
     59                        for ( std::list< Expression* >::iterator param = params.begin(); param != params.end(); ++param ) {
     60                                TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param );
     61                                assert(paramType && "Aggregate parameters should be type expressions");
     62                                if ( isPolyType( paramType->get_type(), tyVars, env ) ) return true;
     63                        }
     64                        return false;
     65                }
     66        }
     67
     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
     77        Type *isPolyType( Type *type, const TypeSubstitution *env ) {
     78                type = replaceTypeInst( type, env );
     79
     80                if ( dynamic_cast< TypeInstType * >( type ) ) {
     81                        return type;
     82                } else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) {
     83                        if ( hasPolyParams( structType->get_parameters(), env ) ) return type;
     84                } else if ( UnionInstType *unionType = dynamic_cast< UnionInstType* >( type ) ) {
     85                        if ( hasPolyParams( unionType->get_parameters(), env ) ) return type;
     86                }
     87                return 0;
     88        }
     89
     90        Type *isPolyType( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env ) {
     91                type = replaceTypeInst( type, env );
     92
     93                if ( TypeInstType *typeInst = dynamic_cast< TypeInstType * >( type ) ) {
     94                        if ( tyVars.find( typeInst->get_name() ) != tyVars.end() ) {
     95                                return type;
     96                        }
     97                } else if ( StructInstType *structType = dynamic_cast< StructInstType* >( type ) ) {
     98                        if ( hasPolyParams( structType->get_parameters(), tyVars, env ) ) return type;
     99                } else if ( UnionInstType *unionType = dynamic_cast< UnionInstType* >( type ) ) {
     100                        if ( hasPolyParams( unionType->get_parameters(), tyVars, env ) ) return type;
     101                }
     102                return 0;
     103        }
     104
     105        Type *isPolyPtr( Type *type, const TypeSubstitution *env ) {
     106                type = replaceTypeInst( type, env );
     107
     108                if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
     109                        return isPolyType( ptr->get_base(), env );
     110                }
     111                return 0;
     112        }
     113
     114        Type *isPolyPtr( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env ) {
     115                type = replaceTypeInst( type, env );
     116
     117                if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
     118                        return isPolyType( ptr->get_base(), tyVars, env );
     119                }
     120                return 0;
     121        }
     122
     123        Type * hasPolyBase( Type *type, int *levels, const TypeSubstitution *env ) {
     124                int dummy;
     125                if ( ! levels ) { levels = &dummy; }
     126                *levels = 0;
     127
     128                while ( true ) {
     129                        type = replaceTypeInst( type, env );
     130
     131                        if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
     132                                type = ptr->get_base();
     133                                ++(*levels);
     134                        } else break;
     135                }
     136
     137                return isPolyType( type, env );
     138        }
     139
     140        Type * hasPolyBase( Type *type, const TyVarMap &tyVars, int *levels, const TypeSubstitution *env ) {
     141                int dummy;
     142                if ( ! levels ) { levels = &dummy; }
     143                *levels = 0;
     144
     145                while ( true ) {
     146                        type = replaceTypeInst( type, env );
     147
     148                        if ( PointerType *ptr = dynamic_cast< PointerType *>( type ) ) {
     149                                type = ptr->get_base();
     150                                ++(*levels);
     151                        } else break;
     152                }
     153
     154                return isPolyType( type, tyVars, env );
     155        }
     156
     157        FunctionType * getFunctionType( Type *ty ) {
     158                PointerType *ptrType;
     159                if ( ( ptrType = dynamic_cast< PointerType* >( ty ) ) ) {
     160                        return dynamic_cast< FunctionType* >( ptrType->get_base() ); // pointer if FunctionType, NULL otherwise
     161                } else {
     162                        return dynamic_cast< FunctionType* >( ty ); // pointer if FunctionType, NULL otherwise
     163                }
     164        }
     165
     166        VariableExpr * getBaseVar( Expression *expr, int *levels ) {
     167                int dummy;
     168                if ( ! levels ) { levels = &dummy; }
     169                *levels = 0;
     170
     171                while ( true ) {
     172                        if ( VariableExpr *varExpr = dynamic_cast< VariableExpr* >( expr ) ) {
     173                                return varExpr;
     174                        } else if ( MemberExpr *memberExpr = dynamic_cast< MemberExpr* >( expr ) ) {
     175                                expr = memberExpr->get_aggregate();
     176                        } else if ( AddressExpr *addressExpr = dynamic_cast< AddressExpr* >( expr ) ) {
     177                                expr = addressExpr->get_arg();
     178                        } else if ( UntypedExpr *untypedExpr = dynamic_cast< UntypedExpr* >( expr ) ) {
     179                                // look for compiler-inserted dereference operator
     180                                NameExpr *fn = dynamic_cast< NameExpr* >( untypedExpr->get_function() );
     181                                if ( ! fn || fn->get_name() != std::string("*?") ) return 0;
     182                                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;
     187                        } else break;
     188
     189                        ++(*levels);
     190                }
     191
     192                return 0;
     193        }
     194
     195        void makeTyVarMap( Type *type, TyVarMap &tyVarMap ) {
     196                for ( std::list< TypeDecl* >::const_iterator tyVar = type->get_forall().begin(); tyVar != type->get_forall().end(); ++tyVar ) {
     197                        assert( *tyVar );
     198                        tyVarMap[ (*tyVar)->get_name() ] = (*tyVar)->get_kind();
     199                }
     200                if ( PointerType *pointer = dynamic_cast< PointerType* >( type ) ) {
     201                        makeTyVarMap( pointer->get_base(), tyVarMap );
     202                }
    55203        }
    56204
     
    61209                os << std::endl;
    62210        }
     211
    63212} // namespace GenPoly
    64213
  • src/GenPoly/GenPoly.h

    r679864e1 r242d458  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:38:34 2015
    13 // Update Count     : 1
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Nov 24 15:24:38 2015
     13// Update Count     : 6
    1414//
    1515
     
    1717#define GENPOLY_H
    1818
    19 #include <map>
    2019#include <string>
    2120#include <iostream>
     21#include <utility>
     22
     23#include "ErasableScopedMap.h"
     24
     25#include "SymTab/Mangler.h"
     26
    2227#include "SynTree/Declaration.h"
     28#include "SynTree/Type.h"
     29#include "SynTree/TypeSubstitution.h"
    2330
    2431namespace GenPoly {
    25         typedef std::map< std::string, TypeDecl::Kind > TyVarMap;
     32        typedef ErasableScopedMap< std::string, TypeDecl::Kind > TyVarMap;
     33       
     34        /// A function needs an adapter if it returns a polymorphic value or if any of its
     35        /// parameters have polymorphic type
     36        bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVarr );
    2637
    27         // considerAllTyVars allows ignoring the contents of the TyVarMap parameter, for the situations where
    28         // it is important only that a TypeInstType node exists.
     38        /// true iff function has polymorphic return type
     39        ReferenceToType *isPolyRet( FunctionType *function );
    2940
    30         bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVarr );
    31         bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVars, bool considerAllTyVars );
    32         bool isPolyFun( FunctionType *fun, const TyVarMap &tyVars );
    33         bool isPolyVal( Type *type, const TyVarMap &tyVars );
    34         bool isPolyVal( Type *type, const TyVarMap &tyVars, bool considerAllTyVars );
     41        /// Replaces a TypeInstType by its referrent in the environment, if applicable
     42        Type* replaceTypeInst( Type* type, const TypeSubstitution* env );
     43       
     44        /// returns polymorphic type if is polymorphic type, NULL otherwise; will look up substitution in env if provided
     45        Type *isPolyType( Type *type, const TypeSubstitution *env = 0 );
     46       
     47        /// returns polymorphic type if is polymorphic type in tyVars, NULL otherwise; will look up substitution in env if provided
     48        Type *isPolyType( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env = 0 );
     49
     50        /// returns polymorphic type if is pointer to polymorphic type, NULL otherwise; will look up substitution in env if provided
     51        Type *isPolyPtr( Type *type, const TypeSubstitution *env = 0 );
     52       
     53        /// returns polymorphic type if is pointer to polymorphic type in tyVars, NULL otherwise; will look up substitution in env if provided
     54        Type *isPolyPtr( Type *type, const TyVarMap &tyVars, const TypeSubstitution *env = 0 );
     55
     56        /// if the base type (after dereferencing N >= 0 pointers) is a polymorphic type, returns the base type, NULL otherwise;
     57        /// N will be stored in levels, if provided, will look up substitution in env if provided
     58        Type *hasPolyBase( Type *type, int *levels = 0, const TypeSubstitution *env = 0 );
     59
     60        /// if the base type (after dereferencing N >= 0 pointers) is a polymorphic type in tyVars, returns the base type, NULL otherwise;
     61        /// N will be stored in levels, if provided, will look up substitution in env if provided
     62        Type *hasPolyBase( Type *type, const TyVarMap &tyVars, int *levels = 0, const TypeSubstitution *env = 0 );
     63
     64        /// Returns a pointer to the base FunctionType if ty is the type of a function (or pointer to one), NULL otherwise
     65        FunctionType *getFunctionType( Type *ty );
     66
     67        /// If expr (after dereferencing N >= 0 pointers) is a variable expression, returns the variable expression, NULL otherwise;
     68        /// N will be stored in levels, if provided
     69        VariableExpr *getBaseVar( Expression *expr, int *levels = 0 );
     70
     71        /// Adds the declarations in the forall list of type (and its pointed-to type if it's a pointer type) to `tyVarMap`
     72        void makeTyVarMap( Type *type, TyVarMap &tyVarMap );
     73       
     74        /// Prints type variable map
    3575        void printTyVarMap( std::ostream &os, const TyVarMap &tyVarMap );
     76
     77        /// Gets the mangled name of this type; alias for SymTab::Mangler::mangleType().
     78        inline std::string mangleType( Type *ty ) { return SymTab::Mangler::mangleType( ty ); }
     79       
     80        /// Gets the name of the sizeof parameter for the type, given its mangled name
     81        inline std::string sizeofName( const std::string &name ) { return std::string( "_sizeof_" ) + name; }
     82
     83        /// Gets the name of the alignof parameter for the type, given its mangled name
     84        inline std::string alignofName( const std::string &name ) { return std::string( "_alignof_" ) + name; }
     85
     86        /// Gets the name of the offsetof parameter for the type, given its mangled name
     87        inline std::string offsetofName( const std::string &name ) { return std::string( "_offsetof_" ) + name; }
     88
     89        /// Gets the name of the layout function for a given aggregate type, given its declaration
     90        inline std::string layoutofName( AggregateDecl *decl ) { return std::string( "_layoutof_" ) + decl->get_name(); }
     91       
    3692} // namespace GenPoly
    3793
  • src/GenPoly/Lvalue.cc

    r679864e1 r242d458  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:41:33 2015
    13 // Update Count     : 1
     12// Last Modified On : Tue Dec 15 15:33:13 2015
     13// Update Count     : 3
    1414//
    1515
     
    1717
    1818#include "Lvalue.h"
     19
     20#include "GenPoly.h"
    1921
    2022#include "SynTree/Declaration.h"
     
    2830#include "ResolvExpr/typeops.h"
    2931
    30 #include "UniqueName.h"
    31 #include "utility.h"
     32#include "Common/UniqueName.h"
     33#include "Common/utility.h"
    3234
    3335namespace GenPoly {
     
    3537                const std::list<Label> noLabels;
    3638
     39                /// Replace uses of lvalue returns with appropriate pointers
    3740                class Pass1 : public Mutator {
    3841                  public:
     
    4649                };
    4750
     51                /// Replace declarations of lvalue returns with appropriate pointers
    4852                class Pass2 : public Visitor {
    4953                  public:
     
    6165
    6266        namespace {
    63                 bool isLvalueRet( FunctionType *function ) {
    64                         if ( ! function->get_returnVals().empty() ) {
    65                                 return function->get_returnVals().front()->get_type()->get_isLvalue();
    66                         } else {
    67                                 return false;
    68                         } // if
     67                Type* isLvalueRet( FunctionType *function ) {
     68                        if ( function->get_returnVals().empty() ) return 0;
     69                        Type *ty = function->get_returnVals().front()->get_type();
     70                        return ty->get_isLvalue() ? ty : 0;
    6971                }
    7072
     
    105107                        assert( function );
    106108
    107                         std::string typeName;
    108                         if ( isLvalueRet( function ) && ! isIntrinsicApp( appExpr ) ) {
     109                        Type *funType = isLvalueRet( function );
     110                        if ( funType && ! isIntrinsicApp( appExpr ) ) {
     111                                Expression *expr = appExpr;
     112                                Type *appType = appExpr->get_results().front();
     113                                if ( isPolyType( funType ) && ! isPolyType( appType ) ) {
     114                                        // make sure cast for polymorphic type is inside dereference
     115                                        expr = new CastExpr( appExpr, new PointerType( Type::Qualifiers(), appType->clone() ) );
     116                                }
    109117                                UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    110                                 deref->get_results().push_back( appExpr->get_results().front() );
    111                                 appExpr->get_results().front() = new PointerType( Type::Qualifiers(), deref->get_results().front()->clone() );
    112                                 deref->get_args().push_back( appExpr );
     118                                deref->get_results().push_back( appType->clone() );
     119                                appExpr->get_results().front() = new PointerType( Type::Qualifiers(), appType );
     120                                deref->get_args().push_back( expr );
    113121                                return deref;
    114122                        } else {
     
    120128                        if ( retval && retStmt->get_expr() ) {
    121129                                assert( ! retStmt->get_expr()->get_results().empty() );
    122                                 while ( CastExpr *castExpr = dynamic_cast< CastExpr* >( retStmt->get_expr() ) ) {
    123                                         retStmt->set_expr( castExpr->get_arg() );
    124                                         retStmt->get_expr()->set_env( castExpr->get_env() );
    125                                         castExpr->set_env( 0 );
    126                                         castExpr->set_arg( 0 );
    127                                         delete castExpr;
    128                                 } // while
    129130                                if ( retStmt->get_expr()->get_results().front()->get_isLvalue() ) {
     131                                        // ***** Code Removal ***** because casts may be stripped already
     132
     133                                        // strip casts because not allowed to take address of cast
     134                                        // while ( CastExpr *castExpr = dynamic_cast< CastExpr* >( retStmt->get_expr() ) ) {
     135                                        //      retStmt->set_expr( castExpr->get_arg() );
     136                                        //      retStmt->get_expr()->set_env( castExpr->get_env() );
     137                                        //      castExpr->set_env( 0 );
     138                                        //      castExpr->set_arg( 0 );
     139                                        //      delete castExpr;
     140                                        // } // while
    130141                                        retStmt->set_expr( new AddressExpr( retStmt->get_expr()->acceptMutator( *this ) ) );
    131142                                } else {
  • src/GenPoly/PolyMutator.cc

    r679864e1 r242d458  
    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
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri Aug 14 15:28:50 2015
    13 // Update Count     : 11
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug  4 11:26:22 2016
     13// Update Count     : 16
    1414//
    1515
     
    2727        }
    2828
    29         PolyMutator::PolyMutator() : env( 0 ) {
    30         }
     29        PolyMutator::PolyMutator() : scopeTyVars( (TypeDecl::Kind)-1 ), env( 0 ) {}
    3130
    3231        void PolyMutator::mutateStatementList( std::list< Statement* > &statements ) {
     
    6463                                env = expr->get_env();
    6564                        }
     65                        // xxx - should env be cloned (or moved) onto the result of the mutate?
    6666                        return expr->acceptMutator( *this );
    6767                } else {
     
    9999
    100100        Statement * PolyMutator::mutate(SwitchStmt *switchStmt) {
    101                 mutateStatementList( switchStmt->get_branches() );
    102                 switchStmt->set_condition( mutateExpression( switchStmt->get_condition() ) );
    103                 return switchStmt;
    104         }
    105 
    106         Statement * PolyMutator::mutate(ChooseStmt *switchStmt) {
    107                 mutateStatementList( switchStmt->get_branches() );
     101                mutateStatementList( switchStmt->get_statements() );
    108102                switchStmt->set_condition( mutateExpression( switchStmt->get_condition() ) );
    109103                return switchStmt;
     
    145139                return untypedExpr;
    146140        }
    147  
    148  
     141
     142
    149143        Initializer *PolyMutator::mutate( SingleInit *singleInit ) {
    150144                singleInit->set_value( mutateExpression( singleInit->get_value() ) );
     
    152146        }
    153147
    154 
    155         /* static class method */
    156         void PolyMutator::makeTyVarMap( Type *type, TyVarMap &tyVarMap ) {
    157                 for ( std::list< TypeDecl* >::const_iterator tyVar = type->get_forall().begin(); tyVar != type->get_forall().end(); ++tyVar ) {
    158                         assert( *tyVar );
    159                         tyVarMap[ (*tyVar)->get_name() ] = (*tyVar)->get_kind();
    160                 }
    161                 if ( PointerType *pointer = dynamic_cast< PointerType* >( type ) ) {
    162                         makeTyVarMap( pointer->get_base(), tyVarMap );
    163                 }
    164         }
    165148} // namespace GenPoly
    166149
  • src/GenPoly/PolyMutator.h

    r679864e1 r242d458  
    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 Aug 14 15:27:38 2015
    13 // Update Count     : 4
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jul 12 17:39:41 2016
     13// Update Count     : 6
    1414//
    1515
     
    3737                virtual Statement* mutate(ForStmt *forStmt);
    3838                virtual Statement* mutate(SwitchStmt *switchStmt);
    39                 virtual Statement* mutate(ChooseStmt *chooseStmt);
    4039                virtual Statement* mutate(CaseStmt *caseStmt);
    4140                virtual Statement* mutate(TryStmt *returnStmt);
     
    5554                Statement* mutateStatement( Statement *stmt );
    5655                Expression* mutateExpression( Expression *expr );
    57                 static void makeTyVarMap( Type *type, TyVarMap &tyVarMap );
    5856 
    5957                TyVarMap scopeTyVars;
  • src/GenPoly/ScrubTyVars.cc

    r679864e1 r242d458  
    1414//
    1515
     16#include <sstream>
     17#include <string>
     18
    1619#include "GenPoly.h"
    1720#include "ScrubTyVars.h"
     
    2427        Type * ScrubTyVars::mutate( TypeInstType *typeInst ) {
    2528                TyVarMap::const_iterator tyVar = tyVars.find( typeInst->get_name() );
    26                 if ( doAll || tyVar != tyVars.end() ) {
     29                if ( tyVar != tyVars.end() ) {
    2730                        switch ( tyVar->second ) {
    2831                          case TypeDecl::Any:
     
    4144        }
    4245
     46        Type * ScrubTyVars::mutateAggregateType( Type *ty ) {
     47                if ( isPolyType( ty, tyVars ) ) {
     48                        PointerType *ret = new PointerType( Type::Qualifiers(), new VoidType( ty->get_qualifiers() ) );
     49                        delete ty;
     50                        return ret;
     51                }
     52                return ty;
     53        }
     54       
     55        Type * ScrubTyVars::mutate( StructInstType *structInst ) {
     56                return mutateAggregateType( structInst );
     57        }
     58
     59        Type * ScrubTyVars::mutate( UnionInstType *unionInst ) {
     60                return mutateAggregateType( unionInst );
     61        }
     62
    4363        Expression * ScrubTyVars::mutate( SizeofExpr *szeof ) {
    44                 // sizeof( T ) => T parameter, which is the size of T
    45                 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType * >( szeof->get_type() ) ) {
    46                         Expression *expr = new NameExpr( typeInst->get_name() );
     64                // sizeof( T ) => _sizeof_T parameter, which is the size of T
     65                if ( Type *polyType = isPolyType( szeof->get_type() ) ) {
     66                        Expression *expr = new NameExpr( sizeofName( mangleType( polyType ) ) );
    4767                        return expr;
    4868                } else {
     
    5171        }
    5272
     73        Expression * ScrubTyVars::mutate( AlignofExpr *algnof ) {
     74                // alignof( T ) => _alignof_T parameter, which is the alignment of T
     75                if ( Type *polyType = isPolyType( algnof->get_type() ) ) {
     76                        Expression *expr = new NameExpr( alignofName( mangleType( polyType ) ) );
     77                        return expr;
     78                } else {
     79                        return Mutator::mutate( algnof );
     80                } // if
     81        }
     82
    5383        Type * ScrubTyVars::mutate( PointerType *pointer ) {
    54                 if ( TypeInstType *typeInst = dynamic_cast< TypeInstType * >( pointer->get_base() ) ) {
    55                         if ( doAll || tyVars.find( typeInst->get_name() ) != tyVars.end() ) {
    56                                 Type *ret = mutate( typeInst );
    57                                 ret->get_qualifiers() += pointer->get_qualifiers();
    58                                 pointer->set_base( 0 );
    59                                 delete pointer;
    60                                 return ret;
    61                         } // if
    62                 } // if
     84                if ( Type *polyType = isPolyType( pointer->get_base(), tyVars ) ) {
     85                        Type *ret = polyType->acceptMutator( *this );
     86                        ret->get_qualifiers() += pointer->get_qualifiers();
     87                        pointer->set_base( 0 );
     88                        delete pointer;
     89                        return ret;
     90                }
    6391                return Mutator::mutate( pointer );
    6492        }
  • src/GenPoly/ScrubTyVars.h

    r679864e1 r242d458  
    1717#define _SCRUBTYVARS_H
    1818
     19#include <string>
     20
    1921#include "GenPoly.h"
    2022
     
    2527        class ScrubTyVars : public Mutator {
    2628          public:
    27                 ScrubTyVars( bool doAll, const TyVarMap &tyVars ): doAll( doAll ), tyVars( tyVars ) {}
    28  
     29                ScrubTyVars( const TyVarMap &tyVars ): tyVars( tyVars ) {}
     30
     31                /// For all polymorphic types with type variables in `tyVars`, replaces generic types, dtypes, and ftypes with the appropriate void type,
     32                /// and sizeof/alignof expressions with the proper variable
    2933                template< typename SynTreeClass >
    3034                static SynTreeClass *scrub( SynTreeClass *target, const TyVarMap &tyVars );
    31                 template< typename SynTreeClass >
    32                 static SynTreeClass *scrub( SynTreeClass *target );
    33  
     35
    3436                virtual Type* mutate( TypeInstType *typeInst );
    35                 Expression* mutate( SizeofExpr *szeof );
     37                virtual Type* mutate( StructInstType *structInst );
     38                virtual Type* mutate( UnionInstType *unionInst );
     39                virtual Expression* mutate( SizeofExpr *szeof );
     40                virtual Expression* mutate( AlignofExpr *algnof );
    3641                virtual Type* mutate( PointerType *pointer );
     42
    3743          private:
    38                 bool doAll;
     44                /// Mutates (possibly generic) aggregate types appropriately
     45                Type* mutateAggregateType( Type *ty );
     46               
    3947                const TyVarMap &tyVars;
    4048        };
     
    4351        template< typename SynTreeClass >
    4452        SynTreeClass * ScrubTyVars::scrub( SynTreeClass *target, const TyVarMap &tyVars ) {
    45                 ScrubTyVars scrubber( false, tyVars );
     53                ScrubTyVars scrubber( tyVars );
    4654                return static_cast< SynTreeClass * >( target->acceptMutator( scrubber ) );
    4755        }
    4856
    49         /* static class method */
    50         template< typename SynTreeClass >
    51         SynTreeClass * ScrubTyVars::scrub( SynTreeClass *target ) {
    52                 TyVarMap tyVars;
    53                 ScrubTyVars scrubber( true, tyVars );
    54                 return static_cast< SynTreeClass* >( target->acceptMutator( scrubber ) );
    55         }
    5657} // namespace GenPoly
    5758
  • src/GenPoly/Specialize.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Specialize.cc -- 
     7// Specialize.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Sep 22 14:04:13 2015
    13 // Update Count     : 15
     12// Last Modified On : Thu Apr 28 15:17:45 2016
     13// Update Count     : 24
    1414//
    1515
     
    1717
    1818#include "Specialize.h"
     19#include "GenPoly.h"
    1920#include "PolyMutator.h"
    2021
     
    2425#include "SynTree/Statement.h"
    2526#include "SynTree/Type.h"
     27#include "SynTree/Attribute.h"
    2628#include "SynTree/TypeSubstitution.h"
    2729#include "SynTree/Mutator.h"
    2830#include "ResolvExpr/FindOpenVars.h"
    29 #include "UniqueName.h"
    30 #include "utility.h"
     31#include "Common/UniqueName.h"
     32#include "Common/utility.h"
     33#include "InitTweak/InitTweak.h"
    3134
    3235namespace GenPoly {
     
    4043                virtual Expression * mutate( AddressExpr *castExpr );
    4144                virtual Expression * mutate( CastExpr *castExpr );
    42                 virtual Expression * mutate( LogicalExpr *logicalExpr );
    43                 virtual Expression * mutate( ConditionalExpr *conditionalExpr );
    44                 virtual Expression * mutate( CommaExpr *commaExpr );
     45                // virtual Expression * mutate( LogicalExpr *logicalExpr );
     46                // virtual Expression * mutate( ConditionalExpr *conditionalExpr );
     47                // virtual Expression * mutate( CommaExpr *commaExpr );
    4548
    4649          private:
     50                Expression *createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams = 0 );
    4751                Expression *doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams = 0 );
    4852                void handleExplicitParams( ApplicationExpr *appExpr );
     
    6165        }
    6266
     67        /// Looks up open variables in actual type, returning true if any of them are bound in the environment or formal type.
    6368        bool needsSpecialization( Type *formalType, Type *actualType, TypeSubstitution *env ) {
    6469                if ( env ) {
     
    8590        }
    8691
     92        /// Generates a thunk that calls `actual` with type `funType` and returns its address
     93        Expression * Specialize::createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams ) {
     94                FunctionType *newType = funType->clone();
     95                if ( env ) {
     96                        TypeSubstitution newEnv( *env );
     97                        // it is important to replace only occurrences of type variables that occur free in the
     98                        // thunk's type
     99                        newEnv.applyFree( newType );
     100                } // if
     101                // create new thunk with same signature as formal type (C linkage, empty body)
     102                FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( noLabels ), false, false );
     103                thunkFunc->fixUniqueId();
     104
     105                // thunks may be generated and not used - silence warning with attribute
     106                thunkFunc->get_attributes().push_back( new Attribute( "unused" ) );
     107
     108                // thread thunk parameters into call to actual function, naming thunk parameters as we go
     109                UniqueName paramNamer( paramPrefix );
     110                ApplicationExpr *appExpr = new ApplicationExpr( actual );
     111                for ( std::list< DeclarationWithType* >::iterator param = thunkFunc->get_functionType()->get_parameters().begin(); param != thunkFunc->get_functionType()->get_parameters().end(); ++param ) {
     112                        (*param )->set_name( paramNamer.newName() );
     113                        appExpr->get_args().push_back( new VariableExpr( *param ) );
     114                } // for
     115                appExpr->set_env( maybeClone( env ) );
     116                if ( inferParams ) {
     117                        appExpr->get_inferParams() = *inferParams;
     118                } // if
     119
     120                // handle any specializations that may still be present
     121                std::string oldParamPrefix = paramPrefix;
     122                paramPrefix += "p";
     123                // save stmtsToAdd in oldStmts
     124                std::list< Statement* > oldStmts;
     125                oldStmts.splice( oldStmts.end(), stmtsToAdd );
     126                handleExplicitParams( appExpr );
     127                paramPrefix = oldParamPrefix;
     128                // write any statements added for recursive specializations into the thunk body
     129                thunkFunc->get_statements()->get_kids().splice( thunkFunc->get_statements()->get_kids().end(), stmtsToAdd );
     130                // restore oldStmts into stmtsToAdd
     131                stmtsToAdd.splice( stmtsToAdd.end(), oldStmts );
     132
     133                // add return (or valueless expression) to the thunk
     134                Statement *appStmt;
     135                if ( funType->get_returnVals().empty() ) {
     136                        appStmt = new ExprStmt( noLabels, appExpr );
     137                } else {
     138                        appStmt = new ReturnStmt( noLabels, appExpr );
     139                } // if
     140                thunkFunc->get_statements()->get_kids().push_back( appStmt );
     141
     142                // add thunk definition to queue of statements to add
     143                stmtsToAdd.push_back( new DeclStmt( noLabels, thunkFunc ) );
     144                // return address of thunk function as replacement expression
     145                return new AddressExpr( new VariableExpr( thunkFunc ) );
     146        }
     147
    87148        Expression * Specialize::doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams ) {
    88                 assert( ! actual->get_results().empty() );
     149                assert( ! actual->get_results().empty() ); // using front, should have this assert
    89150                if ( needsSpecialization( formalType, actual->get_results().front(), env ) ) {
    90                         PointerType *ptrType;
    91151                        FunctionType *funType;
    92                         if ( ( ptrType = dynamic_cast< PointerType* >( formalType ) ) && ( funType = dynamic_cast< FunctionType* >( ptrType->get_base() ) ) ) {
    93                                 FunctionType *newType = funType->clone();
    94                                 if ( env ) {
    95                                         TypeSubstitution newEnv( *env );
    96                                         // it is important to replace only occurrences of type variables that occur free in the
    97                                         // thunk's type
    98                                         newEnv.applyFree( newType );
    99                                 } // if
    100                                 FunctionDecl *thunkFunc = new FunctionDecl( thunkNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, newType, new CompoundStmt( std::list< std::string >() ), false, false );
    101                                 thunkFunc->fixUniqueId();
    102 
    103                                 UniqueName paramNamer( paramPrefix );
    104                                 ApplicationExpr *appExpr = new ApplicationExpr( actual );
    105                                 for ( std::list< DeclarationWithType* >::iterator param = thunkFunc->get_functionType()->get_parameters().begin(); param != thunkFunc->get_functionType()->get_parameters().end(); ++param ) {
    106                                         (*param )->set_name( paramNamer.newName() );
    107                                         appExpr->get_args().push_back( new VariableExpr( *param ) );
    108                                 } // for
    109                                 appExpr->set_env( maybeClone( env ) );
    110                                 if ( inferParams ) {
    111                                         appExpr->get_inferParams() = *inferParams;
    112                                 } // if
    113 
    114                                 // handle any specializations that may still be present
    115                                 std::string oldParamPrefix = paramPrefix;
    116                                 paramPrefix += "p";
    117                                 std::list< Statement* > oldStmts;
    118                                 oldStmts.splice( oldStmts.end(), stmtsToAdd );
    119                                 handleExplicitParams( appExpr );
    120                                 paramPrefix = oldParamPrefix;
    121                                 thunkFunc->get_statements()->get_kids().splice( thunkFunc->get_statements()->get_kids().end(), stmtsToAdd );
    122                                 stmtsToAdd.splice( stmtsToAdd.end(), oldStmts );
    123 
    124                                 Statement *appStmt;
    125                                 if ( funType->get_returnVals().empty() ) {
    126                                         appStmt = new ExprStmt( noLabels, appExpr );
     152                        if ( ( funType = getFunctionType( formalType ) ) ) {
     153                                ApplicationExpr *appExpr;
     154                                VariableExpr *varExpr;
     155                                if ( ( appExpr = dynamic_cast<ApplicationExpr*>( actual ) ) ) {
     156                                        return createThunkFunction( funType, appExpr->get_function(), inferParams );
     157                                } else if ( ( varExpr = dynamic_cast<VariableExpr*>( actual ) ) ) {
     158                                        return createThunkFunction( funType, varExpr, inferParams );
    127159                                } else {
    128                                         appStmt = new ReturnStmt( noLabels, appExpr );
    129                                 } // if
    130                                 thunkFunc->get_statements()->get_kids().push_back( appStmt );
    131                                 stmtsToAdd.push_back( new DeclStmt( noLabels, thunkFunc ) );
    132                                 return new AddressExpr( new VariableExpr( thunkFunc ) );
     160                                        // This likely won't work, as anything that could build an ApplicationExpr probably hit one of the previous two branches
     161                                        return createThunkFunction( funType, actual, inferParams );
     162                                }
    133163                        } else {
    134164                                return actual;
     
    142172                // create thunks for the explicit parameters
    143173                assert( ! appExpr->get_function()->get_results().empty() );
    144                 PointerType *pointer = dynamic_cast< PointerType* >( appExpr->get_function()->get_results().front() );
    145                 assert( pointer );
    146                 FunctionType *function = dynamic_cast< FunctionType* >( pointer->get_base() );
     174                FunctionType *function = getFunctionType( appExpr->get_function()->get_results().front() );
     175                assert( function );
    147176                std::list< DeclarationWithType* >::iterator formal;
    148177                std::list< Expression* >::iterator actual;
     
    156185                mutateAll( appExpr->get_args(), *this );
    157186
    158                 // create thunks for the inferred parameters
    159                 for ( InferredParams::iterator inferParam = appExpr->get_inferParams().begin(); inferParam != appExpr->get_inferParams().end(); ++inferParam ) {
    160                         inferParam->second.expr = doSpecialization( inferParam->second.formalType, inferParam->second.expr, &appExpr->get_inferParams() );
    161                 }
    162 
    163                 handleExplicitParams( appExpr );
     187                if ( ! InitTweak::isIntrinsicCallExpr( appExpr ) ) {
     188                        // create thunks for the inferred parameters
     189                        // don't need to do this for intrinsic calls, because they aren't actually passed
     190                        for ( InferredParams::iterator inferParam = appExpr->get_inferParams().begin(); inferParam != appExpr->get_inferParams().end(); ++inferParam ) {
     191                                inferParam->second.expr = doSpecialization( inferParam->second.formalType, inferParam->second.expr, &appExpr->get_inferParams() );
     192                        }
     193
     194                        handleExplicitParams( appExpr );
     195                }
    164196
    165197                return appExpr;
     
    175207        Expression * Specialize::mutate( CastExpr *castExpr ) {
    176208                castExpr->get_arg()->acceptMutator( *this );
    177                 if ( ! castExpr->get_results().empty() ) {
    178                         // this may not be the correct condition, but previously the next statement
    179                         // was happening unchecked, causing a crash on a cast to void
    180                         castExpr->set_arg( doSpecialization( castExpr->get_results().front(), castExpr->get_arg() ) );         
    181                 }
    182                 return castExpr;
    183         }
    184 
    185         Expression * Specialize::mutate( LogicalExpr *logicalExpr ) {
    186                 return logicalExpr;
    187         }
    188 
    189         Expression * Specialize::mutate( ConditionalExpr *condExpr ) {
    190                 return condExpr;
    191         }
    192 
    193         Expression * Specialize::mutate( CommaExpr *commaExpr ) {
    194                 return commaExpr;
    195         }
     209                if ( castExpr->get_results().empty() ) {
     210                        // can't specialize if we don't have a return value
     211                        return castExpr;
     212                }
     213                Expression *specialized = doSpecialization( castExpr->get_results().front(), castExpr->get_arg() );
     214                if ( specialized != castExpr->get_arg() ) {
     215                        // assume here that the specialization incorporates the cast
     216                        return specialized;
     217                } else {
     218                        return castExpr;
     219                }
     220        }
     221
     222        // Removing these for now. Richard put these in for some reason, but it's not clear why.
     223        // In particular, copy constructors produce a comma expression, and with this code the parts
     224        // of that comma expression are not specialized, which causes problems.
     225
     226        // Expression * Specialize::mutate( LogicalExpr *logicalExpr ) {
     227        //      return logicalExpr;
     228        // }
     229
     230        // Expression * Specialize::mutate( ConditionalExpr *condExpr ) {
     231        //      return condExpr;
     232        // }
     233
     234        // Expression * Specialize::mutate( CommaExpr *commaExpr ) {
     235        //      return commaExpr;
     236        // }
    196237} // namespace GenPoly
    197238
  • src/GenPoly/module.mk

    r679864e1 r242d458  
    2222       GenPoly/Specialize.cc \
    2323       GenPoly/CopyParams.cc \
    24        GenPoly/FindFunction.cc
     24       GenPoly/FindFunction.cc \
     25       GenPoly/DeclMutator.cc
  • src/InitTweak/BasicInit.cc

    r679864e1 r242d458  
    2020#include <algorithm>
    2121
    22 #include "utility.h"
     22#include "Common/utility.h"
    2323
    2424#include "SynTree/Type.h"
  • src/InitTweak/DeclarationHoister.cc

    r679864e1 r242d458  
    2020#include <algorithm>
    2121
    22 #include "utility.h"
     22#include "Common/utility.h"
    2323
    2424#include "SynTree/Statement.h"
  • src/InitTweak/InitExpander.cc

    r679864e1 r242d458  
    1919#include <algorithm>
    2020
    21 #include "utility.h"
     21#include "Common/utility.h"
    2222#include "InitExpander.h"
    2323#include "InitModel.h"
  • src/InitTweak/InitExpander.h

    r679864e1 r242d458  
    1919#include <string>
    2020
    21 #include "utility.h"
     21#include "Common/utility.h"
    2222#include "SynTree/Mutator.h"
    2323#include "SymTab/Indexer.h"
  • src/InitTweak/InitModel.cc

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

    r679864e1 r242d458  
    1818
    1919#include "Association.h"
    20 #include "SemanticError.h"
     20#include "Common/SemanticError.h"
    2121#include "SynTree/Visitor.h"
    2222
     
    7272                        void visit( ConstantExpr * );
    7373                        void visit( SizeofExpr * ) { throw 0; }
     74                        void visit( AlignofExpr * ) { throw 0; }
     75                        void visit( UntypedOffsetofExpr * ) { throw 0; }
     76                        void visit( OffsetofExpr * ) { throw 0; }
     77                        void visit( OffsetPackExpr * ) { throw 0; }
    7478                        void visit( AttrExpr * ) { throw 0; }
    7579                        void visit( LogicalExpr * ) { throw 0; }
  • src/InitTweak/module.mk

    r679864e1 r242d458  
    66## file "LICENCE" distributed with Cforall.
    77##
    8 ## module.mk -- 
     8## module.mk --
    99##
    1010## Author           : Richard C. Bilson
    1111## Created On       : Mon Jun  1 17:49:17 2015
    12 ## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Mon Jun  1 17:52:49 2015
    14 ## Update Count     : 1
     12## Last Modified By : Rob Schluntz
     13## Last Modified On : Fri May 13 11:36:24 2016
     14## Update Count     : 3
    1515###############################################################################
    1616
    17 SRC += InitTweak/InitModel.cc \
    18        InitTweak/InitExpander.cc \
    19        InitTweak/Mutate.cc \
    20        InitTweak/Association.cc \
    21        InitTweak/RemoveInit.cc
     17SRC += InitTweak/GenInit.cc \
     18        InitTweak/FixInit.cc \
     19        InitTweak/FixGlobalInit.cc \
     20        InitTweak/InitTweak.cc
    2221
  • src/MakeLibCfa.cc

    r679864e1 r242d458  
    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
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri Jul 03 18:11:37 2015
    13 // Update Count     : 18
    14 // 
     12// Last Modified On : Fri Apr 22 13:54:15 2016
     13// Update Count     : 40
     14//
    1515
    1616#include "MakeLibCfa.h"
     
    2222#include "SynTree/Initializer.h"
    2323#include "CodeGen/OperatorTable.h"
    24 #include "UniqueName.h"
     24#include "Common/UniqueName.h"
    2525
    2626namespace LibCfa {
     
    2929                void visit( FunctionDecl* funcDecl );
    3030                void visit( ObjectDecl* objDecl );
    31  
     31
    3232                std::list< Declaration* > &get_newDecls() { return newDecls; }
    3333          private:
     
    4343        void MakeLibCfa::visit( FunctionDecl* origFuncDecl ) {
    4444                if ( origFuncDecl->get_linkage() != LinkageSpec::Intrinsic ) return;
    45  
     45                if ( origFuncDecl->get_statements() ) return;
     46
    4647                FunctionDecl *funcDecl = origFuncDecl->clone();
    4748                CodeGen::OperatorInfo opInfo;
     
    5455                assert( param != funcDecl->get_functionType()->get_parameters().end() );
    5556
    56                 if ( (*param)->get_name() == "" ) {
    57                         (*param)->set_name( paramNamer.newName() );
    58                         (*param)->set_linkage( LinkageSpec::C );
    59                 } // if
     57                for ( ; param != funcDecl->get_functionType()->get_parameters().end(); ++param ) {
     58                        if ( (*param)->get_name() == "" ) {
     59                                (*param)->set_name( paramNamer.newName() );
     60                                (*param)->set_linkage( LinkageSpec::C );
     61                        }
     62                        newExpr->get_args().push_back( new VariableExpr( *param ) );
     63                } // for
     64
     65                funcDecl->set_statements( new CompoundStmt( std::list< Label >() ) );
     66                newDecls.push_back( funcDecl );
    6067
    6168                switch ( opInfo.type ) {
     
    6572                  case CodeGen::OT_POSTFIX:
    6673                  case CodeGen::OT_INFIX:
    67                         newExpr->get_args().push_back( new VariableExpr( *param ) );
    68                         break;
    6974                  case CodeGen::OT_PREFIXASSIGN:
    7075                  case CodeGen::OT_POSTFIXASSIGN:
    7176                  case CodeGen::OT_INFIXASSIGN:
    72                         {
    73                                 newExpr->get_args().push_back( new VariableExpr( *param ) );
    74                                 // UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    75                                 // deref->get_args().push_back( new VariableExpr( *param ) );
    76                                 // newExpr->get_args().push_back( deref );
     77                                funcDecl->get_statements()->get_kids().push_back( new ReturnStmt( std::list< Label >(), newExpr ) );
    7778                                break;
    78                         }
    7979                  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;
    8094                  case CodeGen::OT_DTOR:
     95                        // intrinsic destructors should do nothing
     96                        // delete newExpr;
     97                        break;
    8198                  case CodeGen::OT_CONSTANT:
    8299                  case CodeGen::OT_LABELADDRESS:
     
    84101                        assert( false );
    85102                } // switch
    86 
    87                 for ( param++; param != funcDecl->get_functionType()->get_parameters().end(); ++param ) {
    88                         if ( (*param)->get_name() == "" ) {
    89                                 (*param)->set_name( paramNamer.newName() );
    90                                 (*param)->set_linkage( LinkageSpec::C );
    91                         }
    92                         newExpr->get_args().push_back( new VariableExpr( *param ) );
    93                 } // for
    94                 funcDecl->set_statements( new CompoundStmt( std::list< Label >() ) );
    95                 funcDecl->get_statements()->get_kids().push_back( new ReturnStmt( std::list< Label >(), newExpr ) );
    96                 newDecls.push_back( funcDecl );
    97103        }
    98104
    99105        void MakeLibCfa::visit( ObjectDecl* origObjDecl ) {
    100106                if ( origObjDecl->get_linkage() != LinkageSpec::Intrinsic ) return;
    101  
     107
    102108                ObjectDecl *objDecl = origObjDecl->clone();
    103109                assert( ! objDecl->get_init() );
    104110                std::list< Expression* > noDesignators;
    105                 objDecl->set_init( new SingleInit( new NameExpr( objDecl->get_name() ), noDesignators ) );
     111                objDecl->set_init( new SingleInit( new NameExpr( objDecl->get_name() ), noDesignators, false ) ); // cannot be constructed
    106112                newDecls.push_back( objDecl );
    107113        }
    108114} // namespace LibCfa
    109 
    110 // Local Variables: //
    111 // tab-width: 4 //
    112 // mode: c++ //
    113 // compile-command: "make install" //
    114 // End: //
  • src/Makefile.am

    r679864e1 r242d458  
    1111## Created On       : Sun May 31 08:51:46 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Sat Jun 13 08:22:14 2015
    14 ## Update Count     : 17
     13## Last Modified On : Fri Jul  8 12:22:25 2016
     14## Update Count     : 60
    1515###############################################################################
    1616
     
    1818AUTOMAKE_OPTIONS = subdir-objects
    1919
    20 SRC = main.cc MakeLibCfa.cc
     20SRC = main.cc \
     21      MakeLibCfa.cc
     22
     23MAINTAINERCLEANFILES =
    2124
    2225# Is there a way to use a variable for the directory names?
     26
    2327include ArgTweak/module.mk
    2428include CodeGen/module.mk
     
    3640# put into lib for now
    3741cfa_cpplibdir = ${libdir}
    38 cfa_cpplib_PROGRAMS = cfa-cpp
    39 cfa_cpp_SOURCES = ${SRC}
     42cfa_cpplib_PROGRAMS = driver/cfa-cpp
     43driver_cfa_cpp_SOURCES = ${SRC}
     44driver_cfa_cpp_LDADD = ${LEXLIB}        # yywrap
    4045# need files Common/utility.h
    41 cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${srcdir}/Common
     46driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL
    4247
    43 CXXFLAGS = -g   # remove default -O2 to allow better debugging
     48AM_CXXFLAGS = -g -std=c++11
     49
     50MAINTAINERCLEANFILES += ${libdir}/${notdir ${cfa_cpplib_PROGRAMS}}
  • src/Makefile.in

    r679864e1 r242d458  
    8383        $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk \
    8484        Parser/lex.cc Parser/parser.cc Parser/parser.h
    85 cfa_cpplib_PROGRAMS = cfa-cpp$(EXEEXT)
     85cfa_cpplib_PROGRAMS = driver/cfa-cpp$(EXEEXT)
    8686subdir = src
    8787ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
     
    9696PROGRAMS = $(cfa_cpplib_PROGRAMS)
    9797am__dirstamp = $(am__leading_dot)dirstamp
    98 am__objects_1 = cfa_cpp-main.$(OBJEXT) cfa_cpp-MakeLibCfa.$(OBJEXT) \
    99         CodeGen/cfa_cpp-Generate.$(OBJEXT) \
    100         CodeGen/cfa_cpp-CodeGenerator.$(OBJEXT) \
    101         CodeGen/cfa_cpp-GenType.$(OBJEXT) \
    102         CodeGen/cfa_cpp-FixNames.$(OBJEXT) \
    103         CodeGen/cfa_cpp-OperatorTable.$(OBJEXT) \
    104         Common/cfa_cpp-SemanticError.$(OBJEXT) \
    105         Common/cfa_cpp-UniqueName.$(OBJEXT) \
    106         ControlStruct/cfa_cpp-LabelGenerator.$(OBJEXT) \
    107         ControlStruct/cfa_cpp-LabelFixer.$(OBJEXT) \
    108         ControlStruct/cfa_cpp-MLEMutator.$(OBJEXT) \
    109         ControlStruct/cfa_cpp-CaseRangeMutator.$(OBJEXT) \
    110         ControlStruct/cfa_cpp-Mutate.$(OBJEXT) \
    111         ControlStruct/cfa_cpp-ChooseMutator.$(OBJEXT) \
    112         ControlStruct/cfa_cpp-ForExprMutator.$(OBJEXT) \
    113         ControlStruct/cfa_cpp-LabelTypeChecker.$(OBJEXT) \
    114         Designators/cfa_cpp-Processor.$(OBJEXT) \
    115         GenPoly/cfa_cpp-Box.$(OBJEXT) \
    116         GenPoly/cfa_cpp-GenPoly.$(OBJEXT) \
    117         GenPoly/cfa_cpp-PolyMutator.$(OBJEXT) \
    118         GenPoly/cfa_cpp-ScrubTyVars.$(OBJEXT) \
    119         GenPoly/cfa_cpp-Lvalue.$(OBJEXT) \
    120         GenPoly/cfa_cpp-Specialize.$(OBJEXT) \
    121         GenPoly/cfa_cpp-CopyParams.$(OBJEXT) \
    122         GenPoly/cfa_cpp-FindFunction.$(OBJEXT) \
    123         InitTweak/cfa_cpp-InitModel.$(OBJEXT) \
    124         InitTweak/cfa_cpp-InitExpander.$(OBJEXT) \
    125         InitTweak/cfa_cpp-Mutate.$(OBJEXT) \
    126         InitTweak/cfa_cpp-Association.$(OBJEXT) \
    127         InitTweak/cfa_cpp-RemoveInit.$(OBJEXT) \
    128         Parser/cfa_cpp-parser.$(OBJEXT) Parser/cfa_cpp-lex.$(OBJEXT) \
    129         Parser/cfa_cpp-TypedefTable.$(OBJEXT) \
    130         Parser/cfa_cpp-ParseNode.$(OBJEXT) \
    131         Parser/cfa_cpp-DeclarationNode.$(OBJEXT) \
    132         Parser/cfa_cpp-ExpressionNode.$(OBJEXT) \
    133         Parser/cfa_cpp-StatementNode.$(OBJEXT) \
    134         Parser/cfa_cpp-InitializerNode.$(OBJEXT) \
    135         Parser/cfa_cpp-TypeData.$(OBJEXT) \
    136         Parser/cfa_cpp-LinkageSpec.$(OBJEXT) \
    137         Parser/cfa_cpp-parseutility.$(OBJEXT) \
    138         Parser/cfa_cpp-Parser.$(OBJEXT) \
    139         ResolvExpr/cfa_cpp-AlternativeFinder.$(OBJEXT) \
    140         ResolvExpr/cfa_cpp-Alternative.$(OBJEXT) \
    141         ResolvExpr/cfa_cpp-Unify.$(OBJEXT) \
    142         ResolvExpr/cfa_cpp-PtrsAssignable.$(OBJEXT) \
    143         ResolvExpr/cfa_cpp-CommonType.$(OBJEXT) \
    144         ResolvExpr/cfa_cpp-ConversionCost.$(OBJEXT) \
    145         ResolvExpr/cfa_cpp-CastCost.$(OBJEXT) \
    146         ResolvExpr/cfa_cpp-PtrsCastable.$(OBJEXT) \
    147         ResolvExpr/cfa_cpp-AdjustExprType.$(OBJEXT) \
    148         ResolvExpr/cfa_cpp-AlternativePrinter.$(OBJEXT) \
    149         ResolvExpr/cfa_cpp-Resolver.$(OBJEXT) \
    150         ResolvExpr/cfa_cpp-ResolveTypeof.$(OBJEXT) \
    151         ResolvExpr/cfa_cpp-RenameVars.$(OBJEXT) \
    152         ResolvExpr/cfa_cpp-FindOpenVars.$(OBJEXT) \
    153         ResolvExpr/cfa_cpp-PolyCost.$(OBJEXT) \
    154         ResolvExpr/cfa_cpp-Occurs.$(OBJEXT) \
    155         ResolvExpr/cfa_cpp-TypeEnvironment.$(OBJEXT) \
    156         SymTab/cfa_cpp-IdTable.$(OBJEXT) \
    157         SymTab/cfa_cpp-Indexer.$(OBJEXT) \
    158         SymTab/cfa_cpp-Mangler.$(OBJEXT) \
    159         SymTab/cfa_cpp-Validate.$(OBJEXT) \
    160         SymTab/cfa_cpp-FixFunction.$(OBJEXT) \
    161         SymTab/cfa_cpp-ImplementationType.$(OBJEXT) \
    162         SymTab/cfa_cpp-TypeEquality.$(OBJEXT) \
    163         SynTree/cfa_cpp-Type.$(OBJEXT) \
    164         SynTree/cfa_cpp-VoidType.$(OBJEXT) \
    165         SynTree/cfa_cpp-BasicType.$(OBJEXT) \
    166         SynTree/cfa_cpp-PointerType.$(OBJEXT) \
    167         SynTree/cfa_cpp-ArrayType.$(OBJEXT) \
    168         SynTree/cfa_cpp-FunctionType.$(OBJEXT) \
    169         SynTree/cfa_cpp-ReferenceToType.$(OBJEXT) \
    170         SynTree/cfa_cpp-TupleType.$(OBJEXT) \
    171         SynTree/cfa_cpp-TypeofType.$(OBJEXT) \
    172         SynTree/cfa_cpp-AttrType.$(OBJEXT) \
    173         SynTree/cfa_cpp-Constant.$(OBJEXT) \
    174         SynTree/cfa_cpp-Expression.$(OBJEXT) \
    175         SynTree/cfa_cpp-TupleExpr.$(OBJEXT) \
    176         SynTree/cfa_cpp-CommaExpr.$(OBJEXT) \
    177         SynTree/cfa_cpp-TypeExpr.$(OBJEXT) \
    178         SynTree/cfa_cpp-ApplicationExpr.$(OBJEXT) \
    179         SynTree/cfa_cpp-AddressExpr.$(OBJEXT) \
    180         SynTree/cfa_cpp-Statement.$(OBJEXT) \
    181         SynTree/cfa_cpp-CompoundStmt.$(OBJEXT) \
    182         SynTree/cfa_cpp-DeclStmt.$(OBJEXT) \
    183         SynTree/cfa_cpp-Declaration.$(OBJEXT) \
    184         SynTree/cfa_cpp-DeclarationWithType.$(OBJEXT) \
    185         SynTree/cfa_cpp-ObjectDecl.$(OBJEXT) \
    186         SynTree/cfa_cpp-FunctionDecl.$(OBJEXT) \
    187         SynTree/cfa_cpp-AggregateDecl.$(OBJEXT) \
    188         SynTree/cfa_cpp-NamedTypeDecl.$(OBJEXT) \
    189         SynTree/cfa_cpp-TypeDecl.$(OBJEXT) \
    190         SynTree/cfa_cpp-Initializer.$(OBJEXT) \
    191         SynTree/cfa_cpp-Visitor.$(OBJEXT) \
    192         SynTree/cfa_cpp-Mutator.$(OBJEXT) \
    193         SynTree/cfa_cpp-CodeGenVisitor.$(OBJEXT) \
    194         SynTree/cfa_cpp-TypeSubstitution.$(OBJEXT) \
    195         Tuples/cfa_cpp-Mutate.$(OBJEXT) \
    196         Tuples/cfa_cpp-AssignExpand.$(OBJEXT) \
    197         Tuples/cfa_cpp-FunctionFixer.$(OBJEXT) \
    198         Tuples/cfa_cpp-TupleAssignment.$(OBJEXT) \
    199         Tuples/cfa_cpp-FunctionChecker.$(OBJEXT) \
    200         Tuples/cfa_cpp-NameMatcher.$(OBJEXT)
    201 am_cfa_cpp_OBJECTS = $(am__objects_1)
    202 cfa_cpp_OBJECTS = $(am_cfa_cpp_OBJECTS)
     98am__objects_1 = driver_cfa_cpp-main.$(OBJEXT) \
     99        driver_cfa_cpp-MakeLibCfa.$(OBJEXT) \
     100        CodeGen/driver_cfa_cpp-Generate.$(OBJEXT) \
     101        CodeGen/driver_cfa_cpp-CodeGenerator.$(OBJEXT) \
     102        CodeGen/driver_cfa_cpp-GenType.$(OBJEXT) \
     103        CodeGen/driver_cfa_cpp-FixNames.$(OBJEXT) \
     104        CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT) \
     105        Common/driver_cfa_cpp-SemanticError.$(OBJEXT) \
     106        Common/driver_cfa_cpp-UniqueName.$(OBJEXT) \
     107        ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT) \
     108        ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT) \
     109        ControlStruct/driver_cfa_cpp-MLEMutator.$(OBJEXT) \
     110        ControlStruct/driver_cfa_cpp-Mutate.$(OBJEXT) \
     111        ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT) \
     112        ControlStruct/driver_cfa_cpp-LabelTypeChecker.$(OBJEXT) \
     113        Designators/driver_cfa_cpp-Processor.$(OBJEXT) \
     114        GenPoly/driver_cfa_cpp-Box.$(OBJEXT) \
     115        GenPoly/driver_cfa_cpp-GenPoly.$(OBJEXT) \
     116        GenPoly/driver_cfa_cpp-PolyMutator.$(OBJEXT) \
     117        GenPoly/driver_cfa_cpp-ScrubTyVars.$(OBJEXT) \
     118        GenPoly/driver_cfa_cpp-Lvalue.$(OBJEXT) \
     119        GenPoly/driver_cfa_cpp-Specialize.$(OBJEXT) \
     120        GenPoly/driver_cfa_cpp-CopyParams.$(OBJEXT) \
     121        GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT) \
     122        GenPoly/driver_cfa_cpp-DeclMutator.$(OBJEXT) \
     123        InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT) \
     124        InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT) \
     125        InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT) \
     126        InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT) \
     127        Parser/driver_cfa_cpp-parser.$(OBJEXT) \
     128        Parser/driver_cfa_cpp-lex.$(OBJEXT) \
     129        Parser/driver_cfa_cpp-TypedefTable.$(OBJEXT) \
     130        Parser/driver_cfa_cpp-ParseNode.$(OBJEXT) \
     131        Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT) \
     132        Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT) \
     133        Parser/driver_cfa_cpp-StatementNode.$(OBJEXT) \
     134        Parser/driver_cfa_cpp-InitializerNode.$(OBJEXT) \
     135        Parser/driver_cfa_cpp-TypeData.$(OBJEXT) \
     136        Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT) \
     137        Parser/driver_cfa_cpp-parseutility.$(OBJEXT) \
     138        Parser/driver_cfa_cpp-Parser.$(OBJEXT) \
     139        ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT) \
     140        ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT) \
     141        ResolvExpr/driver_cfa_cpp-Unify.$(OBJEXT) \
     142        ResolvExpr/driver_cfa_cpp-PtrsAssignable.$(OBJEXT) \
     143        ResolvExpr/driver_cfa_cpp-CommonType.$(OBJEXT) \
     144        ResolvExpr/driver_cfa_cpp-ConversionCost.$(OBJEXT) \
     145        ResolvExpr/driver_cfa_cpp-CastCost.$(OBJEXT) \
     146        ResolvExpr/driver_cfa_cpp-PtrsCastable.$(OBJEXT) \
     147        ResolvExpr/driver_cfa_cpp-AdjustExprType.$(OBJEXT) \
     148        ResolvExpr/driver_cfa_cpp-AlternativePrinter.$(OBJEXT) \
     149        ResolvExpr/driver_cfa_cpp-Resolver.$(OBJEXT) \
     150        ResolvExpr/driver_cfa_cpp-ResolveTypeof.$(OBJEXT) \
     151        ResolvExpr/driver_cfa_cpp-RenameVars.$(OBJEXT) \
     152        ResolvExpr/driver_cfa_cpp-FindOpenVars.$(OBJEXT) \
     153        ResolvExpr/driver_cfa_cpp-PolyCost.$(OBJEXT) \
     154        ResolvExpr/driver_cfa_cpp-Occurs.$(OBJEXT) \
     155        ResolvExpr/driver_cfa_cpp-TypeEnvironment.$(OBJEXT) \
     156        SymTab/driver_cfa_cpp-Indexer.$(OBJEXT) \
     157        SymTab/driver_cfa_cpp-Mangler.$(OBJEXT) \
     158        SymTab/driver_cfa_cpp-Validate.$(OBJEXT) \
     159        SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT) \
     160        SymTab/driver_cfa_cpp-ImplementationType.$(OBJEXT) \
     161        SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT) \
     162        SymTab/driver_cfa_cpp-Autogen.$(OBJEXT) \
     163        SynTree/driver_cfa_cpp-Type.$(OBJEXT) \
     164        SynTree/driver_cfa_cpp-VoidType.$(OBJEXT) \
     165        SynTree/driver_cfa_cpp-BasicType.$(OBJEXT) \
     166        SynTree/driver_cfa_cpp-PointerType.$(OBJEXT) \
     167        SynTree/driver_cfa_cpp-ArrayType.$(OBJEXT) \
     168        SynTree/driver_cfa_cpp-FunctionType.$(OBJEXT) \
     169        SynTree/driver_cfa_cpp-ReferenceToType.$(OBJEXT) \
     170        SynTree/driver_cfa_cpp-TupleType.$(OBJEXT) \
     171        SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT) \
     172        SynTree/driver_cfa_cpp-AttrType.$(OBJEXT) \
     173        SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT) \
     174        SynTree/driver_cfa_cpp-Constant.$(OBJEXT) \
     175        SynTree/driver_cfa_cpp-Expression.$(OBJEXT) \
     176        SynTree/driver_cfa_cpp-TupleExpr.$(OBJEXT) \
     177        SynTree/driver_cfa_cpp-CommaExpr.$(OBJEXT) \
     178        SynTree/driver_cfa_cpp-TypeExpr.$(OBJEXT) \
     179        SynTree/driver_cfa_cpp-ApplicationExpr.$(OBJEXT) \
     180        SynTree/driver_cfa_cpp-AddressExpr.$(OBJEXT) \
     181        SynTree/driver_cfa_cpp-Statement.$(OBJEXT) \
     182        SynTree/driver_cfa_cpp-CompoundStmt.$(OBJEXT) \
     183        SynTree/driver_cfa_cpp-DeclStmt.$(OBJEXT) \
     184        SynTree/driver_cfa_cpp-Declaration.$(OBJEXT) \
     185        SynTree/driver_cfa_cpp-DeclarationWithType.$(OBJEXT) \
     186        SynTree/driver_cfa_cpp-ObjectDecl.$(OBJEXT) \
     187        SynTree/driver_cfa_cpp-FunctionDecl.$(OBJEXT) \
     188        SynTree/driver_cfa_cpp-AggregateDecl.$(OBJEXT) \
     189        SynTree/driver_cfa_cpp-NamedTypeDecl.$(OBJEXT) \
     190        SynTree/driver_cfa_cpp-TypeDecl.$(OBJEXT) \
     191        SynTree/driver_cfa_cpp-Initializer.$(OBJEXT) \
     192        SynTree/driver_cfa_cpp-Visitor.$(OBJEXT) \
     193        SynTree/driver_cfa_cpp-Mutator.$(OBJEXT) \
     194        SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT) \
     195        SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT) \
     196        SynTree/driver_cfa_cpp-Attribute.$(OBJEXT) \
     197        Tuples/driver_cfa_cpp-Mutate.$(OBJEXT) \
     198        Tuples/driver_cfa_cpp-AssignExpand.$(OBJEXT) \
     199        Tuples/driver_cfa_cpp-FunctionFixer.$(OBJEXT) \
     200        Tuples/driver_cfa_cpp-TupleAssignment.$(OBJEXT) \
     201        Tuples/driver_cfa_cpp-FunctionChecker.$(OBJEXT) \
     202        Tuples/driver_cfa_cpp-NameMatcher.$(OBJEXT)
     203am_driver_cfa_cpp_OBJECTS = $(am__objects_1)
     204driver_cfa_cpp_OBJECTS = $(am_driver_cfa_cpp_OBJECTS)
    203205am__DEPENDENCIES_1 =
    204 cfa_cpp_DEPENDENCIES = $(am__DEPENDENCIES_1)
    205 cfa_cpp_LINK = $(CXXLD) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
    206         $(LDFLAGS) -o $@
     206driver_cfa_cpp_DEPENDENCIES = $(am__DEPENDENCIES_1)
     207driver_cfa_cpp_LINK = $(CXXLD) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) \
     208        $(AM_LDFLAGS) $(LDFLAGS) -o $@
    207209DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    208210depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
    209211am__depfiles_maybe = depfiles
    210212am__mv = mv -f
     213AM_V_lt = $(am__v_lt_@AM_V@)
     214am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     215am__v_lt_0 = --silent
    211216CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    212217        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
     218AM_V_CXX = $(am__v_CXX_@AM_V@)
     219am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
     220am__v_CXX_0 = @echo "  CXX   " $@;
     221AM_V_at = $(am__v_at_@AM_V@)
     222am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     223am__v_at_0 = @
    213224CXXLD = $(CXX)
    214225CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    215226        -o $@
     227AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
     228am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
     229am__v_CXXLD_0 = @echo "  CXXLD " $@;
    216230@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
    217231LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
     232AM_V_LEX = $(am__v_LEX_@AM_V@)
     233am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
     234am__v_LEX_0 = @echo "  LEX   " $@;
    218235YLWRAP = $(top_srcdir)/automake/ylwrap
    219236@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
    220237YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
     238AM_V_YACC = $(am__v_YACC_@AM_V@)
     239am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
     240am__v_YACC_0 = @echo "  YACC  " $@;
    221241COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    222242        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     243AM_V_CC = $(am__v_CC_@AM_V@)
     244am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     245am__v_CC_0 = @echo "  CC    " $@;
    223246CCLD = $(CC)
    224247LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    225 SOURCES = $(cfa_cpp_SOURCES)
    226 DIST_SOURCES = $(cfa_cpp_SOURCES)
     248AM_V_CCLD = $(am__v_CCLD_@AM_V@)
     249am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
     250am__v_CCLD_0 = @echo "  CCLD  " $@;
     251AM_V_GEN = $(am__v_GEN_@AM_V@)
     252am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     253am__v_GEN_0 = @echo "  GEN   " $@;
     254SOURCES = $(driver_cfa_cpp_SOURCES)
     255DIST_SOURCES = $(driver_cfa_cpp_SOURCES)
    227256ETAGS = etags
    228257CTAGS = ctags
     
    231260ALLOCA = @ALLOCA@
    232261AMTAR = @AMTAR@
     262AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    233263AUTOCONF = @AUTOCONF@
    234264AUTOHEADER = @AUTOHEADER@
     
    238268CC = @CC@
    239269CCDEPMODE = @CCDEPMODE@
     270CFA_BACKEND_CC = @CFA_BACKEND_CC@
    240271CFA_BINDIR = @CFA_BINDIR@
     272CFA_FLAGS = @CFA_FLAGS@
    241273CFA_INCDIR = @CFA_INCDIR@
    242274CFA_LIBDIR = @CFA_LIBDIR@
     
    247279CXX = @CXX@
    248280CXXDEPMODE = @CXXDEPMODE@
    249 CXXFLAGS = -g   # remove default -O2 to allow better debugging
     281CXXFLAGS = @CXXFLAGS@
    250282CYGPATH_W = @CYGPATH_W@
    251283DEFS = @DEFS@
     
    256288EGREP = @EGREP@
    257289EXEEXT = @EXEEXT@
    258 GCC_PATH = @GCC_PATH@
    259290GREP = @GREP@
    260291INSTALL = @INSTALL@
     
    340371        Common/SemanticError.cc Common/UniqueName.cc \
    341372        ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \
    342         ControlStruct/MLEMutator.cc ControlStruct/CaseRangeMutator.cc \
    343         ControlStruct/Mutate.cc ControlStruct/ChooseMutator.cc \
     373        ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \
    344374        ControlStruct/ForExprMutator.cc \
    345375        ControlStruct/LabelTypeChecker.cc Designators/Processor.cc \
     
    347377        GenPoly/ScrubTyVars.cc GenPoly/Lvalue.cc GenPoly/Specialize.cc \
    348378        GenPoly/CopyParams.cc GenPoly/FindFunction.cc \
    349         InitTweak/InitModel.cc InitTweak/InitExpander.cc \
    350         InitTweak/Mutate.cc InitTweak/Association.cc \
    351         InitTweak/RemoveInit.cc Parser/parser.yy Parser/lex.ll \
     379        GenPoly/DeclMutator.cc InitTweak/GenInit.cc \
     380        InitTweak/FixInit.cc InitTweak/FixGlobalInit.cc \
     381        InitTweak/InitTweak.cc Parser/parser.yy Parser/lex.ll \
    352382        Parser/TypedefTable.cc Parser/ParseNode.cc \
    353383        Parser/DeclarationNode.cc Parser/ExpressionNode.cc \
     
    363393        ResolvExpr/RenameVars.cc ResolvExpr/FindOpenVars.cc \
    364394        ResolvExpr/PolyCost.cc ResolvExpr/Occurs.cc \
    365         ResolvExpr/TypeEnvironment.cc SymTab/IdTable.cc \
    366         SymTab/Indexer.cc SymTab/Mangler.cc SymTab/Validate.cc \
    367         SymTab/FixFunction.cc SymTab/ImplementationType.cc \
    368         SymTab/TypeEquality.cc SynTree/Type.cc SynTree/VoidType.cc \
     395        ResolvExpr/TypeEnvironment.cc SymTab/Indexer.cc \
     396        SymTab/Mangler.cc SymTab/Validate.cc SymTab/FixFunction.cc \
     397        SymTab/ImplementationType.cc SymTab/TypeEquality.cc \
     398        SymTab/Autogen.cc SynTree/Type.cc SynTree/VoidType.cc \
    369399        SynTree/BasicType.cc SynTree/PointerType.cc \
    370400        SynTree/ArrayType.cc SynTree/FunctionType.cc \
    371401        SynTree/ReferenceToType.cc SynTree/TupleType.cc \
    372         SynTree/TypeofType.cc SynTree/AttrType.cc SynTree/Constant.cc \
     402        SynTree/TypeofType.cc SynTree/AttrType.cc \
     403        SynTree/VarArgsType.cc SynTree/Constant.cc \
    373404        SynTree/Expression.cc SynTree/TupleExpr.cc \
    374405        SynTree/CommaExpr.cc SynTree/TypeExpr.cc \
     
    380411        SynTree/NamedTypeDecl.cc SynTree/TypeDecl.cc \
    381412        SynTree/Initializer.cc SynTree/Visitor.cc SynTree/Mutator.cc \
    382         SynTree/CodeGenVisitor.cc SynTree/TypeSubstitution.cc \
    383         Tuples/Mutate.cc Tuples/AssignExpand.cc \
     413        SynTree/AddStmtVisitor.cc SynTree/TypeSubstitution.cc \
     414        SynTree/Attribute.cc Tuples/Mutate.cc Tuples/AssignExpand.cc \
    384415        Tuples/FunctionFixer.cc Tuples/TupleAssignment.cc \
    385416        Tuples/FunctionChecker.cc Tuples/NameMatcher.cc
     417MAINTAINERCLEANFILES = Parser/parser.output ${libdir}/${notdir \
     418        ${cfa_cpplib_PROGRAMS}}
    386419BUILT_SOURCES = Parser/parser.h
    387420AM_YFLAGS = -d -t -v
    388 cfa_cpp_LDADD = ${LEXLIB}       # yywrap
    389 MAINTAINERCLEANFILES = Parser/parser.output
    390421
    391422# Is there a way to use a variable for the directory names?
     
    393424# put into lib for now
    394425cfa_cpplibdir = ${libdir}
    395 cfa_cpp_SOURCES = ${SRC}
     426driver_cfa_cpp_SOURCES = ${SRC}
     427driver_cfa_cpp_LDADD = ${LEXLIB}        # yywrap
    396428# need files Common/utility.h
    397 cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${srcdir}/Common
     429driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL
     430AM_CXXFLAGS = -g -std=c++11
    398431all: $(BUILT_SOURCES)
    399432        $(MAKE) $(AM_MAKEFLAGS) all-am
     
    410443          esac; \
    411444        done; \
    412         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
     445        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
    413446        $(am__cd) $(top_srcdir) && \
    414           $(AUTOMAKE) --gnu src/Makefile
     447          $(AUTOMAKE) --foreign src/Makefile
    415448.PRECIOUS: Makefile
    416449Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
     
    475508        @$(MKDIR_P) CodeGen/$(DEPDIR)
    476509        @: > CodeGen/$(DEPDIR)/$(am__dirstamp)
    477 CodeGen/cfa_cpp-Generate.$(OBJEXT): CodeGen/$(am__dirstamp) \
     510CodeGen/driver_cfa_cpp-Generate.$(OBJEXT): CodeGen/$(am__dirstamp) \
    478511        CodeGen/$(DEPDIR)/$(am__dirstamp)
    479 CodeGen/cfa_cpp-CodeGenerator.$(OBJEXT): CodeGen/$(am__dirstamp) \
     512CodeGen/driver_cfa_cpp-CodeGenerator.$(OBJEXT):  \
     513        CodeGen/$(am__dirstamp) CodeGen/$(DEPDIR)/$(am__dirstamp)
     514CodeGen/driver_cfa_cpp-GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \
    480515        CodeGen/$(DEPDIR)/$(am__dirstamp)
    481 CodeGen/cfa_cpp-GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \
     516CodeGen/driver_cfa_cpp-FixNames.$(OBJEXT): CodeGen/$(am__dirstamp) \
    482517        CodeGen/$(DEPDIR)/$(am__dirstamp)
    483 CodeGen/cfa_cpp-FixNames.$(OBJEXT): CodeGen/$(am__dirstamp) \
    484         CodeGen/$(DEPDIR)/$(am__dirstamp)
    485 CodeGen/cfa_cpp-OperatorTable.$(OBJEXT): CodeGen/$(am__dirstamp) \
    486         CodeGen/$(DEPDIR)/$(am__dirstamp)
     518CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT):  \
     519        CodeGen/$(am__dirstamp) CodeGen/$(DEPDIR)/$(am__dirstamp)
    487520Common/$(am__dirstamp):
    488521        @$(MKDIR_P) Common
     
    491524        @$(MKDIR_P) Common/$(DEPDIR)
    492525        @: > Common/$(DEPDIR)/$(am__dirstamp)
    493 Common/cfa_cpp-SemanticError.$(OBJEXT): Common/$(am__dirstamp) \
     526Common/driver_cfa_cpp-SemanticError.$(OBJEXT): Common/$(am__dirstamp) \
    494527        Common/$(DEPDIR)/$(am__dirstamp)
    495 Common/cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
     528Common/driver_cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
    496529        Common/$(DEPDIR)/$(am__dirstamp)
    497530ControlStruct/$(am__dirstamp):
     
    501534        @$(MKDIR_P) ControlStruct/$(DEPDIR)
    502535        @: > ControlStruct/$(DEPDIR)/$(am__dirstamp)
    503 ControlStruct/cfa_cpp-LabelGenerator.$(OBJEXT):  \
     536ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT):  \
    504537        ControlStruct/$(am__dirstamp) \
    505538        ControlStruct/$(DEPDIR)/$(am__dirstamp)
    506 ControlStruct/cfa_cpp-LabelFixer.$(OBJEXT):  \
     539ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT):  \
    507540        ControlStruct/$(am__dirstamp) \
    508541        ControlStruct/$(DEPDIR)/$(am__dirstamp)
    509 ControlStruct/cfa_cpp-MLEMutator.$(OBJEXT):  \
     542ControlStruct/driver_cfa_cpp-MLEMutator.$(OBJEXT):  \
    510543        ControlStruct/$(am__dirstamp) \
    511544        ControlStruct/$(DEPDIR)/$(am__dirstamp)
    512 ControlStruct/cfa_cpp-CaseRangeMutator.$(OBJEXT):  \
     545ControlStruct/driver_cfa_cpp-Mutate.$(OBJEXT):  \
    513546        ControlStruct/$(am__dirstamp) \
    514547        ControlStruct/$(DEPDIR)/$(am__dirstamp)
    515 ControlStruct/cfa_cpp-Mutate.$(OBJEXT): ControlStruct/$(am__dirstamp) \
    516         ControlStruct/$(DEPDIR)/$(am__dirstamp)
    517 ControlStruct/cfa_cpp-ChooseMutator.$(OBJEXT):  \
     548ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT):  \
    518549        ControlStruct/$(am__dirstamp) \
    519550        ControlStruct/$(DEPDIR)/$(am__dirstamp)
    520 ControlStruct/cfa_cpp-ForExprMutator.$(OBJEXT):  \
    521         ControlStruct/$(am__dirstamp) \
    522         ControlStruct/$(DEPDIR)/$(am__dirstamp)
    523 ControlStruct/cfa_cpp-LabelTypeChecker.$(OBJEXT):  \
     551ControlStruct/driver_cfa_cpp-LabelTypeChecker.$(OBJEXT):  \
    524552        ControlStruct/$(am__dirstamp) \
    525553        ControlStruct/$(DEPDIR)/$(am__dirstamp)
     
    530558        @$(MKDIR_P) Designators/$(DEPDIR)
    531559        @: > Designators/$(DEPDIR)/$(am__dirstamp)
    532 Designators/cfa_cpp-Processor.$(OBJEXT): Designators/$(am__dirstamp) \
     560Designators/driver_cfa_cpp-Processor.$(OBJEXT):  \
     561        Designators/$(am__dirstamp) \
    533562        Designators/$(DEPDIR)/$(am__dirstamp)
    534563GenPoly/$(am__dirstamp):
     
    538567        @$(MKDIR_P) GenPoly/$(DEPDIR)
    539568        @: > GenPoly/$(DEPDIR)/$(am__dirstamp)
    540 GenPoly/cfa_cpp-Box.$(OBJEXT): GenPoly/$(am__dirstamp) \
     569GenPoly/driver_cfa_cpp-Box.$(OBJEXT): GenPoly/$(am__dirstamp) \
    541570        GenPoly/$(DEPDIR)/$(am__dirstamp)
    542 GenPoly/cfa_cpp-GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \
     571GenPoly/driver_cfa_cpp-GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \
    543572        GenPoly/$(DEPDIR)/$(am__dirstamp)
    544 GenPoly/cfa_cpp-PolyMutator.$(OBJEXT): GenPoly/$(am__dirstamp) \
     573GenPoly/driver_cfa_cpp-PolyMutator.$(OBJEXT): GenPoly/$(am__dirstamp) \
    545574        GenPoly/$(DEPDIR)/$(am__dirstamp)
    546 GenPoly/cfa_cpp-ScrubTyVars.$(OBJEXT): GenPoly/$(am__dirstamp) \
     575GenPoly/driver_cfa_cpp-ScrubTyVars.$(OBJEXT): GenPoly/$(am__dirstamp) \
    547576        GenPoly/$(DEPDIR)/$(am__dirstamp)
    548 GenPoly/cfa_cpp-Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \
     577GenPoly/driver_cfa_cpp-Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \
    549578        GenPoly/$(DEPDIR)/$(am__dirstamp)
    550 GenPoly/cfa_cpp-Specialize.$(OBJEXT): GenPoly/$(am__dirstamp) \
     579GenPoly/driver_cfa_cpp-Specialize.$(OBJEXT): GenPoly/$(am__dirstamp) \
    551580        GenPoly/$(DEPDIR)/$(am__dirstamp)
    552 GenPoly/cfa_cpp-CopyParams.$(OBJEXT): GenPoly/$(am__dirstamp) \
     581GenPoly/driver_cfa_cpp-CopyParams.$(OBJEXT): GenPoly/$(am__dirstamp) \
    553582        GenPoly/$(DEPDIR)/$(am__dirstamp)
    554 GenPoly/cfa_cpp-FindFunction.$(OBJEXT): GenPoly/$(am__dirstamp) \
     583GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT):  \
     584        GenPoly/$(am__dirstamp) GenPoly/$(DEPDIR)/$(am__dirstamp)
     585GenPoly/driver_cfa_cpp-DeclMutator.$(OBJEXT): GenPoly/$(am__dirstamp) \
    555586        GenPoly/$(DEPDIR)/$(am__dirstamp)
    556587InitTweak/$(am__dirstamp):
     
    560591        @$(MKDIR_P) InitTweak/$(DEPDIR)
    561592        @: > InitTweak/$(DEPDIR)/$(am__dirstamp)
    562 InitTweak/cfa_cpp-InitModel.$(OBJEXT): InitTweak/$(am__dirstamp) \
     593InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
    563594        InitTweak/$(DEPDIR)/$(am__dirstamp)
    564 InitTweak/cfa_cpp-InitExpander.$(OBJEXT): InitTweak/$(am__dirstamp) \
     595InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
    565596        InitTweak/$(DEPDIR)/$(am__dirstamp)
    566 InitTweak/cfa_cpp-Mutate.$(OBJEXT): InitTweak/$(am__dirstamp) \
    567         InitTweak/$(DEPDIR)/$(am__dirstamp)
    568 InitTweak/cfa_cpp-Association.$(OBJEXT): InitTweak/$(am__dirstamp) \
    569         InitTweak/$(DEPDIR)/$(am__dirstamp)
    570 InitTweak/cfa_cpp-RemoveInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
    571         InitTweak/$(DEPDIR)/$(am__dirstamp)
     597InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT):  \
     598        InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
     599InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT):  \
     600        InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
    572601Parser/parser.h: Parser/parser.cc
    573602        @if test ! -f $@; then rm -f Parser/parser.cc; else :; fi
     
    579608        @$(MKDIR_P) Parser/$(DEPDIR)
    580609        @: > Parser/$(DEPDIR)/$(am__dirstamp)
    581 Parser/cfa_cpp-parser.$(OBJEXT): Parser/$(am__dirstamp) \
     610Parser/driver_cfa_cpp-parser.$(OBJEXT): Parser/$(am__dirstamp) \
    582611        Parser/$(DEPDIR)/$(am__dirstamp)
    583 Parser/cfa_cpp-lex.$(OBJEXT): Parser/$(am__dirstamp) \
     612Parser/driver_cfa_cpp-lex.$(OBJEXT): Parser/$(am__dirstamp) \
    584613        Parser/$(DEPDIR)/$(am__dirstamp)
    585 Parser/cfa_cpp-TypedefTable.$(OBJEXT): Parser/$(am__dirstamp) \
     614Parser/driver_cfa_cpp-TypedefTable.$(OBJEXT): Parser/$(am__dirstamp) \
    586615        Parser/$(DEPDIR)/$(am__dirstamp)
    587 Parser/cfa_cpp-ParseNode.$(OBJEXT): Parser/$(am__dirstamp) \
     616Parser/driver_cfa_cpp-ParseNode.$(OBJEXT): Parser/$(am__dirstamp) \
    588617        Parser/$(DEPDIR)/$(am__dirstamp)
    589 Parser/cfa_cpp-DeclarationNode.$(OBJEXT): Parser/$(am__dirstamp) \
     618Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT):  \
     619        Parser/$(am__dirstamp) Parser/$(DEPDIR)/$(am__dirstamp)
     620Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT):  \
     621        Parser/$(am__dirstamp) Parser/$(DEPDIR)/$(am__dirstamp)
     622Parser/driver_cfa_cpp-StatementNode.$(OBJEXT): Parser/$(am__dirstamp) \
    590623        Parser/$(DEPDIR)/$(am__dirstamp)
    591 Parser/cfa_cpp-ExpressionNode.$(OBJEXT): Parser/$(am__dirstamp) \
     624Parser/driver_cfa_cpp-InitializerNode.$(OBJEXT):  \
     625        Parser/$(am__dirstamp) Parser/$(DEPDIR)/$(am__dirstamp)
     626Parser/driver_cfa_cpp-TypeData.$(OBJEXT): Parser/$(am__dirstamp) \
    592627        Parser/$(DEPDIR)/$(am__dirstamp)
    593 Parser/cfa_cpp-StatementNode.$(OBJEXT): Parser/$(am__dirstamp) \
     628Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \
    594629        Parser/$(DEPDIR)/$(am__dirstamp)
    595 Parser/cfa_cpp-InitializerNode.$(OBJEXT): Parser/$(am__dirstamp) \
     630Parser/driver_cfa_cpp-parseutility.$(OBJEXT): Parser/$(am__dirstamp) \
    596631        Parser/$(DEPDIR)/$(am__dirstamp)
    597 Parser/cfa_cpp-TypeData.$(OBJEXT): Parser/$(am__dirstamp) \
    598         Parser/$(DEPDIR)/$(am__dirstamp)
    599 Parser/cfa_cpp-LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \
    600         Parser/$(DEPDIR)/$(am__dirstamp)
    601 Parser/cfa_cpp-parseutility.$(OBJEXT): Parser/$(am__dirstamp) \
    602         Parser/$(DEPDIR)/$(am__dirstamp)
    603 Parser/cfa_cpp-Parser.$(OBJEXT): Parser/$(am__dirstamp) \
     632Parser/driver_cfa_cpp-Parser.$(OBJEXT): Parser/$(am__dirstamp) \
    604633        Parser/$(DEPDIR)/$(am__dirstamp)
    605634ResolvExpr/$(am__dirstamp):
     
    609638        @$(MKDIR_P) ResolvExpr/$(DEPDIR)
    610639        @: > ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    611 ResolvExpr/cfa_cpp-AlternativeFinder.$(OBJEXT):  \
     640ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT):  \
    612641        ResolvExpr/$(am__dirstamp) \
    613642        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    614 ResolvExpr/cfa_cpp-Alternative.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    615         ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    616 ResolvExpr/cfa_cpp-Unify.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    617         ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    618 ResolvExpr/cfa_cpp-PtrsAssignable.$(OBJEXT):  \
     643ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT):  \
    619644        ResolvExpr/$(am__dirstamp) \
    620645        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    621 ResolvExpr/cfa_cpp-CommonType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     646ResolvExpr/driver_cfa_cpp-Unify.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    622647        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    623 ResolvExpr/cfa_cpp-ConversionCost.$(OBJEXT):  \
     648ResolvExpr/driver_cfa_cpp-PtrsAssignable.$(OBJEXT):  \
    624649        ResolvExpr/$(am__dirstamp) \
    625650        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    626 ResolvExpr/cfa_cpp-CastCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    627         ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    628 ResolvExpr/cfa_cpp-PtrsCastable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    629         ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    630 ResolvExpr/cfa_cpp-AdjustExprType.$(OBJEXT):  \
     651ResolvExpr/driver_cfa_cpp-CommonType.$(OBJEXT):  \
    631652        ResolvExpr/$(am__dirstamp) \
    632653        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    633 ResolvExpr/cfa_cpp-AlternativePrinter.$(OBJEXT):  \
     654ResolvExpr/driver_cfa_cpp-ConversionCost.$(OBJEXT):  \
    634655        ResolvExpr/$(am__dirstamp) \
    635656        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    636 ResolvExpr/cfa_cpp-Resolver.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    637         ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    638 ResolvExpr/cfa_cpp-ResolveTypeof.$(OBJEXT):  \
     657ResolvExpr/driver_cfa_cpp-CastCost.$(OBJEXT):  \
    639658        ResolvExpr/$(am__dirstamp) \
    640659        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    641 ResolvExpr/cfa_cpp-RenameVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     660ResolvExpr/driver_cfa_cpp-PtrsCastable.$(OBJEXT):  \
     661        ResolvExpr/$(am__dirstamp) \
    642662        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    643 ResolvExpr/cfa_cpp-FindOpenVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     663ResolvExpr/driver_cfa_cpp-AdjustExprType.$(OBJEXT):  \
     664        ResolvExpr/$(am__dirstamp) \
    644665        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    645 ResolvExpr/cfa_cpp-PolyCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     666ResolvExpr/driver_cfa_cpp-AlternativePrinter.$(OBJEXT):  \
     667        ResolvExpr/$(am__dirstamp) \
    646668        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    647 ResolvExpr/cfa_cpp-Occurs.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     669ResolvExpr/driver_cfa_cpp-Resolver.$(OBJEXT):  \
     670        ResolvExpr/$(am__dirstamp) \
    648671        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    649 ResolvExpr/cfa_cpp-TypeEnvironment.$(OBJEXT):  \
     672ResolvExpr/driver_cfa_cpp-ResolveTypeof.$(OBJEXT):  \
     673        ResolvExpr/$(am__dirstamp) \
     674        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     675ResolvExpr/driver_cfa_cpp-RenameVars.$(OBJEXT):  \
     676        ResolvExpr/$(am__dirstamp) \
     677        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     678ResolvExpr/driver_cfa_cpp-FindOpenVars.$(OBJEXT):  \
     679        ResolvExpr/$(am__dirstamp) \
     680        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     681ResolvExpr/driver_cfa_cpp-PolyCost.$(OBJEXT):  \
     682        ResolvExpr/$(am__dirstamp) \
     683        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     684ResolvExpr/driver_cfa_cpp-Occurs.$(OBJEXT):  \
     685        ResolvExpr/$(am__dirstamp) \
     686        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     687ResolvExpr/driver_cfa_cpp-TypeEnvironment.$(OBJEXT):  \
    650688        ResolvExpr/$(am__dirstamp) \
    651689        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     
    656694        @$(MKDIR_P) SymTab/$(DEPDIR)
    657695        @: > SymTab/$(DEPDIR)/$(am__dirstamp)
    658 SymTab/cfa_cpp-IdTable.$(OBJEXT): SymTab/$(am__dirstamp) \
     696SymTab/driver_cfa_cpp-Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \
    659697        SymTab/$(DEPDIR)/$(am__dirstamp)
    660 SymTab/cfa_cpp-Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \
     698SymTab/driver_cfa_cpp-Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \
    661699        SymTab/$(DEPDIR)/$(am__dirstamp)
    662 SymTab/cfa_cpp-Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \
     700SymTab/driver_cfa_cpp-Validate.$(OBJEXT): SymTab/$(am__dirstamp) \
    663701        SymTab/$(DEPDIR)/$(am__dirstamp)
    664 SymTab/cfa_cpp-Validate.$(OBJEXT): SymTab/$(am__dirstamp) \
     702SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \
    665703        SymTab/$(DEPDIR)/$(am__dirstamp)
    666 SymTab/cfa_cpp-FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \
     704SymTab/driver_cfa_cpp-ImplementationType.$(OBJEXT):  \
     705        SymTab/$(am__dirstamp) SymTab/$(DEPDIR)/$(am__dirstamp)
     706SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT): SymTab/$(am__dirstamp) \
    667707        SymTab/$(DEPDIR)/$(am__dirstamp)
    668 SymTab/cfa_cpp-ImplementationType.$(OBJEXT): SymTab/$(am__dirstamp) \
    669         SymTab/$(DEPDIR)/$(am__dirstamp)
    670 SymTab/cfa_cpp-TypeEquality.$(OBJEXT): SymTab/$(am__dirstamp) \
     708SymTab/driver_cfa_cpp-Autogen.$(OBJEXT): SymTab/$(am__dirstamp) \
    671709        SymTab/$(DEPDIR)/$(am__dirstamp)
    672710SynTree/$(am__dirstamp):
     
    676714        @$(MKDIR_P) SynTree/$(DEPDIR)
    677715        @: > SynTree/$(DEPDIR)/$(am__dirstamp)
    678 SynTree/cfa_cpp-Type.$(OBJEXT): SynTree/$(am__dirstamp) \
     716SynTree/driver_cfa_cpp-Type.$(OBJEXT): SynTree/$(am__dirstamp) \
    679717        SynTree/$(DEPDIR)/$(am__dirstamp)
    680 SynTree/cfa_cpp-VoidType.$(OBJEXT): SynTree/$(am__dirstamp) \
     718SynTree/driver_cfa_cpp-VoidType.$(OBJEXT): SynTree/$(am__dirstamp) \
    681719        SynTree/$(DEPDIR)/$(am__dirstamp)
    682 SynTree/cfa_cpp-BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \
     720SynTree/driver_cfa_cpp-BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \
    683721        SynTree/$(DEPDIR)/$(am__dirstamp)
    684 SynTree/cfa_cpp-PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \
     722SynTree/driver_cfa_cpp-PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \
    685723        SynTree/$(DEPDIR)/$(am__dirstamp)
    686 SynTree/cfa_cpp-ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \
     724SynTree/driver_cfa_cpp-ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \
    687725        SynTree/$(DEPDIR)/$(am__dirstamp)
    688 SynTree/cfa_cpp-FunctionType.$(OBJEXT): SynTree/$(am__dirstamp) \
     726SynTree/driver_cfa_cpp-FunctionType.$(OBJEXT):  \
     727        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
     728SynTree/driver_cfa_cpp-ReferenceToType.$(OBJEXT):  \
     729        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
     730SynTree/driver_cfa_cpp-TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \
    689731        SynTree/$(DEPDIR)/$(am__dirstamp)
    690 SynTree/cfa_cpp-ReferenceToType.$(OBJEXT): SynTree/$(am__dirstamp) \
     732SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \
    691733        SynTree/$(DEPDIR)/$(am__dirstamp)
    692 SynTree/cfa_cpp-TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \
     734SynTree/driver_cfa_cpp-AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \
    693735        SynTree/$(DEPDIR)/$(am__dirstamp)
    694 SynTree/cfa_cpp-TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \
     736SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT): SynTree/$(am__dirstamp) \
    695737        SynTree/$(DEPDIR)/$(am__dirstamp)
    696 SynTree/cfa_cpp-AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \
     738SynTree/driver_cfa_cpp-Constant.$(OBJEXT): SynTree/$(am__dirstamp) \
    697739        SynTree/$(DEPDIR)/$(am__dirstamp)
    698 SynTree/cfa_cpp-Constant.$(OBJEXT): SynTree/$(am__dirstamp) \
     740SynTree/driver_cfa_cpp-Expression.$(OBJEXT): SynTree/$(am__dirstamp) \
    699741        SynTree/$(DEPDIR)/$(am__dirstamp)
    700 SynTree/cfa_cpp-Expression.$(OBJEXT): SynTree/$(am__dirstamp) \
     742SynTree/driver_cfa_cpp-TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
    701743        SynTree/$(DEPDIR)/$(am__dirstamp)
    702 SynTree/cfa_cpp-TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
     744SynTree/driver_cfa_cpp-CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
    703745        SynTree/$(DEPDIR)/$(am__dirstamp)
    704 SynTree/cfa_cpp-CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
     746SynTree/driver_cfa_cpp-TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
    705747        SynTree/$(DEPDIR)/$(am__dirstamp)
    706 SynTree/cfa_cpp-TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
     748SynTree/driver_cfa_cpp-ApplicationExpr.$(OBJEXT):  \
     749        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
     750SynTree/driver_cfa_cpp-AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
    707751        SynTree/$(DEPDIR)/$(am__dirstamp)
    708 SynTree/cfa_cpp-ApplicationExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
     752SynTree/driver_cfa_cpp-Statement.$(OBJEXT): SynTree/$(am__dirstamp) \
    709753        SynTree/$(DEPDIR)/$(am__dirstamp)
    710 SynTree/cfa_cpp-AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
     754SynTree/driver_cfa_cpp-CompoundStmt.$(OBJEXT):  \
     755        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
     756SynTree/driver_cfa_cpp-DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \
    711757        SynTree/$(DEPDIR)/$(am__dirstamp)
    712 SynTree/cfa_cpp-Statement.$(OBJEXT): SynTree/$(am__dirstamp) \
     758SynTree/driver_cfa_cpp-Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \
    713759        SynTree/$(DEPDIR)/$(am__dirstamp)
    714 SynTree/cfa_cpp-CompoundStmt.$(OBJEXT): SynTree/$(am__dirstamp) \
     760SynTree/driver_cfa_cpp-DeclarationWithType.$(OBJEXT):  \
     761        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
     762SynTree/driver_cfa_cpp-ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
    715763        SynTree/$(DEPDIR)/$(am__dirstamp)
    716 SynTree/cfa_cpp-DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \
     764SynTree/driver_cfa_cpp-FunctionDecl.$(OBJEXT):  \
     765        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
     766SynTree/driver_cfa_cpp-AggregateDecl.$(OBJEXT):  \
     767        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
     768SynTree/driver_cfa_cpp-NamedTypeDecl.$(OBJEXT):  \
     769        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
     770SynTree/driver_cfa_cpp-TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
    717771        SynTree/$(DEPDIR)/$(am__dirstamp)
    718 SynTree/cfa_cpp-Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \
     772SynTree/driver_cfa_cpp-Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \
    719773        SynTree/$(DEPDIR)/$(am__dirstamp)
    720 SynTree/cfa_cpp-DeclarationWithType.$(OBJEXT):  \
     774SynTree/driver_cfa_cpp-Visitor.$(OBJEXT): SynTree/$(am__dirstamp) \
     775        SynTree/$(DEPDIR)/$(am__dirstamp)
     776SynTree/driver_cfa_cpp-Mutator.$(OBJEXT): SynTree/$(am__dirstamp) \
     777        SynTree/$(DEPDIR)/$(am__dirstamp)
     778SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT):  \
    721779        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    722 SynTree/cfa_cpp-ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
    723         SynTree/$(DEPDIR)/$(am__dirstamp)
    724 SynTree/cfa_cpp-FunctionDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
    725         SynTree/$(DEPDIR)/$(am__dirstamp)
    726 SynTree/cfa_cpp-AggregateDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
    727         SynTree/$(DEPDIR)/$(am__dirstamp)
    728 SynTree/cfa_cpp-NamedTypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
    729         SynTree/$(DEPDIR)/$(am__dirstamp)
    730 SynTree/cfa_cpp-TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
    731         SynTree/$(DEPDIR)/$(am__dirstamp)
    732 SynTree/cfa_cpp-Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \
    733         SynTree/$(DEPDIR)/$(am__dirstamp)
    734 SynTree/cfa_cpp-Visitor.$(OBJEXT): SynTree/$(am__dirstamp) \
    735         SynTree/$(DEPDIR)/$(am__dirstamp)
    736 SynTree/cfa_cpp-Mutator.$(OBJEXT): SynTree/$(am__dirstamp) \
    737         SynTree/$(DEPDIR)/$(am__dirstamp)
    738 SynTree/cfa_cpp-CodeGenVisitor.$(OBJEXT): SynTree/$(am__dirstamp) \
    739         SynTree/$(DEPDIR)/$(am__dirstamp)
    740 SynTree/cfa_cpp-TypeSubstitution.$(OBJEXT): SynTree/$(am__dirstamp) \
     780SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT):  \
     781        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
     782SynTree/driver_cfa_cpp-Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \
    741783        SynTree/$(DEPDIR)/$(am__dirstamp)
    742784Tuples/$(am__dirstamp):
     
    746788        @$(MKDIR_P) Tuples/$(DEPDIR)
    747789        @: > Tuples/$(DEPDIR)/$(am__dirstamp)
    748 Tuples/cfa_cpp-Mutate.$(OBJEXT): Tuples/$(am__dirstamp) \
     790Tuples/driver_cfa_cpp-Mutate.$(OBJEXT): Tuples/$(am__dirstamp) \
    749791        Tuples/$(DEPDIR)/$(am__dirstamp)
    750 Tuples/cfa_cpp-AssignExpand.$(OBJEXT): Tuples/$(am__dirstamp) \
     792Tuples/driver_cfa_cpp-AssignExpand.$(OBJEXT): Tuples/$(am__dirstamp) \
    751793        Tuples/$(DEPDIR)/$(am__dirstamp)
    752 Tuples/cfa_cpp-FunctionFixer.$(OBJEXT): Tuples/$(am__dirstamp) \
     794Tuples/driver_cfa_cpp-FunctionFixer.$(OBJEXT): Tuples/$(am__dirstamp) \
    753795        Tuples/$(DEPDIR)/$(am__dirstamp)
    754 Tuples/cfa_cpp-TupleAssignment.$(OBJEXT): Tuples/$(am__dirstamp) \
     796Tuples/driver_cfa_cpp-TupleAssignment.$(OBJEXT):  \
     797        Tuples/$(am__dirstamp) Tuples/$(DEPDIR)/$(am__dirstamp)
     798Tuples/driver_cfa_cpp-FunctionChecker.$(OBJEXT):  \
     799        Tuples/$(am__dirstamp) Tuples/$(DEPDIR)/$(am__dirstamp)
     800Tuples/driver_cfa_cpp-NameMatcher.$(OBJEXT): Tuples/$(am__dirstamp) \
    755801        Tuples/$(DEPDIR)/$(am__dirstamp)
    756 Tuples/cfa_cpp-FunctionChecker.$(OBJEXT): Tuples/$(am__dirstamp) \
    757         Tuples/$(DEPDIR)/$(am__dirstamp)
    758 Tuples/cfa_cpp-NameMatcher.$(OBJEXT): Tuples/$(am__dirstamp) \
    759         Tuples/$(DEPDIR)/$(am__dirstamp)
    760 cfa-cpp$(EXEEXT): $(cfa_cpp_OBJECTS) $(cfa_cpp_DEPENDENCIES) $(EXTRA_cfa_cpp_DEPENDENCIES)
    761         @rm -f cfa-cpp$(EXEEXT)
    762         $(cfa_cpp_LINK) $(cfa_cpp_OBJECTS) $(cfa_cpp_LDADD) $(LIBS)
     802driver/$(am__dirstamp):
     803        @$(MKDIR_P) driver
     804        @: > driver/$(am__dirstamp)
     805driver/cfa-cpp$(EXEEXT): $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_DEPENDENCIES) $(EXTRA_driver_cfa_cpp_DEPENDENCIES) driver/$(am__dirstamp)
     806        @rm -f driver/cfa-cpp$(EXEEXT)
     807        $(AM_V_CXXLD)$(driver_cfa_cpp_LINK) $(driver_cfa_cpp_OBJECTS) $(driver_cfa_cpp_LDADD) $(LIBS)
    763808
    764809mostlyclean-compile:
    765810        -rm -f *.$(OBJEXT)
    766         -rm -f CodeGen/cfa_cpp-CodeGenerator.$(OBJEXT)
    767         -rm -f CodeGen/cfa_cpp-FixNames.$(OBJEXT)
    768         -rm -f CodeGen/cfa_cpp-GenType.$(OBJEXT)
    769         -rm -f CodeGen/cfa_cpp-Generate.$(OBJEXT)
    770         -rm -f CodeGen/cfa_cpp-OperatorTable.$(OBJEXT)
    771         -rm -f Common/cfa_cpp-SemanticError.$(OBJEXT)
    772         -rm -f Common/cfa_cpp-UniqueName.$(OBJEXT)
    773         -rm -f ControlStruct/cfa_cpp-CaseRangeMutator.$(OBJEXT)
    774         -rm -f ControlStruct/cfa_cpp-ChooseMutator.$(OBJEXT)
    775         -rm -f ControlStruct/cfa_cpp-ForExprMutator.$(OBJEXT)
    776         -rm -f ControlStruct/cfa_cpp-LabelFixer.$(OBJEXT)
    777         -rm -f ControlStruct/cfa_cpp-LabelGenerator.$(OBJEXT)
    778         -rm -f ControlStruct/cfa_cpp-LabelTypeChecker.$(OBJEXT)
    779         -rm -f ControlStruct/cfa_cpp-MLEMutator.$(OBJEXT)
    780         -rm -f ControlStruct/cfa_cpp-Mutate.$(OBJEXT)
    781         -rm -f Designators/cfa_cpp-Processor.$(OBJEXT)
    782         -rm -f GenPoly/cfa_cpp-Box.$(OBJEXT)
    783         -rm -f GenPoly/cfa_cpp-CopyParams.$(OBJEXT)
    784         -rm -f GenPoly/cfa_cpp-FindFunction.$(OBJEXT)
    785         -rm -f GenPoly/cfa_cpp-GenPoly.$(OBJEXT)
    786         -rm -f GenPoly/cfa_cpp-Lvalue.$(OBJEXT)
    787         -rm -f GenPoly/cfa_cpp-PolyMutator.$(OBJEXT)
    788         -rm -f GenPoly/cfa_cpp-ScrubTyVars.$(OBJEXT)
    789         -rm -f GenPoly/cfa_cpp-Specialize.$(OBJEXT)
    790         -rm -f InitTweak/cfa_cpp-Association.$(OBJEXT)
    791         -rm -f InitTweak/cfa_cpp-InitExpander.$(OBJEXT)
    792         -rm -f InitTweak/cfa_cpp-InitModel.$(OBJEXT)
    793         -rm -f InitTweak/cfa_cpp-Mutate.$(OBJEXT)
    794         -rm -f InitTweak/cfa_cpp-RemoveInit.$(OBJEXT)
    795         -rm -f Parser/cfa_cpp-DeclarationNode.$(OBJEXT)
    796         -rm -f Parser/cfa_cpp-ExpressionNode.$(OBJEXT)
    797         -rm -f Parser/cfa_cpp-InitializerNode.$(OBJEXT)
    798         -rm -f Parser/cfa_cpp-LinkageSpec.$(OBJEXT)
    799         -rm -f Parser/cfa_cpp-ParseNode.$(OBJEXT)
    800         -rm -f Parser/cfa_cpp-Parser.$(OBJEXT)
    801         -rm -f Parser/cfa_cpp-StatementNode.$(OBJEXT)
    802         -rm -f Parser/cfa_cpp-TypeData.$(OBJEXT)
    803         -rm -f Parser/cfa_cpp-TypedefTable.$(OBJEXT)
    804         -rm -f Parser/cfa_cpp-lex.$(OBJEXT)
    805         -rm -f Parser/cfa_cpp-parser.$(OBJEXT)
    806         -rm -f Parser/cfa_cpp-parseutility.$(OBJEXT)
    807         -rm -f ResolvExpr/cfa_cpp-AdjustExprType.$(OBJEXT)
    808         -rm -f ResolvExpr/cfa_cpp-Alternative.$(OBJEXT)
    809         -rm -f ResolvExpr/cfa_cpp-AlternativeFinder.$(OBJEXT)
    810         -rm -f ResolvExpr/cfa_cpp-AlternativePrinter.$(OBJEXT)
    811         -rm -f ResolvExpr/cfa_cpp-CastCost.$(OBJEXT)
    812         -rm -f ResolvExpr/cfa_cpp-CommonType.$(OBJEXT)
    813         -rm -f ResolvExpr/cfa_cpp-ConversionCost.$(OBJEXT)
    814         -rm -f ResolvExpr/cfa_cpp-FindOpenVars.$(OBJEXT)
    815         -rm -f ResolvExpr/cfa_cpp-Occurs.$(OBJEXT)
    816         -rm -f ResolvExpr/cfa_cpp-PolyCost.$(OBJEXT)
    817         -rm -f ResolvExpr/cfa_cpp-PtrsAssignable.$(OBJEXT)
    818         -rm -f ResolvExpr/cfa_cpp-PtrsCastable.$(OBJEXT)
    819         -rm -f ResolvExpr/cfa_cpp-RenameVars.$(OBJEXT)
    820         -rm -f ResolvExpr/cfa_cpp-ResolveTypeof.$(OBJEXT)
    821         -rm -f ResolvExpr/cfa_cpp-Resolver.$(OBJEXT)
    822         -rm -f ResolvExpr/cfa_cpp-TypeEnvironment.$(OBJEXT)
    823         -rm -f ResolvExpr/cfa_cpp-Unify.$(OBJEXT)
    824         -rm -f SymTab/cfa_cpp-FixFunction.$(OBJEXT)
    825         -rm -f SymTab/cfa_cpp-IdTable.$(OBJEXT)
    826         -rm -f SymTab/cfa_cpp-ImplementationType.$(OBJEXT)
    827         -rm -f SymTab/cfa_cpp-Indexer.$(OBJEXT)
    828         -rm -f SymTab/cfa_cpp-Mangler.$(OBJEXT)
    829         -rm -f SymTab/cfa_cpp-TypeEquality.$(OBJEXT)
    830         -rm -f SymTab/cfa_cpp-Validate.$(OBJEXT)
    831         -rm -f SynTree/cfa_cpp-AddressExpr.$(OBJEXT)
    832         -rm -f SynTree/cfa_cpp-AggregateDecl.$(OBJEXT)
    833         -rm -f SynTree/cfa_cpp-ApplicationExpr.$(OBJEXT)
    834         -rm -f SynTree/cfa_cpp-ArrayType.$(OBJEXT)
    835         -rm -f SynTree/cfa_cpp-AttrType.$(OBJEXT)
    836         -rm -f SynTree/cfa_cpp-BasicType.$(OBJEXT)
    837         -rm -f SynTree/cfa_cpp-CodeGenVisitor.$(OBJEXT)
    838         -rm -f SynTree/cfa_cpp-CommaExpr.$(OBJEXT)
    839         -rm -f SynTree/cfa_cpp-CompoundStmt.$(OBJEXT)
    840         -rm -f SynTree/cfa_cpp-Constant.$(OBJEXT)
    841         -rm -f SynTree/cfa_cpp-DeclStmt.$(OBJEXT)
    842         -rm -f SynTree/cfa_cpp-Declaration.$(OBJEXT)
    843         -rm -f SynTree/cfa_cpp-DeclarationWithType.$(OBJEXT)
    844         -rm -f SynTree/cfa_cpp-Expression.$(OBJEXT)
    845         -rm -f SynTree/cfa_cpp-FunctionDecl.$(OBJEXT)
    846         -rm -f SynTree/cfa_cpp-FunctionType.$(OBJEXT)
    847         -rm -f SynTree/cfa_cpp-Initializer.$(OBJEXT)
    848         -rm -f SynTree/cfa_cpp-Mutator.$(OBJEXT)
    849         -rm -f SynTree/cfa_cpp-NamedTypeDecl.$(OBJEXT)
    850         -rm -f SynTree/cfa_cpp-ObjectDecl.$(OBJEXT)
    851         -rm -f SynTree/cfa_cpp-PointerType.$(OBJEXT)
    852         -rm -f SynTree/cfa_cpp-ReferenceToType.$(OBJEXT)
    853         -rm -f SynTree/cfa_cpp-Statement.$(OBJEXT)
    854         -rm -f SynTree/cfa_cpp-TupleExpr.$(OBJEXT)
    855         -rm -f SynTree/cfa_cpp-TupleType.$(OBJEXT)
    856         -rm -f SynTree/cfa_cpp-Type.$(OBJEXT)
    857         -rm -f SynTree/cfa_cpp-TypeDecl.$(OBJEXT)
    858         -rm -f SynTree/cfa_cpp-TypeExpr.$(OBJEXT)
    859         -rm -f SynTree/cfa_cpp-TypeSubstitution.$(OBJEXT)
    860         -rm -f SynTree/cfa_cpp-TypeofType.$(OBJEXT)
    861         -rm -f SynTree/cfa_cpp-Visitor.$(OBJEXT)
    862         -rm -f SynTree/cfa_cpp-VoidType.$(OBJEXT)
    863         -rm -f Tuples/cfa_cpp-AssignExpand.$(OBJEXT)
    864         -rm -f Tuples/cfa_cpp-FunctionChecker.$(OBJEXT)
    865         -rm -f Tuples/cfa_cpp-FunctionFixer.$(OBJEXT)
    866         -rm -f Tuples/cfa_cpp-Mutate.$(OBJEXT)
    867         -rm -f Tuples/cfa_cpp-NameMatcher.$(OBJEXT)
    868         -rm -f Tuples/cfa_cpp-TupleAssignment.$(OBJEXT)
     811        -rm -f CodeGen/driver_cfa_cpp-CodeGenerator.$(OBJEXT)
     812        -rm -f CodeGen/driver_cfa_cpp-FixNames.$(OBJEXT)
     813        -rm -f CodeGen/driver_cfa_cpp-GenType.$(OBJEXT)
     814        -rm -f CodeGen/driver_cfa_cpp-Generate.$(OBJEXT)
     815        -rm -f CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT)
     816        -rm -f Common/driver_cfa_cpp-SemanticError.$(OBJEXT)
     817        -rm -f Common/driver_cfa_cpp-UniqueName.$(OBJEXT)
     818        -rm -f ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT)
     819        -rm -f ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT)
     820        -rm -f ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT)
     821        -rm -f ControlStruct/driver_cfa_cpp-LabelTypeChecker.$(OBJEXT)
     822        -rm -f ControlStruct/driver_cfa_cpp-MLEMutator.$(OBJEXT)
     823        -rm -f ControlStruct/driver_cfa_cpp-Mutate.$(OBJEXT)
     824        -rm -f Designators/driver_cfa_cpp-Processor.$(OBJEXT)
     825        -rm -f GenPoly/driver_cfa_cpp-Box.$(OBJEXT)
     826        -rm -f GenPoly/driver_cfa_cpp-CopyParams.$(OBJEXT)
     827        -rm -f GenPoly/driver_cfa_cpp-DeclMutator.$(OBJEXT)
     828        -rm -f GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT)
     829        -rm -f GenPoly/driver_cfa_cpp-GenPoly.$(OBJEXT)
     830        -rm -f GenPoly/driver_cfa_cpp-Lvalue.$(OBJEXT)
     831        -rm -f GenPoly/driver_cfa_cpp-PolyMutator.$(OBJEXT)
     832        -rm -f GenPoly/driver_cfa_cpp-ScrubTyVars.$(OBJEXT)
     833        -rm -f GenPoly/driver_cfa_cpp-Specialize.$(OBJEXT)
     834        -rm -f InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT)
     835        -rm -f InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT)
     836        -rm -f InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT)
     837        -rm -f InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT)
     838        -rm -f Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT)
     839        -rm -f Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT)
     840        -rm -f Parser/driver_cfa_cpp-InitializerNode.$(OBJEXT)
     841        -rm -f Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT)
     842        -rm -f Parser/driver_cfa_cpp-ParseNode.$(OBJEXT)
     843        -rm -f Parser/driver_cfa_cpp-Parser.$(OBJEXT)
     844        -rm -f Parser/driver_cfa_cpp-StatementNode.$(OBJEXT)
     845        -rm -f Parser/driver_cfa_cpp-TypeData.$(OBJEXT)
     846        -rm -f Parser/driver_cfa_cpp-TypedefTable.$(OBJEXT)
     847        -rm -f Parser/driver_cfa_cpp-lex.$(OBJEXT)
     848        -rm -f Parser/driver_cfa_cpp-parser.$(OBJEXT)
     849        -rm -f Parser/driver_cfa_cpp-parseutility.$(OBJEXT)
     850        -rm -f ResolvExpr/driver_cfa_cpp-AdjustExprType.$(OBJEXT)
     851        -rm -f ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT)
     852        -rm -f ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT)
     853        -rm -f ResolvExpr/driver_cfa_cpp-AlternativePrinter.$(OBJEXT)
     854        -rm -f ResolvExpr/driver_cfa_cpp-CastCost.$(OBJEXT)
     855        -rm -f ResolvExpr/driver_cfa_cpp-CommonType.$(OBJEXT)
     856        -rm -f ResolvExpr/driver_cfa_cpp-ConversionCost.$(OBJEXT)
     857        -rm -f ResolvExpr/driver_cfa_cpp-FindOpenVars.$(OBJEXT)
     858        -rm -f ResolvExpr/driver_cfa_cpp-Occurs.$(OBJEXT)
     859        -rm -f ResolvExpr/driver_cfa_cpp-PolyCost.$(OBJEXT)
     860        -rm -f ResolvExpr/driver_cfa_cpp-PtrsAssignable.$(OBJEXT)
     861        -rm -f ResolvExpr/driver_cfa_cpp-PtrsCastable.$(OBJEXT)
     862        -rm -f ResolvExpr/driver_cfa_cpp-RenameVars.$(OBJEXT)
     863        -rm -f ResolvExpr/driver_cfa_cpp-ResolveTypeof.$(OBJEXT)
     864        -rm -f ResolvExpr/driver_cfa_cpp-Resolver.$(OBJEXT)
     865        -rm -f ResolvExpr/driver_cfa_cpp-TypeEnvironment.$(OBJEXT)
     866        -rm -f ResolvExpr/driver_cfa_cpp-Unify.$(OBJEXT)
     867        -rm -f SymTab/driver_cfa_cpp-Autogen.$(OBJEXT)
     868        -rm -f SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT)
     869        -rm -f SymTab/driver_cfa_cpp-ImplementationType.$(OBJEXT)
     870        -rm -f SymTab/driver_cfa_cpp-Indexer.$(OBJEXT)
     871        -rm -f SymTab/driver_cfa_cpp-Mangler.$(OBJEXT)
     872        -rm -f SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT)
     873        -rm -f SymTab/driver_cfa_cpp-Validate.$(OBJEXT)
     874        -rm -f SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT)
     875        -rm -f SynTree/driver_cfa_cpp-AddressExpr.$(OBJEXT)
     876        -rm -f SynTree/driver_cfa_cpp-AggregateDecl.$(OBJEXT)
     877        -rm -f SynTree/driver_cfa_cpp-ApplicationExpr.$(OBJEXT)
     878        -rm -f SynTree/driver_cfa_cpp-ArrayType.$(OBJEXT)
     879        -rm -f SynTree/driver_cfa_cpp-AttrType.$(OBJEXT)
     880        -rm -f SynTree/driver_cfa_cpp-Attribute.$(OBJEXT)
     881        -rm -f SynTree/driver_cfa_cpp-BasicType.$(OBJEXT)
     882        -rm -f SynTree/driver_cfa_cpp-CommaExpr.$(OBJEXT)
     883        -rm -f SynTree/driver_cfa_cpp-CompoundStmt.$(OBJEXT)
     884        -rm -f SynTree/driver_cfa_cpp-Constant.$(OBJEXT)
     885        -rm -f SynTree/driver_cfa_cpp-DeclStmt.$(OBJEXT)
     886        -rm -f SynTree/driver_cfa_cpp-Declaration.$(OBJEXT)
     887        -rm -f SynTree/driver_cfa_cpp-DeclarationWithType.$(OBJEXT)
     888        -rm -f SynTree/driver_cfa_cpp-Expression.$(OBJEXT)
     889        -rm -f SynTree/driver_cfa_cpp-FunctionDecl.$(OBJEXT)
     890        -rm -f SynTree/driver_cfa_cpp-FunctionType.$(OBJEXT)
     891        -rm -f SynTree/driver_cfa_cpp-Initializer.$(OBJEXT)
     892        -rm -f SynTree/driver_cfa_cpp-Mutator.$(OBJEXT)
     893        -rm -f SynTree/driver_cfa_cpp-NamedTypeDecl.$(OBJEXT)
     894        -rm -f SynTree/driver_cfa_cpp-ObjectDecl.$(OBJEXT)
     895        -rm -f SynTree/driver_cfa_cpp-PointerType.$(OBJEXT)
     896        -rm -f SynTree/driver_cfa_cpp-ReferenceToType.$(OBJEXT)
     897        -rm -f SynTree/driver_cfa_cpp-Statement.$(OBJEXT)
     898        -rm -f SynTree/driver_cfa_cpp-TupleExpr.$(OBJEXT)
     899        -rm -f SynTree/driver_cfa_cpp-TupleType.$(OBJEXT)
     900        -rm -f SynTree/driver_cfa_cpp-Type.$(OBJEXT)
     901        -rm -f SynTree/driver_cfa_cpp-TypeDecl.$(OBJEXT)
     902        -rm -f SynTree/driver_cfa_cpp-TypeExpr.$(OBJEXT)
     903        -rm -f SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT)
     904        -rm -f SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT)
     905        -rm -f SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT)
     906        -rm -f SynTree/driver_cfa_cpp-Visitor.$(OBJEXT)
     907        -rm -f SynTree/driver_cfa_cpp-VoidType.$(OBJEXT)
     908        -rm -f Tuples/driver_cfa_cpp-AssignExpand.$(OBJEXT)
     909        -rm -f Tuples/driver_cfa_cpp-FunctionChecker.$(OBJEXT)
     910        -rm -f Tuples/driver_cfa_cpp-FunctionFixer.$(OBJEXT)
     911        -rm -f Tuples/driver_cfa_cpp-Mutate.$(OBJEXT)
     912        -rm -f Tuples/driver_cfa_cpp-NameMatcher.$(OBJEXT)
     913        -rm -f Tuples/driver_cfa_cpp-TupleAssignment.$(OBJEXT)
    869914
    870915distclean-compile:
    871916        -rm -f *.tab.c
    872917
    873 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfa_cpp-MakeLibCfa.Po@am__quote@
    874 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfa_cpp-main.Po@am__quote@
    875 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Po@am__quote@
    876 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Po@am__quote@
    877 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-GenType.Po@am__quote@
    878 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-Generate.Po@am__quote@
    879 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Po@am__quote@
    880 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/cfa_cpp-SemanticError.Po@am__quote@
    881 @AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/cfa_cpp-UniqueName.Po@am__quote@
    882 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Po@am__quote@
    883 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Po@am__quote@
    884 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Po@am__quote@
    885 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Po@am__quote@
    886 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Po@am__quote@
    887 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Po@am__quote@
    888 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Po@am__quote@
    889 @AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Po@am__quote@
    890 @AMDEP_TRUE@@am__include@ @am__quote@Designators/$(DEPDIR)/cfa_cpp-Processor.Po@am__quote@
    891 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-Box.Po@am__quote@
    892 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Po@am__quote@
    893 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Po@am__quote@
    894 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Po@am__quote@
    895 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Po@am__quote@
    896 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Po@am__quote@
    897 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Po@am__quote@
    898 @AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Po@am__quote@
    899 @AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/cfa_cpp-Association.Po@am__quote@
    900 @AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Po@am__quote@
    901 @AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Po@am__quote@
    902 @AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Po@am__quote@
    903 @AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Po@am__quote@
    904 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Po@am__quote@
    905 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Po@am__quote@
    906 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Po@am__quote@
    907 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Po@am__quote@
    908 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-ParseNode.Po@am__quote@
    909 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-Parser.Po@am__quote@
    910 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-StatementNode.Po@am__quote@
    911 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-TypeData.Po@am__quote@
    912 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Po@am__quote@
    913 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-lex.Po@am__quote@
    914 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-parser.Po@am__quote@
    915 @AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/cfa_cpp-parseutility.Po@am__quote@
    916 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Po@am__quote@
    917 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Po@am__quote@
    918 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Po@am__quote@
    919 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Po@am__quote@
    920 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Po@am__quote@
    921 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Po@am__quote@
    922 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Po@am__quote@
    923 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Po@am__quote@
    924 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Po@am__quote@
    925 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Po@am__quote@
    926 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Po@am__quote@
    927 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Po@am__quote@
    928 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Po@am__quote@
    929 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Po@am__quote@
    930 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Po@am__quote@
    931 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Po@am__quote@
    932 @AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Po@am__quote@
    933 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Po@am__quote@
    934 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-IdTable.Po@am__quote@
    935 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Po@am__quote@
    936 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-Indexer.Po@am__quote@
    937 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-Mangler.Po@am__quote@
    938 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-TypeEquality.Po@am__quote@
    939 @AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/cfa_cpp-Validate.Po@am__quote@
    940 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Po@am__quote@
    941 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Po@am__quote@
    942 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Po@am__quote@
    943 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Po@am__quote@
    944 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-AttrType.Po@am__quote@
    945 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-BasicType.Po@am__quote@
    946 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Po@am__quote@
    947 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Po@am__quote@
    948 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Po@am__quote@
    949 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Constant.Po@am__quote@
    950 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Po@am__quote@
    951 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Declaration.Po@am__quote@
    952 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Po@am__quote@
    953 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Expression.Po@am__quote@
    954 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Po@am__quote@
    955 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Po@am__quote@
    956 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Initializer.Po@am__quote@
    957 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Mutator.Po@am__quote@
    958 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Po@am__quote@
    959 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Po@am__quote@
    960 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-PointerType.Po@am__quote@
    961 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Po@am__quote@
    962 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Statement.Po@am__quote@
    963 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Po@am__quote@
    964 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TupleType.Po@am__quote@
    965 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Type.Po@am__quote@
    966 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Po@am__quote@
    967 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Po@am__quote@
    968 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Po@am__quote@
    969 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Po@am__quote@
    970 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-Visitor.Po@am__quote@
    971 @AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/cfa_cpp-VoidType.Po@am__quote@
    972 @AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Po@am__quote@
    973 @AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Po@am__quote@
    974 @AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Po@am__quote@
    975 @AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-Mutate.Po@am__quote@
    976 @AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Po@am__quote@
    977 @AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Po@am__quote@
     918@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Po@am__quote@
     919@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_cfa_cpp-main.Po@am__quote@
     920@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Po@am__quote@
     921@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Po@am__quote@
     922@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Po@am__quote@
     923@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po@am__quote@
     924@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po@am__quote@
     925@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po@am__quote@
     926@AMDEP_TRUE@@am__include@ @am__quote@Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po@am__quote@
     927@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po@am__quote@
     928@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po@am__quote@
     929@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Po@am__quote@
     930@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Po@am__quote@
     931@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Po@am__quote@
     932@AMDEP_TRUE@@am__include@ @am__quote@ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Po@am__quote@
     933@AMDEP_TRUE@@am__include@ @am__quote@Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Po@am__quote@
     934@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Po@am__quote@
     935@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Po@am__quote@
     936@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Po@am__quote@
     937@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Po@am__quote@
     938@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Po@am__quote@
     939@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Po@am__quote@
     940@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Po@am__quote@
     941@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po@am__quote@
     942@AMDEP_TRUE@@am__include@ @am__quote@GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Po@am__quote@
     943@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Po@am__quote@
     944@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po@am__quote@
     945@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Po@am__quote@
     946@AMDEP_TRUE@@am__include@ @am__quote@InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po@am__quote@
     947@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po@am__quote@
     948@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po@am__quote@
     949@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Po@am__quote@
     950@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po@am__quote@
     951@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po@am__quote@
     952@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po@am__quote@
     953@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po@am__quote@
     954@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po@am__quote@
     955@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Po@am__quote@
     956@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-lex.Po@am__quote@
     957@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-parser.Po@am__quote@
     958@AMDEP_TRUE@@am__include@ @am__quote@Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Po@am__quote@
     959@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Po@am__quote@
     960@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Po@am__quote@
     961@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Po@am__quote@
     962@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Po@am__quote@
     963@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Po@am__quote@
     964@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Po@am__quote@
     965@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Po@am__quote@
     966@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Po@am__quote@
     967@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Po@am__quote@
     968@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Po@am__quote@
     969@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Po@am__quote@
     970@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Po@am__quote@
     971@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Po@am__quote@
     972@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Po@am__quote@
     973@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Po@am__quote@
     974@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po@am__quote@
     975@AMDEP_TRUE@@am__include@ @am__quote@ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po@am__quote@
     976@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Po@am__quote@
     977@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po@am__quote@
     978@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Po@am__quote@
     979@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Po@am__quote@
     980@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Po@am__quote@
     981@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Po@am__quote@
     982@AMDEP_TRUE@@am__include@ @am__quote@SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Po@am__quote@
     983@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Po@am__quote@
     984@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po@am__quote@
     985@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po@am__quote@
     986@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Po@am__quote@
     987@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po@am__quote@
     988@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po@am__quote@
     989@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Po@am__quote@
     990@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po@am__quote@
     991@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po@am__quote@
     992@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po@am__quote@
     993@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Po@am__quote@
     994@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Po@am__quote@
     995@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Po@am__quote@
     996@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Po@am__quote@
     997@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Po@am__quote@
     998@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Po@am__quote@
     999@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Po@am__quote@
     1000@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Po@am__quote@
     1001@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Po@am__quote@
     1002@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Po@am__quote@
     1003@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Po@am__quote@
     1004@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Po@am__quote@
     1005@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Po@am__quote@
     1006@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Po@am__quote@
     1007@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Po@am__quote@
     1008@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Po@am__quote@
     1009@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Po@am__quote@
     1010@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Po@am__quote@
     1011@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Po@am__quote@
     1012@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po@am__quote@
     1013@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po@am__quote@
     1014@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po@am__quote@
     1015@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Po@am__quote@
     1016@AMDEP_TRUE@@am__include@ @am__quote@SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po@am__quote@
     1017@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Po@am__quote@
     1018@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Po@am__quote@
     1019@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Po@am__quote@
     1020@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Po@am__quote@
     1021@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Po@am__quote@
     1022@AMDEP_TRUE@@am__include@ @am__quote@Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Po@am__quote@
    9781023
    9791024.cc.o:
    980 @am__fastdepCXX_TRUE@   depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
     1025@am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    9811026@am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    9821027@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
    983 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    984 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    985 @am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ $<
     1028@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     1029@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1030@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
    9861031
    9871032.cc.obj:
    988 @am__fastdepCXX_TRUE@   depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
     1033@am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
    9891034@am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
    9901035@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
    991 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    992 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    993 @am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    994 
    995 cfa_cpp-main.o: main.cc
    996 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT cfa_cpp-main.o -MD -MP -MF $(DEPDIR)/cfa_cpp-main.Tpo -c -o cfa_cpp-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc
    997 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/cfa_cpp-main.Tpo $(DEPDIR)/cfa_cpp-main.Po
    998 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='main.cc' object='cfa_cpp-main.o' libtool=no @AMDEPBACKSLASH@
    999 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1000 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o cfa_cpp-main.o `test -f 'main.cc' || echo '$(srcdir)/'`main.cc
    1001 
    1002 cfa_cpp-main.obj: main.cc
    1003 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT cfa_cpp-main.obj -MD -MP -MF $(DEPDIR)/cfa_cpp-main.Tpo -c -o cfa_cpp-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi`
    1004 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/cfa_cpp-main.Tpo $(DEPDIR)/cfa_cpp-main.Po
    1005 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='main.cc' object='cfa_cpp-main.obj' libtool=no @AMDEPBACKSLASH@
    1006 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1007 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o cfa_cpp-main.obj `if test -f 'main.cc'; then $(CYGPATH_W) 'main.cc'; else $(CYGPATH_W) '$(srcdir)/main.cc'; fi`
    1008 
    1009 cfa_cpp-MakeLibCfa.o: MakeLibCfa.cc
    1010 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT cfa_cpp-MakeLibCfa.o -MD -MP -MF $(DEPDIR)/cfa_cpp-MakeLibCfa.Tpo -c -o cfa_cpp-MakeLibCfa.o `test -f 'MakeLibCfa.cc' || echo '$(srcdir)/'`MakeLibCfa.cc
    1011 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/cfa_cpp-MakeLibCfa.Po
    1012 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='MakeLibCfa.cc' object='cfa_cpp-MakeLibCfa.o' libtool=no @AMDEPBACKSLASH@
    1013 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1014 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o cfa_cpp-MakeLibCfa.o `test -f 'MakeLibCfa.cc' || echo '$(srcdir)/'`MakeLibCfa.cc
    1015 
    1016 cfa_cpp-MakeLibCfa.obj: MakeLibCfa.cc
    1017 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT cfa_cpp-MakeLibCfa.obj -MD -MP -MF $(DEPDIR)/cfa_cpp-MakeLibCfa.Tpo -c -o cfa_cpp-MakeLibCfa.obj `if test -f 'MakeLibCfa.cc'; then $(CYGPATH_W) 'MakeLibCfa.cc'; else $(CYGPATH_W) '$(srcdir)/MakeLibCfa.cc'; fi`
    1018 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/cfa_cpp-MakeLibCfa.Po
    1019 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='MakeLibCfa.cc' object='cfa_cpp-MakeLibCfa.obj' libtool=no @AMDEPBACKSLASH@
    1020 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1021 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o cfa_cpp-MakeLibCfa.obj `if test -f 'MakeLibCfa.cc'; then $(CYGPATH_W) 'MakeLibCfa.cc'; else $(CYGPATH_W) '$(srcdir)/MakeLibCfa.cc'; fi`
    1022 
    1023 CodeGen/cfa_cpp-Generate.o: CodeGen/Generate.cc
    1024 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-Generate.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-Generate.Tpo -c -o CodeGen/cfa_cpp-Generate.o `test -f 'CodeGen/Generate.cc' || echo '$(srcdir)/'`CodeGen/Generate.cc
    1025 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/cfa_cpp-Generate.Po
    1026 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/Generate.cc' object='CodeGen/cfa_cpp-Generate.o' libtool=no @AMDEPBACKSLASH@
    1027 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1028 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-Generate.o `test -f 'CodeGen/Generate.cc' || echo '$(srcdir)/'`CodeGen/Generate.cc
    1029 
    1030 CodeGen/cfa_cpp-Generate.obj: CodeGen/Generate.cc
    1031 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-Generate.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-Generate.Tpo -c -o CodeGen/cfa_cpp-Generate.obj `if test -f 'CodeGen/Generate.cc'; then $(CYGPATH_W) 'CodeGen/Generate.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/Generate.cc'; fi`
    1032 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/cfa_cpp-Generate.Po
    1033 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/Generate.cc' object='CodeGen/cfa_cpp-Generate.obj' libtool=no @AMDEPBACKSLASH@
    1034 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1035 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-Generate.obj `if test -f 'CodeGen/Generate.cc'; then $(CYGPATH_W) 'CodeGen/Generate.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/Generate.cc'; fi`
    1036 
    1037 CodeGen/cfa_cpp-CodeGenerator.o: CodeGen/CodeGenerator.cc
    1038 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-CodeGenerator.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
    1039 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Po
    1040 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/CodeGenerator.cc' object='CodeGen/cfa_cpp-CodeGenerator.o' libtool=no @AMDEPBACKSLASH@
    1041 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1042 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
    1043 
    1044 CodeGen/cfa_cpp-CodeGenerator.obj: CodeGen/CodeGenerator.cc
    1045 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-CodeGenerator.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
    1046 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Po
    1047 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/CodeGenerator.cc' object='CodeGen/cfa_cpp-CodeGenerator.obj' libtool=no @AMDEPBACKSLASH@
    1048 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1049 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
    1050 
    1051 CodeGen/cfa_cpp-GenType.o: CodeGen/GenType.cc
    1052 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-GenType.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-GenType.Tpo -c -o CodeGen/cfa_cpp-GenType.o `test -f 'CodeGen/GenType.cc' || echo '$(srcdir)/'`CodeGen/GenType.cc
    1053 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/cfa_cpp-GenType.Po
    1054 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/GenType.cc' object='CodeGen/cfa_cpp-GenType.o' libtool=no @AMDEPBACKSLASH@
    1055 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1056 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-GenType.o `test -f 'CodeGen/GenType.cc' || echo '$(srcdir)/'`CodeGen/GenType.cc
    1057 
    1058 CodeGen/cfa_cpp-GenType.obj: CodeGen/GenType.cc
    1059 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-GenType.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-GenType.Tpo -c -o CodeGen/cfa_cpp-GenType.obj `if test -f 'CodeGen/GenType.cc'; then $(CYGPATH_W) 'CodeGen/GenType.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/GenType.cc'; fi`
    1060 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/cfa_cpp-GenType.Po
    1061 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/GenType.cc' object='CodeGen/cfa_cpp-GenType.obj' libtool=no @AMDEPBACKSLASH@
    1062 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1063 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-GenType.obj `if test -f 'CodeGen/GenType.cc'; then $(CYGPATH_W) 'CodeGen/GenType.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/GenType.cc'; fi`
    1064 
    1065 CodeGen/cfa_cpp-FixNames.o: CodeGen/FixNames.cc
    1066 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-FixNames.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Tpo -c -o CodeGen/cfa_cpp-FixNames.o `test -f 'CodeGen/FixNames.cc' || echo '$(srcdir)/'`CodeGen/FixNames.cc
    1067 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Po
    1068 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/FixNames.cc' object='CodeGen/cfa_cpp-FixNames.o' libtool=no @AMDEPBACKSLASH@
    1069 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1070 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-FixNames.o `test -f 'CodeGen/FixNames.cc' || echo '$(srcdir)/'`CodeGen/FixNames.cc
    1071 
    1072 CodeGen/cfa_cpp-FixNames.obj: CodeGen/FixNames.cc
    1073 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-FixNames.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Tpo -c -o CodeGen/cfa_cpp-FixNames.obj `if test -f 'CodeGen/FixNames.cc'; then $(CYGPATH_W) 'CodeGen/FixNames.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixNames.cc'; fi`
    1074 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Po
    1075 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/FixNames.cc' object='CodeGen/cfa_cpp-FixNames.obj' libtool=no @AMDEPBACKSLASH@
    1076 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1077 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-FixNames.obj `if test -f 'CodeGen/FixNames.cc'; then $(CYGPATH_W) 'CodeGen/FixNames.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/FixNames.cc'; fi`
    1078 
    1079 CodeGen/cfa_cpp-OperatorTable.o: CodeGen/OperatorTable.cc
    1080 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-OperatorTable.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Tpo -c -o CodeGen/cfa_cpp-OperatorTable.o `test -f 'CodeGen/OperatorTable.cc' || echo '$(srcdir)/'`CodeGen/OperatorTable.cc
    1081 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Po
    1082 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/OperatorTable.cc' object='CodeGen/cfa_cpp-OperatorTable.o' libtool=no @AMDEPBACKSLASH@
    1083 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1084 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-OperatorTable.o `test -f 'CodeGen/OperatorTable.cc' || echo '$(srcdir)/'`CodeGen/OperatorTable.cc
    1085 
    1086 CodeGen/cfa_cpp-OperatorTable.obj: CodeGen/OperatorTable.cc
    1087 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-OperatorTable.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Tpo -c -o CodeGen/cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
    1088 @am__fastdepCXX_TRUE@   $(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/cfa_cpp-OperatorTable.Po
    1089 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='CodeGen/OperatorTable.cc' object='CodeGen/cfa_cpp-OperatorTable.obj' libtool=no @AMDEPBACKSLASH@
    1090 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1091 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-OperatorTable.obj `if test -f 'CodeGen/OperatorTable.cc'; then $(CYGPATH_W) 'CodeGen/OperatorTable.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/OperatorTable.cc'; fi`
    1092 
    1093 Common/cfa_cpp-SemanticError.o: Common/SemanticError.cc
    1094 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/cfa_cpp-SemanticError.o -MD -MP -MF Common/$(DEPDIR)/cfa_cpp-SemanticError.Tpo -c -o Common/cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
    1095 @am__fastdepCXX_TRUE@   $(am__mv) Common/$(DEPDIR)/cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/cfa_cpp-SemanticError.Po
    1096 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Common/SemanticError.cc' object='Common/cfa_cpp-SemanticError.o' libtool=no @AMDEPBACKSLASH@
    1097 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1098 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/cfa_cpp-SemanticError.o `test -f 'Common/SemanticError.cc' || echo '$(srcdir)/'`Common/SemanticError.cc
    1099 
    1100 Common/cfa_cpp-SemanticError.obj: Common/SemanticError.cc
    1101 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/cfa_cpp-SemanticError.obj -MD -MP -MF Common/$(DEPDIR)/cfa_cpp-SemanticError.Tpo -c -o Common/cfa_cpp-SemanticError.obj `if test -f 'Common/SemanticError.cc'; then $(CYGPATH_W) 'Common/SemanticError.cc'; else $(CYGPATH_W) '$(srcdir)/Common/SemanticError.cc'; fi`
    1102 @am__fastdepCXX_TRUE@   $(am__mv) Common/$(DEPDIR)/cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/cfa_cpp-SemanticError.Po
    1103 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Common/SemanticError.cc' object='Common/cfa_cpp-SemanticError.obj' libtool=no @AMDEPBACKSLASH@
    1104 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1105 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/cfa_cpp-SemanticError.obj `if test -f 'Common/SemanticError.cc'; then $(CYGPATH_W) 'Common/SemanticError.cc'; else $(CYGPATH_W) '$(srcdir)/Common/SemanticError.cc'; fi`
    1106 
    1107 Common/cfa_cpp-UniqueName.o: Common/UniqueName.cc
    1108 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/cfa_cpp-UniqueName.o -MD -MP -MF Common/$(DEPDIR)/cfa_cpp-UniqueName.Tpo -c -o Common/cfa_cpp-UniqueName.o `test -f 'Common/UniqueName.cc' || echo '$(srcdir)/'`Common/UniqueName.cc
    1109 @am__fastdepCXX_TRUE@   $(am__mv) Common/$(DEPDIR)/cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/cfa_cpp-UniqueName.Po
    1110 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Common/UniqueName.cc' object='Common/cfa_cpp-UniqueName.o' libtool=no @AMDEPBACKSLASH@
    1111 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1112 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/cfa_cpp-UniqueName.o `test -f 'Common/UniqueName.cc' || echo '$(srcdir)/'`Common/UniqueName.cc
    1113 
    1114 Common/cfa_cpp-UniqueName.obj: Common/UniqueName.cc
    1115 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Common/cfa_cpp-UniqueName.obj -MD -MP -MF Common/$(DEPDIR)/cfa_cpp-UniqueName.Tpo -c -o Common/cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
    1116 @am__fastdepCXX_TRUE@   $(am__mv) Common/$(DEPDIR)/cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/cfa_cpp-UniqueName.Po
    1117 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Common/UniqueName.cc' object='Common/cfa_cpp-UniqueName.obj' libtool=no @AMDEPBACKSLASH@
    1118 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1119 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Common/cfa_cpp-UniqueName.obj `if test -f 'Common/UniqueName.cc'; then $(CYGPATH_W) 'Common/UniqueName.cc'; else $(CYGPATH_W) '$(srcdir)/Common/UniqueName.cc'; fi`
    1120 
    1121 ControlStruct/cfa_cpp-LabelGenerator.o: ControlStruct/LabelGenerator.cc
    1122 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelGenerator.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
    1123 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Po
    1124 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelGenerator.cc' object='ControlStruct/cfa_cpp-LabelGenerator.o' libtool=no @AMDEPBACKSLASH@
    1125 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1126 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelGenerator.o `test -f 'ControlStruct/LabelGenerator.cc' || echo '$(srcdir)/'`ControlStruct/LabelGenerator.cc
    1127 
    1128 ControlStruct/cfa_cpp-LabelGenerator.obj: ControlStruct/LabelGenerator.cc
    1129 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelGenerator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Tpo -c -o ControlStruct/cfa_cpp-LabelGenerator.obj `if test -f 'ControlStruct/LabelGenerator.cc'; then $(CYGPATH_W) 'ControlStruct/LabelGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelGenerator.cc'; fi`
    1130 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelGenerator.Po
    1131 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelGenerator.cc' object='ControlStruct/cfa_cpp-LabelGenerator.obj' libtool=no @AMDEPBACKSLASH@
    1132 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1133 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelGenerator.obj `if test -f 'ControlStruct/LabelGenerator.cc'; then $(CYGPATH_W) 'ControlStruct/LabelGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelGenerator.cc'; fi`
    1134 
    1135 ControlStruct/cfa_cpp-LabelFixer.o: ControlStruct/LabelFixer.cc
    1136 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelFixer.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Tpo -c -o ControlStruct/cfa_cpp-LabelFixer.o `test -f 'ControlStruct/LabelFixer.cc' || echo '$(srcdir)/'`ControlStruct/LabelFixer.cc
    1137 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Po
    1138 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelFixer.cc' object='ControlStruct/cfa_cpp-LabelFixer.o' libtool=no @AMDEPBACKSLASH@
    1139 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1140 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelFixer.o `test -f 'ControlStruct/LabelFixer.cc' || echo '$(srcdir)/'`ControlStruct/LabelFixer.cc
    1141 
    1142 ControlStruct/cfa_cpp-LabelFixer.obj: ControlStruct/LabelFixer.cc
    1143 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelFixer.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Tpo -c -o ControlStruct/cfa_cpp-LabelFixer.obj `if test -f 'ControlStruct/LabelFixer.cc'; then $(CYGPATH_W) 'ControlStruct/LabelFixer.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelFixer.cc'; fi`
    1144 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelFixer.Po
    1145 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelFixer.cc' object='ControlStruct/cfa_cpp-LabelFixer.obj' libtool=no @AMDEPBACKSLASH@
    1146 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1147 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelFixer.obj `if test -f 'ControlStruct/LabelFixer.cc'; then $(CYGPATH_W) 'ControlStruct/LabelFixer.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelFixer.cc'; fi`
    1148 
    1149 ControlStruct/cfa_cpp-MLEMutator.o: ControlStruct/MLEMutator.cc
    1150 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-MLEMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Tpo -c -o ControlStruct/cfa_cpp-MLEMutator.o `test -f 'ControlStruct/MLEMutator.cc' || echo '$(srcdir)/'`ControlStruct/MLEMutator.cc
    1151 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Po
    1152 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/MLEMutator.cc' object='ControlStruct/cfa_cpp-MLEMutator.o' libtool=no @AMDEPBACKSLASH@
    1153 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1154 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-MLEMutator.o `test -f 'ControlStruct/MLEMutator.cc' || echo '$(srcdir)/'`ControlStruct/MLEMutator.cc
    1155 
    1156 ControlStruct/cfa_cpp-MLEMutator.obj: ControlStruct/MLEMutator.cc
    1157 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-MLEMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Tpo -c -o ControlStruct/cfa_cpp-MLEMutator.obj `if test -f 'ControlStruct/MLEMutator.cc'; then $(CYGPATH_W) 'ControlStruct/MLEMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/MLEMutator.cc'; fi`
    1158 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-MLEMutator.Po
    1159 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/MLEMutator.cc' object='ControlStruct/cfa_cpp-MLEMutator.obj' libtool=no @AMDEPBACKSLASH@
    1160 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1161 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-MLEMutator.obj `if test -f 'ControlStruct/MLEMutator.cc'; then $(CYGPATH_W) 'ControlStruct/MLEMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/MLEMutator.cc'; fi`
    1162 
    1163 ControlStruct/cfa_cpp-CaseRangeMutator.o: ControlStruct/CaseRangeMutator.cc
    1164 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-CaseRangeMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Tpo -c -o ControlStruct/cfa_cpp-CaseRangeMutator.o `test -f 'ControlStruct/CaseRangeMutator.cc' || echo '$(srcdir)/'`ControlStruct/CaseRangeMutator.cc
    1165 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Po
    1166 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/CaseRangeMutator.cc' object='ControlStruct/cfa_cpp-CaseRangeMutator.o' libtool=no @AMDEPBACKSLASH@
    1167 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1168 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-CaseRangeMutator.o `test -f 'ControlStruct/CaseRangeMutator.cc' || echo '$(srcdir)/'`ControlStruct/CaseRangeMutator.cc
    1169 
    1170 ControlStruct/cfa_cpp-CaseRangeMutator.obj: ControlStruct/CaseRangeMutator.cc
    1171 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-CaseRangeMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Tpo -c -o ControlStruct/cfa_cpp-CaseRangeMutator.obj `if test -f 'ControlStruct/CaseRangeMutator.cc'; then $(CYGPATH_W) 'ControlStruct/CaseRangeMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/CaseRangeMutator.cc'; fi`
    1172 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-CaseRangeMutator.Po
    1173 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/CaseRangeMutator.cc' object='ControlStruct/cfa_cpp-CaseRangeMutator.obj' libtool=no @AMDEPBACKSLASH@
    1174 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1175 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-CaseRangeMutator.obj `if test -f 'ControlStruct/CaseRangeMutator.cc'; then $(CYGPATH_W) 'ControlStruct/CaseRangeMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/CaseRangeMutator.cc'; fi`
    1176 
    1177 ControlStruct/cfa_cpp-Mutate.o: ControlStruct/Mutate.cc
    1178 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-Mutate.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o ControlStruct/cfa_cpp-Mutate.o `test -f 'ControlStruct/Mutate.cc' || echo '$(srcdir)/'`ControlStruct/Mutate.cc
    1179 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Po
    1180 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/Mutate.cc' object='ControlStruct/cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
    1181 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1182 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-Mutate.o `test -f 'ControlStruct/Mutate.cc' || echo '$(srcdir)/'`ControlStruct/Mutate.cc
    1183 
    1184 ControlStruct/cfa_cpp-Mutate.obj: ControlStruct/Mutate.cc
    1185 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-Mutate.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o ControlStruct/cfa_cpp-Mutate.obj `if test -f 'ControlStruct/Mutate.cc'; then $(CYGPATH_W) 'ControlStruct/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/Mutate.cc'; fi`
    1186 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-Mutate.Po
    1187 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/Mutate.cc' object='ControlStruct/cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
    1188 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1189 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-Mutate.obj `if test -f 'ControlStruct/Mutate.cc'; then $(CYGPATH_W) 'ControlStruct/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/Mutate.cc'; fi`
    1190 
    1191 ControlStruct/cfa_cpp-ChooseMutator.o: ControlStruct/ChooseMutator.cc
    1192 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-ChooseMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Tpo -c -o ControlStruct/cfa_cpp-ChooseMutator.o `test -f 'ControlStruct/ChooseMutator.cc' || echo '$(srcdir)/'`ControlStruct/ChooseMutator.cc
    1193 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Po
    1194 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/ChooseMutator.cc' object='ControlStruct/cfa_cpp-ChooseMutator.o' libtool=no @AMDEPBACKSLASH@
    1195 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1196 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-ChooseMutator.o `test -f 'ControlStruct/ChooseMutator.cc' || echo '$(srcdir)/'`ControlStruct/ChooseMutator.cc
    1197 
    1198 ControlStruct/cfa_cpp-ChooseMutator.obj: ControlStruct/ChooseMutator.cc
    1199 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-ChooseMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Tpo -c -o ControlStruct/cfa_cpp-ChooseMutator.obj `if test -f 'ControlStruct/ChooseMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ChooseMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ChooseMutator.cc'; fi`
    1200 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-ChooseMutator.Po
    1201 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/ChooseMutator.cc' object='ControlStruct/cfa_cpp-ChooseMutator.obj' libtool=no @AMDEPBACKSLASH@
    1202 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1203 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-ChooseMutator.obj `if test -f 'ControlStruct/ChooseMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ChooseMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ChooseMutator.cc'; fi`
    1204 
    1205 ControlStruct/cfa_cpp-ForExprMutator.o: ControlStruct/ForExprMutator.cc
    1206 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-ForExprMutator.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Tpo -c -o ControlStruct/cfa_cpp-ForExprMutator.o `test -f 'ControlStruct/ForExprMutator.cc' || echo '$(srcdir)/'`ControlStruct/ForExprMutator.cc
    1207 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Po
    1208 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/ForExprMutator.cc' object='ControlStruct/cfa_cpp-ForExprMutator.o' libtool=no @AMDEPBACKSLASH@
    1209 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1210 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-ForExprMutator.o `test -f 'ControlStruct/ForExprMutator.cc' || echo '$(srcdir)/'`ControlStruct/ForExprMutator.cc
    1211 
    1212 ControlStruct/cfa_cpp-ForExprMutator.obj: ControlStruct/ForExprMutator.cc
    1213 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-ForExprMutator.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Tpo -c -o ControlStruct/cfa_cpp-ForExprMutator.obj `if test -f 'ControlStruct/ForExprMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ForExprMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ForExprMutator.cc'; fi`
    1214 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-ForExprMutator.Po
    1215 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/ForExprMutator.cc' object='ControlStruct/cfa_cpp-ForExprMutator.obj' libtool=no @AMDEPBACKSLASH@
    1216 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1217 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-ForExprMutator.obj `if test -f 'ControlStruct/ForExprMutator.cc'; then $(CYGPATH_W) 'ControlStruct/ForExprMutator.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/ForExprMutator.cc'; fi`
    1218 
    1219 ControlStruct/cfa_cpp-LabelTypeChecker.o: ControlStruct/LabelTypeChecker.cc
    1220 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelTypeChecker.o -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Tpo -c -o ControlStruct/cfa_cpp-LabelTypeChecker.o `test -f 'ControlStruct/LabelTypeChecker.cc' || echo '$(srcdir)/'`ControlStruct/LabelTypeChecker.cc
    1221 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Po
    1222 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelTypeChecker.cc' object='ControlStruct/cfa_cpp-LabelTypeChecker.o' libtool=no @AMDEPBACKSLASH@
    1223 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1224 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelTypeChecker.o `test -f 'ControlStruct/LabelTypeChecker.cc' || echo '$(srcdir)/'`ControlStruct/LabelTypeChecker.cc
    1225 
    1226 ControlStruct/cfa_cpp-LabelTypeChecker.obj: ControlStruct/LabelTypeChecker.cc
    1227 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ControlStruct/cfa_cpp-LabelTypeChecker.obj -MD -MP -MF ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Tpo -c -o ControlStruct/cfa_cpp-LabelTypeChecker.obj `if test -f 'ControlStruct/LabelTypeChecker.cc'; then $(CYGPATH_W) 'ControlStruct/LabelTypeChecker.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelTypeChecker.cc'; fi`
    1228 @am__fastdepCXX_TRUE@   $(am__mv) ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Tpo ControlStruct/$(DEPDIR)/cfa_cpp-LabelTypeChecker.Po
    1229 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ControlStruct/LabelTypeChecker.cc' object='ControlStruct/cfa_cpp-LabelTypeChecker.obj' libtool=no @AMDEPBACKSLASH@
    1230 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1231 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ControlStruct/cfa_cpp-LabelTypeChecker.obj `if test -f 'ControlStruct/LabelTypeChecker.cc'; then $(CYGPATH_W) 'ControlStruct/LabelTypeChecker.cc'; else $(CYGPATH_W) '$(srcdir)/ControlStruct/LabelTypeChecker.cc'; fi`
    1232 
    1233 Designators/cfa_cpp-Processor.o: Designators/Processor.cc
    1234 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Designators/cfa_cpp-Processor.o -MD -MP -MF Designators/$(DEPDIR)/cfa_cpp-Processor.Tpo -c -o Designators/cfa_cpp-Processor.o `test -f 'Designators/Processor.cc' || echo '$(srcdir)/'`Designators/Processor.cc
    1235 @am__fastdepCXX_TRUE@   $(am__mv) Designators/$(DEPDIR)/cfa_cpp-Processor.Tpo Designators/$(DEPDIR)/cfa_cpp-Processor.Po
    1236 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Designators/Processor.cc' object='Designators/cfa_cpp-Processor.o' libtool=no @AMDEPBACKSLASH@
    1237 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1238 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Designators/cfa_cpp-Processor.o `test -f 'Designators/Processor.cc' || echo '$(srcdir)/'`Designators/Processor.cc
    1239 
    1240 Designators/cfa_cpp-Processor.obj: Designators/Processor.cc
    1241 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Designators/cfa_cpp-Processor.obj -MD -MP -MF Designators/$(DEPDIR)/cfa_cpp-Processor.Tpo -c -o Designators/cfa_cpp-Processor.obj `if test -f 'Designators/Processor.cc'; then $(CYGPATH_W) 'Designators/Processor.cc'; else $(CYGPATH_W) '$(srcdir)/Designators/Processor.cc'; fi`
    1242 @am__fastdepCXX_TRUE@   $(am__mv) Designators/$(DEPDIR)/cfa_cpp-Processor.Tpo Designators/$(DEPDIR)/cfa_cpp-Processor.Po
    1243 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Designators/Processor.cc' object='Designators/cfa_cpp-Processor.obj' libtool=no @AMDEPBACKSLASH@
    1244 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1245 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Designators/cfa_cpp-Processor.obj `if test -f 'Designators/Processor.cc'; then $(CYGPATH_W) 'Designators/Processor.cc'; else $(CYGPATH_W) '$(srcdir)/Designators/Processor.cc'; fi`
    1246 
    1247 GenPoly/cfa_cpp-Box.o: GenPoly/Box.cc
    1248 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Box.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Box.Tpo -c -o GenPoly/cfa_cpp-Box.o `test -f 'GenPoly/Box.cc' || echo '$(srcdir)/'`GenPoly/Box.cc
    1249 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Box.Po
    1250 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Box.cc' object='GenPoly/cfa_cpp-Box.o' libtool=no @AMDEPBACKSLASH@
    1251 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1252 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Box.o `test -f 'GenPoly/Box.cc' || echo '$(srcdir)/'`GenPoly/Box.cc
    1253 
    1254 GenPoly/cfa_cpp-Box.obj: GenPoly/Box.cc
    1255 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Box.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Box.Tpo -c -o GenPoly/cfa_cpp-Box.obj `if test -f 'GenPoly/Box.cc'; then $(CYGPATH_W) 'GenPoly/Box.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Box.cc'; fi`
    1256 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Box.Po
    1257 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Box.cc' object='GenPoly/cfa_cpp-Box.obj' libtool=no @AMDEPBACKSLASH@
    1258 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1259 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Box.obj `if test -f 'GenPoly/Box.cc'; then $(CYGPATH_W) 'GenPoly/Box.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Box.cc'; fi`
    1260 
    1261 GenPoly/cfa_cpp-GenPoly.o: GenPoly/GenPoly.cc
    1262 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-GenPoly.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Tpo -c -o GenPoly/cfa_cpp-GenPoly.o `test -f 'GenPoly/GenPoly.cc' || echo '$(srcdir)/'`GenPoly/GenPoly.cc
    1263 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Po
    1264 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/GenPoly.cc' object='GenPoly/cfa_cpp-GenPoly.o' libtool=no @AMDEPBACKSLASH@
    1265 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1266 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-GenPoly.o `test -f 'GenPoly/GenPoly.cc' || echo '$(srcdir)/'`GenPoly/GenPoly.cc
    1267 
    1268 GenPoly/cfa_cpp-GenPoly.obj: GenPoly/GenPoly.cc
    1269 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-GenPoly.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Tpo -c -o GenPoly/cfa_cpp-GenPoly.obj `if test -f 'GenPoly/GenPoly.cc'; then $(CYGPATH_W) 'GenPoly/GenPoly.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/GenPoly.cc'; fi`
    1270 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/cfa_cpp-GenPoly.Po
    1271 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/GenPoly.cc' object='GenPoly/cfa_cpp-GenPoly.obj' libtool=no @AMDEPBACKSLASH@
    1272 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1273 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-GenPoly.obj `if test -f 'GenPoly/GenPoly.cc'; then $(CYGPATH_W) 'GenPoly/GenPoly.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/GenPoly.cc'; fi`
    1274 
    1275 GenPoly/cfa_cpp-PolyMutator.o: GenPoly/PolyMutator.cc
    1276 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-PolyMutator.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Tpo -c -o GenPoly/cfa_cpp-PolyMutator.o `test -f 'GenPoly/PolyMutator.cc' || echo '$(srcdir)/'`GenPoly/PolyMutator.cc
    1277 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Tpo GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Po
    1278 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/PolyMutator.cc' object='GenPoly/cfa_cpp-PolyMutator.o' libtool=no @AMDEPBACKSLASH@
    1279 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1280 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-PolyMutator.o `test -f 'GenPoly/PolyMutator.cc' || echo '$(srcdir)/'`GenPoly/PolyMutator.cc
    1281 
    1282 GenPoly/cfa_cpp-PolyMutator.obj: GenPoly/PolyMutator.cc
    1283 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-PolyMutator.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Tpo -c -o GenPoly/cfa_cpp-PolyMutator.obj `if test -f 'GenPoly/PolyMutator.cc'; then $(CYGPATH_W) 'GenPoly/PolyMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/PolyMutator.cc'; fi`
    1284 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Tpo GenPoly/$(DEPDIR)/cfa_cpp-PolyMutator.Po
    1285 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/PolyMutator.cc' object='GenPoly/cfa_cpp-PolyMutator.obj' libtool=no @AMDEPBACKSLASH@
    1286 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1287 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-PolyMutator.obj `if test -f 'GenPoly/PolyMutator.cc'; then $(CYGPATH_W) 'GenPoly/PolyMutator.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/PolyMutator.cc'; fi`
    1288 
    1289 GenPoly/cfa_cpp-ScrubTyVars.o: GenPoly/ScrubTyVars.cc
    1290 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-ScrubTyVars.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Tpo -c -o GenPoly/cfa_cpp-ScrubTyVars.o `test -f 'GenPoly/ScrubTyVars.cc' || echo '$(srcdir)/'`GenPoly/ScrubTyVars.cc
    1291 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Po
    1292 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/ScrubTyVars.cc' object='GenPoly/cfa_cpp-ScrubTyVars.o' libtool=no @AMDEPBACKSLASH@
    1293 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1294 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-ScrubTyVars.o `test -f 'GenPoly/ScrubTyVars.cc' || echo '$(srcdir)/'`GenPoly/ScrubTyVars.cc
    1295 
    1296 GenPoly/cfa_cpp-ScrubTyVars.obj: GenPoly/ScrubTyVars.cc
    1297 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-ScrubTyVars.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Tpo -c -o GenPoly/cfa_cpp-ScrubTyVars.obj `if test -f 'GenPoly/ScrubTyVars.cc'; then $(CYGPATH_W) 'GenPoly/ScrubTyVars.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/ScrubTyVars.cc'; fi`
    1298 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/cfa_cpp-ScrubTyVars.Po
    1299 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/ScrubTyVars.cc' object='GenPoly/cfa_cpp-ScrubTyVars.obj' libtool=no @AMDEPBACKSLASH@
    1300 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1301 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-ScrubTyVars.obj `if test -f 'GenPoly/ScrubTyVars.cc'; then $(CYGPATH_W) 'GenPoly/ScrubTyVars.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/ScrubTyVars.cc'; fi`
    1302 
    1303 GenPoly/cfa_cpp-Lvalue.o: GenPoly/Lvalue.cc
    1304 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Lvalue.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Tpo -c -o GenPoly/cfa_cpp-Lvalue.o `test -f 'GenPoly/Lvalue.cc' || echo '$(srcdir)/'`GenPoly/Lvalue.cc
    1305 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Po
    1306 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Lvalue.cc' object='GenPoly/cfa_cpp-Lvalue.o' libtool=no @AMDEPBACKSLASH@
    1307 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1308 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Lvalue.o `test -f 'GenPoly/Lvalue.cc' || echo '$(srcdir)/'`GenPoly/Lvalue.cc
    1309 
    1310 GenPoly/cfa_cpp-Lvalue.obj: GenPoly/Lvalue.cc
    1311 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Lvalue.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Tpo -c -o GenPoly/cfa_cpp-Lvalue.obj `if test -f 'GenPoly/Lvalue.cc'; then $(CYGPATH_W) 'GenPoly/Lvalue.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Lvalue.cc'; fi`
    1312 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Lvalue.Po
    1313 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Lvalue.cc' object='GenPoly/cfa_cpp-Lvalue.obj' libtool=no @AMDEPBACKSLASH@
    1314 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1315 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Lvalue.obj `if test -f 'GenPoly/Lvalue.cc'; then $(CYGPATH_W) 'GenPoly/Lvalue.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Lvalue.cc'; fi`
    1316 
    1317 GenPoly/cfa_cpp-Specialize.o: GenPoly/Specialize.cc
    1318 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Specialize.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Tpo -c -o GenPoly/cfa_cpp-Specialize.o `test -f 'GenPoly/Specialize.cc' || echo '$(srcdir)/'`GenPoly/Specialize.cc
    1319 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Po
    1320 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Specialize.cc' object='GenPoly/cfa_cpp-Specialize.o' libtool=no @AMDEPBACKSLASH@
    1321 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1322 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Specialize.o `test -f 'GenPoly/Specialize.cc' || echo '$(srcdir)/'`GenPoly/Specialize.cc
    1323 
    1324 GenPoly/cfa_cpp-Specialize.obj: GenPoly/Specialize.cc
    1325 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-Specialize.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Tpo -c -o GenPoly/cfa_cpp-Specialize.obj `if test -f 'GenPoly/Specialize.cc'; then $(CYGPATH_W) 'GenPoly/Specialize.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Specialize.cc'; fi`
    1326 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/cfa_cpp-Specialize.Po
    1327 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/Specialize.cc' object='GenPoly/cfa_cpp-Specialize.obj' libtool=no @AMDEPBACKSLASH@
    1328 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1329 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-Specialize.obj `if test -f 'GenPoly/Specialize.cc'; then $(CYGPATH_W) 'GenPoly/Specialize.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/Specialize.cc'; fi`
    1330 
    1331 GenPoly/cfa_cpp-CopyParams.o: GenPoly/CopyParams.cc
    1332 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-CopyParams.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Tpo -c -o GenPoly/cfa_cpp-CopyParams.o `test -f 'GenPoly/CopyParams.cc' || echo '$(srcdir)/'`GenPoly/CopyParams.cc
    1333 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Tpo GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Po
    1334 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/CopyParams.cc' object='GenPoly/cfa_cpp-CopyParams.o' libtool=no @AMDEPBACKSLASH@
    1335 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1336 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-CopyParams.o `test -f 'GenPoly/CopyParams.cc' || echo '$(srcdir)/'`GenPoly/CopyParams.cc
    1337 
    1338 GenPoly/cfa_cpp-CopyParams.obj: GenPoly/CopyParams.cc
    1339 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-CopyParams.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Tpo -c -o GenPoly/cfa_cpp-CopyParams.obj `if test -f 'GenPoly/CopyParams.cc'; then $(CYGPATH_W) 'GenPoly/CopyParams.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/CopyParams.cc'; fi`
    1340 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Tpo GenPoly/$(DEPDIR)/cfa_cpp-CopyParams.Po
    1341 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/CopyParams.cc' object='GenPoly/cfa_cpp-CopyParams.obj' libtool=no @AMDEPBACKSLASH@
    1342 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1343 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-CopyParams.obj `if test -f 'GenPoly/CopyParams.cc'; then $(CYGPATH_W) 'GenPoly/CopyParams.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/CopyParams.cc'; fi`
    1344 
    1345 GenPoly/cfa_cpp-FindFunction.o: GenPoly/FindFunction.cc
    1346 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-FindFunction.o -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Tpo -c -o GenPoly/cfa_cpp-FindFunction.o `test -f 'GenPoly/FindFunction.cc' || echo '$(srcdir)/'`GenPoly/FindFunction.cc
    1347 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Po
    1348 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/FindFunction.cc' object='GenPoly/cfa_cpp-FindFunction.o' libtool=no @AMDEPBACKSLASH@
    1349 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1350 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-FindFunction.o `test -f 'GenPoly/FindFunction.cc' || echo '$(srcdir)/'`GenPoly/FindFunction.cc
    1351 
    1352 GenPoly/cfa_cpp-FindFunction.obj: GenPoly/FindFunction.cc
    1353 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT GenPoly/cfa_cpp-FindFunction.obj -MD -MP -MF GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Tpo -c -o GenPoly/cfa_cpp-FindFunction.obj `if test -f 'GenPoly/FindFunction.cc'; then $(CYGPATH_W) 'GenPoly/FindFunction.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/FindFunction.cc'; fi`
    1354 @am__fastdepCXX_TRUE@   $(am__mv) GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/cfa_cpp-FindFunction.Po
    1355 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='GenPoly/FindFunction.cc' object='GenPoly/cfa_cpp-FindFunction.obj' libtool=no @AMDEPBACKSLASH@
    1356 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1357 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o GenPoly/cfa_cpp-FindFunction.obj `if test -f 'GenPoly/FindFunction.cc'; then $(CYGPATH_W) 'GenPoly/FindFunction.cc'; else $(CYGPATH_W) '$(srcdir)/GenPoly/FindFunction.cc'; fi`
    1358 
    1359 InitTweak/cfa_cpp-InitModel.o: InitTweak/InitModel.cc
    1360 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-InitModel.o -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Tpo -c -o InitTweak/cfa_cpp-InitModel.o `test -f 'InitTweak/InitModel.cc' || echo '$(srcdir)/'`InitTweak/InitModel.cc
    1361 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Tpo InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Po
    1362 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/InitModel.cc' object='InitTweak/cfa_cpp-InitModel.o' libtool=no @AMDEPBACKSLASH@
    1363 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1364 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-InitModel.o `test -f 'InitTweak/InitModel.cc' || echo '$(srcdir)/'`InitTweak/InitModel.cc
    1365 
    1366 InitTweak/cfa_cpp-InitModel.obj: InitTweak/InitModel.cc
    1367 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-InitModel.obj -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Tpo -c -o InitTweak/cfa_cpp-InitModel.obj `if test -f 'InitTweak/InitModel.cc'; then $(CYGPATH_W) 'InitTweak/InitModel.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitModel.cc'; fi`
    1368 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Tpo InitTweak/$(DEPDIR)/cfa_cpp-InitModel.Po
    1369 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/InitModel.cc' object='InitTweak/cfa_cpp-InitModel.obj' libtool=no @AMDEPBACKSLASH@
    1370 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1371 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-InitModel.obj `if test -f 'InitTweak/InitModel.cc'; then $(CYGPATH_W) 'InitTweak/InitModel.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitModel.cc'; fi`
    1372 
    1373 InitTweak/cfa_cpp-InitExpander.o: InitTweak/InitExpander.cc
    1374 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-InitExpander.o -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Tpo -c -o InitTweak/cfa_cpp-InitExpander.o `test -f 'InitTweak/InitExpander.cc' || echo '$(srcdir)/'`InitTweak/InitExpander.cc
    1375 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Tpo InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Po
    1376 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/InitExpander.cc' object='InitTweak/cfa_cpp-InitExpander.o' libtool=no @AMDEPBACKSLASH@
    1377 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1378 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-InitExpander.o `test -f 'InitTweak/InitExpander.cc' || echo '$(srcdir)/'`InitTweak/InitExpander.cc
    1379 
    1380 InitTweak/cfa_cpp-InitExpander.obj: InitTweak/InitExpander.cc
    1381 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-InitExpander.obj -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Tpo -c -o InitTweak/cfa_cpp-InitExpander.obj `if test -f 'InitTweak/InitExpander.cc'; then $(CYGPATH_W) 'InitTweak/InitExpander.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitExpander.cc'; fi`
    1382 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Tpo InitTweak/$(DEPDIR)/cfa_cpp-InitExpander.Po
    1383 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/InitExpander.cc' object='InitTweak/cfa_cpp-InitExpander.obj' libtool=no @AMDEPBACKSLASH@
    1384 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1385 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-InitExpander.obj `if test -f 'InitTweak/InitExpander.cc'; then $(CYGPATH_W) 'InitTweak/InitExpander.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/InitExpander.cc'; fi`
    1386 
    1387 InitTweak/cfa_cpp-Mutate.o: InitTweak/Mutate.cc
    1388 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-Mutate.o -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o InitTweak/cfa_cpp-Mutate.o `test -f 'InitTweak/Mutate.cc' || echo '$(srcdir)/'`InitTweak/Mutate.cc
    1389 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Tpo InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Po
    1390 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/Mutate.cc' object='InitTweak/cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
    1391 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1392 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-Mutate.o `test -f 'InitTweak/Mutate.cc' || echo '$(srcdir)/'`InitTweak/Mutate.cc
    1393 
    1394 InitTweak/cfa_cpp-Mutate.obj: InitTweak/Mutate.cc
    1395 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-Mutate.obj -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o InitTweak/cfa_cpp-Mutate.obj `if test -f 'InitTweak/Mutate.cc'; then $(CYGPATH_W) 'InitTweak/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/Mutate.cc'; fi`
    1396 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Tpo InitTweak/$(DEPDIR)/cfa_cpp-Mutate.Po
    1397 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/Mutate.cc' object='InitTweak/cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
    1398 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1399 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-Mutate.obj `if test -f 'InitTweak/Mutate.cc'; then $(CYGPATH_W) 'InitTweak/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/Mutate.cc'; fi`
    1400 
    1401 InitTweak/cfa_cpp-Association.o: InitTweak/Association.cc
    1402 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-Association.o -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-Association.Tpo -c -o InitTweak/cfa_cpp-Association.o `test -f 'InitTweak/Association.cc' || echo '$(srcdir)/'`InitTweak/Association.cc
    1403 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-Association.Tpo InitTweak/$(DEPDIR)/cfa_cpp-Association.Po
    1404 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/Association.cc' object='InitTweak/cfa_cpp-Association.o' libtool=no @AMDEPBACKSLASH@
    1405 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1406 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-Association.o `test -f 'InitTweak/Association.cc' || echo '$(srcdir)/'`InitTweak/Association.cc
    1407 
    1408 InitTweak/cfa_cpp-Association.obj: InitTweak/Association.cc
    1409 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-Association.obj -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-Association.Tpo -c -o InitTweak/cfa_cpp-Association.obj `if test -f 'InitTweak/Association.cc'; then $(CYGPATH_W) 'InitTweak/Association.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/Association.cc'; fi`
    1410 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-Association.Tpo InitTweak/$(DEPDIR)/cfa_cpp-Association.Po
    1411 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/Association.cc' object='InitTweak/cfa_cpp-Association.obj' libtool=no @AMDEPBACKSLASH@
    1412 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1413 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-Association.obj `if test -f 'InitTweak/Association.cc'; then $(CYGPATH_W) 'InitTweak/Association.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/Association.cc'; fi`
    1414 
    1415 InitTweak/cfa_cpp-RemoveInit.o: InitTweak/RemoveInit.cc
    1416 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-RemoveInit.o -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Tpo -c -o InitTweak/cfa_cpp-RemoveInit.o `test -f 'InitTweak/RemoveInit.cc' || echo '$(srcdir)/'`InitTweak/RemoveInit.cc
    1417 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Tpo InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Po
    1418 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/RemoveInit.cc' object='InitTweak/cfa_cpp-RemoveInit.o' libtool=no @AMDEPBACKSLASH@
    1419 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1420 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-RemoveInit.o `test -f 'InitTweak/RemoveInit.cc' || echo '$(srcdir)/'`InitTweak/RemoveInit.cc
    1421 
    1422 InitTweak/cfa_cpp-RemoveInit.obj: InitTweak/RemoveInit.cc
    1423 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT InitTweak/cfa_cpp-RemoveInit.obj -MD -MP -MF InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Tpo -c -o InitTweak/cfa_cpp-RemoveInit.obj `if test -f 'InitTweak/RemoveInit.cc'; then $(CYGPATH_W) 'InitTweak/RemoveInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/RemoveInit.cc'; fi`
    1424 @am__fastdepCXX_TRUE@   $(am__mv) InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Tpo InitTweak/$(DEPDIR)/cfa_cpp-RemoveInit.Po
    1425 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='InitTweak/RemoveInit.cc' object='InitTweak/cfa_cpp-RemoveInit.obj' libtool=no @AMDEPBACKSLASH@
    1426 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1427 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o InitTweak/cfa_cpp-RemoveInit.obj `if test -f 'InitTweak/RemoveInit.cc'; then $(CYGPATH_W) 'InitTweak/RemoveInit.cc'; else $(CYGPATH_W) '$(srcdir)/InitTweak/RemoveInit.cc'; fi`
    1428 
    1429 Parser/cfa_cpp-parser.o: Parser/parser.cc
    1430 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-parser.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-parser.Tpo -c -o Parser/cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
    1431 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-parser.Tpo Parser/$(DEPDIR)/cfa_cpp-parser.Po
    1432 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/parser.cc' object='Parser/cfa_cpp-parser.o' libtool=no @AMDEPBACKSLASH@
    1433 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1434 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-parser.o `test -f 'Parser/parser.cc' || echo '$(srcdir)/'`Parser/parser.cc
    1435 
    1436 Parser/cfa_cpp-parser.obj: Parser/parser.cc
    1437 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-parser.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-parser.Tpo -c -o Parser/cfa_cpp-parser.obj `if test -f 'Parser/parser.cc'; then $(CYGPATH_W) 'Parser/parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parser.cc'; fi`
    1438 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-parser.Tpo Parser/$(DEPDIR)/cfa_cpp-parser.Po
    1439 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/parser.cc' object='Parser/cfa_cpp-parser.obj' libtool=no @AMDEPBACKSLASH@
    1440 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1441 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-parser.obj `if test -f 'Parser/parser.cc'; then $(CYGPATH_W) 'Parser/parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parser.cc'; fi`
    1442 
    1443 Parser/cfa_cpp-lex.o: Parser/lex.cc
    1444 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-lex.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-lex.Tpo -c -o Parser/cfa_cpp-lex.o `test -f 'Parser/lex.cc' || echo '$(srcdir)/'`Parser/lex.cc
    1445 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-lex.Tpo Parser/$(DEPDIR)/cfa_cpp-lex.Po
    1446 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/lex.cc' object='Parser/cfa_cpp-lex.o' libtool=no @AMDEPBACKSLASH@
    1447 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1448 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-lex.o `test -f 'Parser/lex.cc' || echo '$(srcdir)/'`Parser/lex.cc
    1449 
    1450 Parser/cfa_cpp-lex.obj: Parser/lex.cc
    1451 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-lex.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-lex.Tpo -c -o Parser/cfa_cpp-lex.obj `if test -f 'Parser/lex.cc'; then $(CYGPATH_W) 'Parser/lex.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/lex.cc'; fi`
    1452 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-lex.Tpo Parser/$(DEPDIR)/cfa_cpp-lex.Po
    1453 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/lex.cc' object='Parser/cfa_cpp-lex.obj' libtool=no @AMDEPBACKSLASH@
    1454 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1455 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-lex.obj `if test -f 'Parser/lex.cc'; then $(CYGPATH_W) 'Parser/lex.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/lex.cc'; fi`
    1456 
    1457 Parser/cfa_cpp-TypedefTable.o: Parser/TypedefTable.cc
    1458 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-TypedefTable.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Tpo -c -o Parser/cfa_cpp-TypedefTable.o `test -f 'Parser/TypedefTable.cc' || echo '$(srcdir)/'`Parser/TypedefTable.cc
    1459 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Po
    1460 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/TypedefTable.cc' object='Parser/cfa_cpp-TypedefTable.o' libtool=no @AMDEPBACKSLASH@
    1461 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1462 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-TypedefTable.o `test -f 'Parser/TypedefTable.cc' || echo '$(srcdir)/'`Parser/TypedefTable.cc
    1463 
    1464 Parser/cfa_cpp-TypedefTable.obj: Parser/TypedefTable.cc
    1465 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-TypedefTable.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Tpo -c -o Parser/cfa_cpp-TypedefTable.obj `if test -f 'Parser/TypedefTable.cc'; then $(CYGPATH_W) 'Parser/TypedefTable.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypedefTable.cc'; fi`
    1466 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/cfa_cpp-TypedefTable.Po
    1467 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/TypedefTable.cc' object='Parser/cfa_cpp-TypedefTable.obj' libtool=no @AMDEPBACKSLASH@
    1468 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1469 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-TypedefTable.obj `if test -f 'Parser/TypedefTable.cc'; then $(CYGPATH_W) 'Parser/TypedefTable.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypedefTable.cc'; fi`
    1470 
    1471 Parser/cfa_cpp-ParseNode.o: Parser/ParseNode.cc
    1472 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-ParseNode.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-ParseNode.Tpo -c -o Parser/cfa_cpp-ParseNode.o `test -f 'Parser/ParseNode.cc' || echo '$(srcdir)/'`Parser/ParseNode.cc
    1473 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/cfa_cpp-ParseNode.Po
    1474 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/ParseNode.cc' object='Parser/cfa_cpp-ParseNode.o' libtool=no @AMDEPBACKSLASH@
    1475 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1476 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-ParseNode.o `test -f 'Parser/ParseNode.cc' || echo '$(srcdir)/'`Parser/ParseNode.cc
    1477 
    1478 Parser/cfa_cpp-ParseNode.obj: Parser/ParseNode.cc
    1479 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-ParseNode.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-ParseNode.Tpo -c -o Parser/cfa_cpp-ParseNode.obj `if test -f 'Parser/ParseNode.cc'; then $(CYGPATH_W) 'Parser/ParseNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ParseNode.cc'; fi`
    1480 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/cfa_cpp-ParseNode.Po
    1481 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/ParseNode.cc' object='Parser/cfa_cpp-ParseNode.obj' libtool=no @AMDEPBACKSLASH@
    1482 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1483 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-ParseNode.obj `if test -f 'Parser/ParseNode.cc'; then $(CYGPATH_W) 'Parser/ParseNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ParseNode.cc'; fi`
    1484 
    1485 Parser/cfa_cpp-DeclarationNode.o: Parser/DeclarationNode.cc
    1486 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-DeclarationNode.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Tpo -c -o Parser/cfa_cpp-DeclarationNode.o `test -f 'Parser/DeclarationNode.cc' || echo '$(srcdir)/'`Parser/DeclarationNode.cc
    1487 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Po
    1488 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/DeclarationNode.cc' object='Parser/cfa_cpp-DeclarationNode.o' libtool=no @AMDEPBACKSLASH@
    1489 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1490 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-DeclarationNode.o `test -f 'Parser/DeclarationNode.cc' || echo '$(srcdir)/'`Parser/DeclarationNode.cc
    1491 
    1492 Parser/cfa_cpp-DeclarationNode.obj: Parser/DeclarationNode.cc
    1493 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-DeclarationNode.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Tpo -c -o Parser/cfa_cpp-DeclarationNode.obj `if test -f 'Parser/DeclarationNode.cc'; then $(CYGPATH_W) 'Parser/DeclarationNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/DeclarationNode.cc'; fi`
    1494 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/cfa_cpp-DeclarationNode.Po
    1495 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/DeclarationNode.cc' object='Parser/cfa_cpp-DeclarationNode.obj' libtool=no @AMDEPBACKSLASH@
    1496 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1497 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-DeclarationNode.obj `if test -f 'Parser/DeclarationNode.cc'; then $(CYGPATH_W) 'Parser/DeclarationNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/DeclarationNode.cc'; fi`
    1498 
    1499 Parser/cfa_cpp-ExpressionNode.o: Parser/ExpressionNode.cc
    1500 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-ExpressionNode.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Tpo -c -o Parser/cfa_cpp-ExpressionNode.o `test -f 'Parser/ExpressionNode.cc' || echo '$(srcdir)/'`Parser/ExpressionNode.cc
    1501 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Po
    1502 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/ExpressionNode.cc' object='Parser/cfa_cpp-ExpressionNode.o' libtool=no @AMDEPBACKSLASH@
    1503 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1504 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-ExpressionNode.o `test -f 'Parser/ExpressionNode.cc' || echo '$(srcdir)/'`Parser/ExpressionNode.cc
    1505 
    1506 Parser/cfa_cpp-ExpressionNode.obj: Parser/ExpressionNode.cc
    1507 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-ExpressionNode.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Tpo -c -o Parser/cfa_cpp-ExpressionNode.obj `if test -f 'Parser/ExpressionNode.cc'; then $(CYGPATH_W) 'Parser/ExpressionNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ExpressionNode.cc'; fi`
    1508 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/cfa_cpp-ExpressionNode.Po
    1509 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/ExpressionNode.cc' object='Parser/cfa_cpp-ExpressionNode.obj' libtool=no @AMDEPBACKSLASH@
    1510 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1511 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-ExpressionNode.obj `if test -f 'Parser/ExpressionNode.cc'; then $(CYGPATH_W) 'Parser/ExpressionNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/ExpressionNode.cc'; fi`
    1512 
    1513 Parser/cfa_cpp-StatementNode.o: Parser/StatementNode.cc
    1514 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-StatementNode.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-StatementNode.Tpo -c -o Parser/cfa_cpp-StatementNode.o `test -f 'Parser/StatementNode.cc' || echo '$(srcdir)/'`Parser/StatementNode.cc
    1515 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/cfa_cpp-StatementNode.Po
    1516 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/StatementNode.cc' object='Parser/cfa_cpp-StatementNode.o' libtool=no @AMDEPBACKSLASH@
    1517 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1518 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-StatementNode.o `test -f 'Parser/StatementNode.cc' || echo '$(srcdir)/'`Parser/StatementNode.cc
    1519 
    1520 Parser/cfa_cpp-StatementNode.obj: Parser/StatementNode.cc
    1521 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-StatementNode.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-StatementNode.Tpo -c -o Parser/cfa_cpp-StatementNode.obj `if test -f 'Parser/StatementNode.cc'; then $(CYGPATH_W) 'Parser/StatementNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/StatementNode.cc'; fi`
    1522 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/cfa_cpp-StatementNode.Po
    1523 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/StatementNode.cc' object='Parser/cfa_cpp-StatementNode.obj' libtool=no @AMDEPBACKSLASH@
    1524 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1525 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-StatementNode.obj `if test -f 'Parser/StatementNode.cc'; then $(CYGPATH_W) 'Parser/StatementNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/StatementNode.cc'; fi`
    1526 
    1527 Parser/cfa_cpp-InitializerNode.o: Parser/InitializerNode.cc
    1528 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-InitializerNode.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Tpo -c -o Parser/cfa_cpp-InitializerNode.o `test -f 'Parser/InitializerNode.cc' || echo '$(srcdir)/'`Parser/InitializerNode.cc
    1529 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Po
    1530 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/InitializerNode.cc' object='Parser/cfa_cpp-InitializerNode.o' libtool=no @AMDEPBACKSLASH@
    1531 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1532 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-InitializerNode.o `test -f 'Parser/InitializerNode.cc' || echo '$(srcdir)/'`Parser/InitializerNode.cc
    1533 
    1534 Parser/cfa_cpp-InitializerNode.obj: Parser/InitializerNode.cc
    1535 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-InitializerNode.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Tpo -c -o Parser/cfa_cpp-InitializerNode.obj `if test -f 'Parser/InitializerNode.cc'; then $(CYGPATH_W) 'Parser/InitializerNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/InitializerNode.cc'; fi`
    1536 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/cfa_cpp-InitializerNode.Po
    1537 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/InitializerNode.cc' object='Parser/cfa_cpp-InitializerNode.obj' libtool=no @AMDEPBACKSLASH@
    1538 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1539 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-InitializerNode.obj `if test -f 'Parser/InitializerNode.cc'; then $(CYGPATH_W) 'Parser/InitializerNode.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/InitializerNode.cc'; fi`
    1540 
    1541 Parser/cfa_cpp-TypeData.o: Parser/TypeData.cc
    1542 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-TypeData.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-TypeData.Tpo -c -o Parser/cfa_cpp-TypeData.o `test -f 'Parser/TypeData.cc' || echo '$(srcdir)/'`Parser/TypeData.cc
    1543 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/cfa_cpp-TypeData.Po
    1544 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/TypeData.cc' object='Parser/cfa_cpp-TypeData.o' libtool=no @AMDEPBACKSLASH@
    1545 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1546 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-TypeData.o `test -f 'Parser/TypeData.cc' || echo '$(srcdir)/'`Parser/TypeData.cc
    1547 
    1548 Parser/cfa_cpp-TypeData.obj: Parser/TypeData.cc
    1549 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-TypeData.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-TypeData.Tpo -c -o Parser/cfa_cpp-TypeData.obj `if test -f 'Parser/TypeData.cc'; then $(CYGPATH_W) 'Parser/TypeData.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypeData.cc'; fi`
    1550 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/cfa_cpp-TypeData.Po
    1551 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/TypeData.cc' object='Parser/cfa_cpp-TypeData.obj' libtool=no @AMDEPBACKSLASH@
    1552 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1553 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-TypeData.obj `if test -f 'Parser/TypeData.cc'; then $(CYGPATH_W) 'Parser/TypeData.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/TypeData.cc'; fi`
    1554 
    1555 Parser/cfa_cpp-LinkageSpec.o: Parser/LinkageSpec.cc
    1556 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-LinkageSpec.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Tpo -c -o Parser/cfa_cpp-LinkageSpec.o `test -f 'Parser/LinkageSpec.cc' || echo '$(srcdir)/'`Parser/LinkageSpec.cc
    1557 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Po
    1558 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/LinkageSpec.cc' object='Parser/cfa_cpp-LinkageSpec.o' libtool=no @AMDEPBACKSLASH@
    1559 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1560 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-LinkageSpec.o `test -f 'Parser/LinkageSpec.cc' || echo '$(srcdir)/'`Parser/LinkageSpec.cc
    1561 
    1562 Parser/cfa_cpp-LinkageSpec.obj: Parser/LinkageSpec.cc
    1563 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-LinkageSpec.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Tpo -c -o Parser/cfa_cpp-LinkageSpec.obj `if test -f 'Parser/LinkageSpec.cc'; then $(CYGPATH_W) 'Parser/LinkageSpec.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/LinkageSpec.cc'; fi`
    1564 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/cfa_cpp-LinkageSpec.Po
    1565 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/LinkageSpec.cc' object='Parser/cfa_cpp-LinkageSpec.obj' libtool=no @AMDEPBACKSLASH@
    1566 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1567 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-LinkageSpec.obj `if test -f 'Parser/LinkageSpec.cc'; then $(CYGPATH_W) 'Parser/LinkageSpec.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/LinkageSpec.cc'; fi`
    1568 
    1569 Parser/cfa_cpp-parseutility.o: Parser/parseutility.cc
    1570 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-parseutility.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-parseutility.Tpo -c -o Parser/cfa_cpp-parseutility.o `test -f 'Parser/parseutility.cc' || echo '$(srcdir)/'`Parser/parseutility.cc
    1571 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-parseutility.Tpo Parser/$(DEPDIR)/cfa_cpp-parseutility.Po
    1572 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/parseutility.cc' object='Parser/cfa_cpp-parseutility.o' libtool=no @AMDEPBACKSLASH@
    1573 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1574 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-parseutility.o `test -f 'Parser/parseutility.cc' || echo '$(srcdir)/'`Parser/parseutility.cc
    1575 
    1576 Parser/cfa_cpp-parseutility.obj: Parser/parseutility.cc
    1577 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-parseutility.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-parseutility.Tpo -c -o Parser/cfa_cpp-parseutility.obj `if test -f 'Parser/parseutility.cc'; then $(CYGPATH_W) 'Parser/parseutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parseutility.cc'; fi`
    1578 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-parseutility.Tpo Parser/$(DEPDIR)/cfa_cpp-parseutility.Po
    1579 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/parseutility.cc' object='Parser/cfa_cpp-parseutility.obj' libtool=no @AMDEPBACKSLASH@
    1580 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1581 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-parseutility.obj `if test -f 'Parser/parseutility.cc'; then $(CYGPATH_W) 'Parser/parseutility.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/parseutility.cc'; fi`
    1582 
    1583 Parser/cfa_cpp-Parser.o: Parser/Parser.cc
    1584 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-Parser.o -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-Parser.Tpo -c -o Parser/cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
    1585 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/cfa_cpp-Parser.Po
    1586 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/Parser.cc' object='Parser/cfa_cpp-Parser.o' libtool=no @AMDEPBACKSLASH@
    1587 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1588 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-Parser.o `test -f 'Parser/Parser.cc' || echo '$(srcdir)/'`Parser/Parser.cc
    1589 
    1590 Parser/cfa_cpp-Parser.obj: Parser/Parser.cc
    1591 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Parser/cfa_cpp-Parser.obj -MD -MP -MF Parser/$(DEPDIR)/cfa_cpp-Parser.Tpo -c -o Parser/cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
    1592 @am__fastdepCXX_TRUE@   $(am__mv) Parser/$(DEPDIR)/cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/cfa_cpp-Parser.Po
    1593 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Parser/Parser.cc' object='Parser/cfa_cpp-Parser.obj' libtool=no @AMDEPBACKSLASH@
    1594 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1595 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Parser/cfa_cpp-Parser.obj `if test -f 'Parser/Parser.cc'; then $(CYGPATH_W) 'Parser/Parser.cc'; else $(CYGPATH_W) '$(srcdir)/Parser/Parser.cc'; fi`
    1596 
    1597 ResolvExpr/cfa_cpp-AlternativeFinder.o: ResolvExpr/AlternativeFinder.cc
    1598 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AlternativeFinder.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Tpo -c -o ResolvExpr/cfa_cpp-AlternativeFinder.o `test -f 'ResolvExpr/AlternativeFinder.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativeFinder.cc
    1599 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Po
    1600 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/cfa_cpp-AlternativeFinder.o' libtool=no @AMDEPBACKSLASH@
    1601 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1602 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AlternativeFinder.o `test -f 'ResolvExpr/AlternativeFinder.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativeFinder.cc
    1603 
    1604 ResolvExpr/cfa_cpp-AlternativeFinder.obj: ResolvExpr/AlternativeFinder.cc
    1605 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AlternativeFinder.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Tpo -c -o ResolvExpr/cfa_cpp-AlternativeFinder.obj `if test -f 'ResolvExpr/AlternativeFinder.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativeFinder.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativeFinder.cc'; fi`
    1606 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativeFinder.Po
    1607 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/cfa_cpp-AlternativeFinder.obj' libtool=no @AMDEPBACKSLASH@
    1608 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1609 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AlternativeFinder.obj `if test -f 'ResolvExpr/AlternativeFinder.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativeFinder.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativeFinder.cc'; fi`
    1610 
    1611 ResolvExpr/cfa_cpp-Alternative.o: ResolvExpr/Alternative.cc
    1612 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Alternative.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Tpo -c -o ResolvExpr/cfa_cpp-Alternative.o `test -f 'ResolvExpr/Alternative.cc' || echo '$(srcdir)/'`ResolvExpr/Alternative.cc
    1613 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Po
    1614 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Alternative.cc' object='ResolvExpr/cfa_cpp-Alternative.o' libtool=no @AMDEPBACKSLASH@
    1615 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1616 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Alternative.o `test -f 'ResolvExpr/Alternative.cc' || echo '$(srcdir)/'`ResolvExpr/Alternative.cc
    1617 
    1618 ResolvExpr/cfa_cpp-Alternative.obj: ResolvExpr/Alternative.cc
    1619 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Alternative.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Tpo -c -o ResolvExpr/cfa_cpp-Alternative.obj `if test -f 'ResolvExpr/Alternative.cc'; then $(CYGPATH_W) 'ResolvExpr/Alternative.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Alternative.cc'; fi`
    1620 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Alternative.Po
    1621 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Alternative.cc' object='ResolvExpr/cfa_cpp-Alternative.obj' libtool=no @AMDEPBACKSLASH@
    1622 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1623 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Alternative.obj `if test -f 'ResolvExpr/Alternative.cc'; then $(CYGPATH_W) 'ResolvExpr/Alternative.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Alternative.cc'; fi`
    1624 
    1625 ResolvExpr/cfa_cpp-Unify.o: ResolvExpr/Unify.cc
    1626 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Unify.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Tpo -c -o ResolvExpr/cfa_cpp-Unify.o `test -f 'ResolvExpr/Unify.cc' || echo '$(srcdir)/'`ResolvExpr/Unify.cc
    1627 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Po
    1628 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Unify.cc' object='ResolvExpr/cfa_cpp-Unify.o' libtool=no @AMDEPBACKSLASH@
    1629 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1630 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Unify.o `test -f 'ResolvExpr/Unify.cc' || echo '$(srcdir)/'`ResolvExpr/Unify.cc
    1631 
    1632 ResolvExpr/cfa_cpp-Unify.obj: ResolvExpr/Unify.cc
    1633 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Unify.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Tpo -c -o ResolvExpr/cfa_cpp-Unify.obj `if test -f 'ResolvExpr/Unify.cc'; then $(CYGPATH_W) 'ResolvExpr/Unify.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Unify.cc'; fi`
    1634 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Unify.Po
    1635 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Unify.cc' object='ResolvExpr/cfa_cpp-Unify.obj' libtool=no @AMDEPBACKSLASH@
    1636 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1637 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Unify.obj `if test -f 'ResolvExpr/Unify.cc'; then $(CYGPATH_W) 'ResolvExpr/Unify.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Unify.cc'; fi`
    1638 
    1639 ResolvExpr/cfa_cpp-PtrsAssignable.o: ResolvExpr/PtrsAssignable.cc
    1640 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PtrsAssignable.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Tpo -c -o ResolvExpr/cfa_cpp-PtrsAssignable.o `test -f 'ResolvExpr/PtrsAssignable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsAssignable.cc
    1641 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Po
    1642 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/cfa_cpp-PtrsAssignable.o' libtool=no @AMDEPBACKSLASH@
    1643 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1644 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PtrsAssignable.o `test -f 'ResolvExpr/PtrsAssignable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsAssignable.cc
    1645 
    1646 ResolvExpr/cfa_cpp-PtrsAssignable.obj: ResolvExpr/PtrsAssignable.cc
    1647 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PtrsAssignable.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Tpo -c -o ResolvExpr/cfa_cpp-PtrsAssignable.obj `if test -f 'ResolvExpr/PtrsAssignable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsAssignable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsAssignable.cc'; fi`
    1648 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsAssignable.Po
    1649 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/cfa_cpp-PtrsAssignable.obj' libtool=no @AMDEPBACKSLASH@
    1650 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1651 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PtrsAssignable.obj `if test -f 'ResolvExpr/PtrsAssignable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsAssignable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsAssignable.cc'; fi`
    1652 
    1653 ResolvExpr/cfa_cpp-CommonType.o: ResolvExpr/CommonType.cc
    1654 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-CommonType.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Tpo -c -o ResolvExpr/cfa_cpp-CommonType.o `test -f 'ResolvExpr/CommonType.cc' || echo '$(srcdir)/'`ResolvExpr/CommonType.cc
    1655 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Po
    1656 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/CommonType.cc' object='ResolvExpr/cfa_cpp-CommonType.o' libtool=no @AMDEPBACKSLASH@
    1657 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1658 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-CommonType.o `test -f 'ResolvExpr/CommonType.cc' || echo '$(srcdir)/'`ResolvExpr/CommonType.cc
    1659 
    1660 ResolvExpr/cfa_cpp-CommonType.obj: ResolvExpr/CommonType.cc
    1661 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-CommonType.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Tpo -c -o ResolvExpr/cfa_cpp-CommonType.obj `if test -f 'ResolvExpr/CommonType.cc'; then $(CYGPATH_W) 'ResolvExpr/CommonType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CommonType.cc'; fi`
    1662 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-CommonType.Po
    1663 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/CommonType.cc' object='ResolvExpr/cfa_cpp-CommonType.obj' libtool=no @AMDEPBACKSLASH@
    1664 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1665 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-CommonType.obj `if test -f 'ResolvExpr/CommonType.cc'; then $(CYGPATH_W) 'ResolvExpr/CommonType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CommonType.cc'; fi`
    1666 
    1667 ResolvExpr/cfa_cpp-ConversionCost.o: ResolvExpr/ConversionCost.cc
    1668 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-ConversionCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Tpo -c -o ResolvExpr/cfa_cpp-ConversionCost.o `test -f 'ResolvExpr/ConversionCost.cc' || echo '$(srcdir)/'`ResolvExpr/ConversionCost.cc
    1669 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Po
    1670 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/cfa_cpp-ConversionCost.o' libtool=no @AMDEPBACKSLASH@
    1671 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1672 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-ConversionCost.o `test -f 'ResolvExpr/ConversionCost.cc' || echo '$(srcdir)/'`ResolvExpr/ConversionCost.cc
    1673 
    1674 ResolvExpr/cfa_cpp-ConversionCost.obj: ResolvExpr/ConversionCost.cc
    1675 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-ConversionCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Tpo -c -o ResolvExpr/cfa_cpp-ConversionCost.obj `if test -f 'ResolvExpr/ConversionCost.cc'; then $(CYGPATH_W) 'ResolvExpr/ConversionCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ConversionCost.cc'; fi`
    1676 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-ConversionCost.Po
    1677 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/cfa_cpp-ConversionCost.obj' libtool=no @AMDEPBACKSLASH@
    1678 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1679 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-ConversionCost.obj `if test -f 'ResolvExpr/ConversionCost.cc'; then $(CYGPATH_W) 'ResolvExpr/ConversionCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ConversionCost.cc'; fi`
    1680 
    1681 ResolvExpr/cfa_cpp-CastCost.o: ResolvExpr/CastCost.cc
    1682 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-CastCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Tpo -c -o ResolvExpr/cfa_cpp-CastCost.o `test -f 'ResolvExpr/CastCost.cc' || echo '$(srcdir)/'`ResolvExpr/CastCost.cc
    1683 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Po
    1684 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/CastCost.cc' object='ResolvExpr/cfa_cpp-CastCost.o' libtool=no @AMDEPBACKSLASH@
    1685 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1686 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-CastCost.o `test -f 'ResolvExpr/CastCost.cc' || echo '$(srcdir)/'`ResolvExpr/CastCost.cc
    1687 
    1688 ResolvExpr/cfa_cpp-CastCost.obj: ResolvExpr/CastCost.cc
    1689 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-CastCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Tpo -c -o ResolvExpr/cfa_cpp-CastCost.obj `if test -f 'ResolvExpr/CastCost.cc'; then $(CYGPATH_W) 'ResolvExpr/CastCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CastCost.cc'; fi`
    1690 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-CastCost.Po
    1691 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/CastCost.cc' object='ResolvExpr/cfa_cpp-CastCost.obj' libtool=no @AMDEPBACKSLASH@
    1692 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1693 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-CastCost.obj `if test -f 'ResolvExpr/CastCost.cc'; then $(CYGPATH_W) 'ResolvExpr/CastCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/CastCost.cc'; fi`
    1694 
    1695 ResolvExpr/cfa_cpp-PtrsCastable.o: ResolvExpr/PtrsCastable.cc
    1696 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PtrsCastable.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Tpo -c -o ResolvExpr/cfa_cpp-PtrsCastable.o `test -f 'ResolvExpr/PtrsCastable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsCastable.cc
    1697 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Po
    1698 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/cfa_cpp-PtrsCastable.o' libtool=no @AMDEPBACKSLASH@
    1699 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1700 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PtrsCastable.o `test -f 'ResolvExpr/PtrsCastable.cc' || echo '$(srcdir)/'`ResolvExpr/PtrsCastable.cc
    1701 
    1702 ResolvExpr/cfa_cpp-PtrsCastable.obj: ResolvExpr/PtrsCastable.cc
    1703 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PtrsCastable.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Tpo -c -o ResolvExpr/cfa_cpp-PtrsCastable.obj `if test -f 'ResolvExpr/PtrsCastable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsCastable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsCastable.cc'; fi`
    1704 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PtrsCastable.Po
    1705 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/cfa_cpp-PtrsCastable.obj' libtool=no @AMDEPBACKSLASH@
    1706 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1707 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PtrsCastable.obj `if test -f 'ResolvExpr/PtrsCastable.cc'; then $(CYGPATH_W) 'ResolvExpr/PtrsCastable.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PtrsCastable.cc'; fi`
    1708 
    1709 ResolvExpr/cfa_cpp-AdjustExprType.o: ResolvExpr/AdjustExprType.cc
    1710 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AdjustExprType.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Tpo -c -o ResolvExpr/cfa_cpp-AdjustExprType.o `test -f 'ResolvExpr/AdjustExprType.cc' || echo '$(srcdir)/'`ResolvExpr/AdjustExprType.cc
    1711 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Po
    1712 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/cfa_cpp-AdjustExprType.o' libtool=no @AMDEPBACKSLASH@
    1713 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1714 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AdjustExprType.o `test -f 'ResolvExpr/AdjustExprType.cc' || echo '$(srcdir)/'`ResolvExpr/AdjustExprType.cc
    1715 
    1716 ResolvExpr/cfa_cpp-AdjustExprType.obj: ResolvExpr/AdjustExprType.cc
    1717 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AdjustExprType.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Tpo -c -o ResolvExpr/cfa_cpp-AdjustExprType.obj `if test -f 'ResolvExpr/AdjustExprType.cc'; then $(CYGPATH_W) 'ResolvExpr/AdjustExprType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AdjustExprType.cc'; fi`
    1718 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AdjustExprType.Po
    1719 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/cfa_cpp-AdjustExprType.obj' libtool=no @AMDEPBACKSLASH@
    1720 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1721 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AdjustExprType.obj `if test -f 'ResolvExpr/AdjustExprType.cc'; then $(CYGPATH_W) 'ResolvExpr/AdjustExprType.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AdjustExprType.cc'; fi`
    1722 
    1723 ResolvExpr/cfa_cpp-AlternativePrinter.o: ResolvExpr/AlternativePrinter.cc
    1724 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AlternativePrinter.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Tpo -c -o ResolvExpr/cfa_cpp-AlternativePrinter.o `test -f 'ResolvExpr/AlternativePrinter.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativePrinter.cc
    1725 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Po
    1726 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/cfa_cpp-AlternativePrinter.o' libtool=no @AMDEPBACKSLASH@
    1727 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1728 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AlternativePrinter.o `test -f 'ResolvExpr/AlternativePrinter.cc' || echo '$(srcdir)/'`ResolvExpr/AlternativePrinter.cc
    1729 
    1730 ResolvExpr/cfa_cpp-AlternativePrinter.obj: ResolvExpr/AlternativePrinter.cc
    1731 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-AlternativePrinter.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Tpo -c -o ResolvExpr/cfa_cpp-AlternativePrinter.obj `if test -f 'ResolvExpr/AlternativePrinter.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativePrinter.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativePrinter.cc'; fi`
    1732 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-AlternativePrinter.Po
    1733 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/cfa_cpp-AlternativePrinter.obj' libtool=no @AMDEPBACKSLASH@
    1734 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1735 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-AlternativePrinter.obj `if test -f 'ResolvExpr/AlternativePrinter.cc'; then $(CYGPATH_W) 'ResolvExpr/AlternativePrinter.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/AlternativePrinter.cc'; fi`
    1736 
    1737 ResolvExpr/cfa_cpp-Resolver.o: ResolvExpr/Resolver.cc
    1738 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Resolver.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Tpo -c -o ResolvExpr/cfa_cpp-Resolver.o `test -f 'ResolvExpr/Resolver.cc' || echo '$(srcdir)/'`ResolvExpr/Resolver.cc
    1739 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Po
    1740 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Resolver.cc' object='ResolvExpr/cfa_cpp-Resolver.o' libtool=no @AMDEPBACKSLASH@
    1741 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1742 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Resolver.o `test -f 'ResolvExpr/Resolver.cc' || echo '$(srcdir)/'`ResolvExpr/Resolver.cc
    1743 
    1744 ResolvExpr/cfa_cpp-Resolver.obj: ResolvExpr/Resolver.cc
    1745 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Resolver.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Tpo -c -o ResolvExpr/cfa_cpp-Resolver.obj `if test -f 'ResolvExpr/Resolver.cc'; then $(CYGPATH_W) 'ResolvExpr/Resolver.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Resolver.cc'; fi`
    1746 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Resolver.Po
    1747 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Resolver.cc' object='ResolvExpr/cfa_cpp-Resolver.obj' libtool=no @AMDEPBACKSLASH@
    1748 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1749 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Resolver.obj `if test -f 'ResolvExpr/Resolver.cc'; then $(CYGPATH_W) 'ResolvExpr/Resolver.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Resolver.cc'; fi`
    1750 
    1751 ResolvExpr/cfa_cpp-ResolveTypeof.o: ResolvExpr/ResolveTypeof.cc
    1752 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-ResolveTypeof.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Tpo -c -o ResolvExpr/cfa_cpp-ResolveTypeof.o `test -f 'ResolvExpr/ResolveTypeof.cc' || echo '$(srcdir)/'`ResolvExpr/ResolveTypeof.cc
    1753 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Po
    1754 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/cfa_cpp-ResolveTypeof.o' libtool=no @AMDEPBACKSLASH@
    1755 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1756 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-ResolveTypeof.o `test -f 'ResolvExpr/ResolveTypeof.cc' || echo '$(srcdir)/'`ResolvExpr/ResolveTypeof.cc
    1757 
    1758 ResolvExpr/cfa_cpp-ResolveTypeof.obj: ResolvExpr/ResolveTypeof.cc
    1759 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-ResolveTypeof.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Tpo -c -o ResolvExpr/cfa_cpp-ResolveTypeof.obj `if test -f 'ResolvExpr/ResolveTypeof.cc'; then $(CYGPATH_W) 'ResolvExpr/ResolveTypeof.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ResolveTypeof.cc'; fi`
    1760 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-ResolveTypeof.Po
    1761 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/cfa_cpp-ResolveTypeof.obj' libtool=no @AMDEPBACKSLASH@
    1762 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1763 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-ResolveTypeof.obj `if test -f 'ResolvExpr/ResolveTypeof.cc'; then $(CYGPATH_W) 'ResolvExpr/ResolveTypeof.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/ResolveTypeof.cc'; fi`
    1764 
    1765 ResolvExpr/cfa_cpp-RenameVars.o: ResolvExpr/RenameVars.cc
    1766 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-RenameVars.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Tpo -c -o ResolvExpr/cfa_cpp-RenameVars.o `test -f 'ResolvExpr/RenameVars.cc' || echo '$(srcdir)/'`ResolvExpr/RenameVars.cc
    1767 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Po
    1768 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/RenameVars.cc' object='ResolvExpr/cfa_cpp-RenameVars.o' libtool=no @AMDEPBACKSLASH@
    1769 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1770 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-RenameVars.o `test -f 'ResolvExpr/RenameVars.cc' || echo '$(srcdir)/'`ResolvExpr/RenameVars.cc
    1771 
    1772 ResolvExpr/cfa_cpp-RenameVars.obj: ResolvExpr/RenameVars.cc
    1773 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-RenameVars.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Tpo -c -o ResolvExpr/cfa_cpp-RenameVars.obj `if test -f 'ResolvExpr/RenameVars.cc'; then $(CYGPATH_W) 'ResolvExpr/RenameVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/RenameVars.cc'; fi`
    1774 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-RenameVars.Po
    1775 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/RenameVars.cc' object='ResolvExpr/cfa_cpp-RenameVars.obj' libtool=no @AMDEPBACKSLASH@
    1776 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1777 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-RenameVars.obj `if test -f 'ResolvExpr/RenameVars.cc'; then $(CYGPATH_W) 'ResolvExpr/RenameVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/RenameVars.cc'; fi`
    1778 
    1779 ResolvExpr/cfa_cpp-FindOpenVars.o: ResolvExpr/FindOpenVars.cc
    1780 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-FindOpenVars.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Tpo -c -o ResolvExpr/cfa_cpp-FindOpenVars.o `test -f 'ResolvExpr/FindOpenVars.cc' || echo '$(srcdir)/'`ResolvExpr/FindOpenVars.cc
    1781 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Po
    1782 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/cfa_cpp-FindOpenVars.o' libtool=no @AMDEPBACKSLASH@
    1783 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1784 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-FindOpenVars.o `test -f 'ResolvExpr/FindOpenVars.cc' || echo '$(srcdir)/'`ResolvExpr/FindOpenVars.cc
    1785 
    1786 ResolvExpr/cfa_cpp-FindOpenVars.obj: ResolvExpr/FindOpenVars.cc
    1787 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-FindOpenVars.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Tpo -c -o ResolvExpr/cfa_cpp-FindOpenVars.obj `if test -f 'ResolvExpr/FindOpenVars.cc'; then $(CYGPATH_W) 'ResolvExpr/FindOpenVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/FindOpenVars.cc'; fi`
    1788 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-FindOpenVars.Po
    1789 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/cfa_cpp-FindOpenVars.obj' libtool=no @AMDEPBACKSLASH@
    1790 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1791 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-FindOpenVars.obj `if test -f 'ResolvExpr/FindOpenVars.cc'; then $(CYGPATH_W) 'ResolvExpr/FindOpenVars.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/FindOpenVars.cc'; fi`
    1792 
    1793 ResolvExpr/cfa_cpp-PolyCost.o: ResolvExpr/PolyCost.cc
    1794 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PolyCost.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Tpo -c -o ResolvExpr/cfa_cpp-PolyCost.o `test -f 'ResolvExpr/PolyCost.cc' || echo '$(srcdir)/'`ResolvExpr/PolyCost.cc
    1795 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Po
    1796 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PolyCost.cc' object='ResolvExpr/cfa_cpp-PolyCost.o' libtool=no @AMDEPBACKSLASH@
    1797 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1798 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PolyCost.o `test -f 'ResolvExpr/PolyCost.cc' || echo '$(srcdir)/'`ResolvExpr/PolyCost.cc
    1799 
    1800 ResolvExpr/cfa_cpp-PolyCost.obj: ResolvExpr/PolyCost.cc
    1801 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-PolyCost.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Tpo -c -o ResolvExpr/cfa_cpp-PolyCost.obj `if test -f 'ResolvExpr/PolyCost.cc'; then $(CYGPATH_W) 'ResolvExpr/PolyCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PolyCost.cc'; fi`
    1802 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-PolyCost.Po
    1803 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/PolyCost.cc' object='ResolvExpr/cfa_cpp-PolyCost.obj' libtool=no @AMDEPBACKSLASH@
    1804 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1805 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-PolyCost.obj `if test -f 'ResolvExpr/PolyCost.cc'; then $(CYGPATH_W) 'ResolvExpr/PolyCost.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/PolyCost.cc'; fi`
    1806 
    1807 ResolvExpr/cfa_cpp-Occurs.o: ResolvExpr/Occurs.cc
    1808 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Occurs.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Tpo -c -o ResolvExpr/cfa_cpp-Occurs.o `test -f 'ResolvExpr/Occurs.cc' || echo '$(srcdir)/'`ResolvExpr/Occurs.cc
    1809 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Po
    1810 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Occurs.cc' object='ResolvExpr/cfa_cpp-Occurs.o' libtool=no @AMDEPBACKSLASH@
    1811 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1812 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Occurs.o `test -f 'ResolvExpr/Occurs.cc' || echo '$(srcdir)/'`ResolvExpr/Occurs.cc
    1813 
    1814 ResolvExpr/cfa_cpp-Occurs.obj: ResolvExpr/Occurs.cc
    1815 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-Occurs.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Tpo -c -o ResolvExpr/cfa_cpp-Occurs.obj `if test -f 'ResolvExpr/Occurs.cc'; then $(CYGPATH_W) 'ResolvExpr/Occurs.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Occurs.cc'; fi`
    1816 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-Occurs.Po
    1817 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/Occurs.cc' object='ResolvExpr/cfa_cpp-Occurs.obj' libtool=no @AMDEPBACKSLASH@
    1818 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1819 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-Occurs.obj `if test -f 'ResolvExpr/Occurs.cc'; then $(CYGPATH_W) 'ResolvExpr/Occurs.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/Occurs.cc'; fi`
    1820 
    1821 ResolvExpr/cfa_cpp-TypeEnvironment.o: ResolvExpr/TypeEnvironment.cc
    1822 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-TypeEnvironment.o -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Tpo -c -o ResolvExpr/cfa_cpp-TypeEnvironment.o `test -f 'ResolvExpr/TypeEnvironment.cc' || echo '$(srcdir)/'`ResolvExpr/TypeEnvironment.cc
    1823 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Po
    1824 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/cfa_cpp-TypeEnvironment.o' libtool=no @AMDEPBACKSLASH@
    1825 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1826 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-TypeEnvironment.o `test -f 'ResolvExpr/TypeEnvironment.cc' || echo '$(srcdir)/'`ResolvExpr/TypeEnvironment.cc
    1827 
    1828 ResolvExpr/cfa_cpp-TypeEnvironment.obj: ResolvExpr/TypeEnvironment.cc
    1829 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT ResolvExpr/cfa_cpp-TypeEnvironment.obj -MD -MP -MF ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Tpo -c -o ResolvExpr/cfa_cpp-TypeEnvironment.obj `if test -f 'ResolvExpr/TypeEnvironment.cc'; then $(CYGPATH_W) 'ResolvExpr/TypeEnvironment.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/TypeEnvironment.cc'; fi`
    1830 @am__fastdepCXX_TRUE@   $(am__mv) ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/cfa_cpp-TypeEnvironment.Po
    1831 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/cfa_cpp-TypeEnvironment.obj' libtool=no @AMDEPBACKSLASH@
    1832 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1833 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o ResolvExpr/cfa_cpp-TypeEnvironment.obj `if test -f 'ResolvExpr/TypeEnvironment.cc'; then $(CYGPATH_W) 'ResolvExpr/TypeEnvironment.cc'; else $(CYGPATH_W) '$(srcdir)/ResolvExpr/TypeEnvironment.cc'; fi`
    1834 
    1835 SymTab/cfa_cpp-IdTable.o: SymTab/IdTable.cc
    1836 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-IdTable.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-IdTable.Tpo -c -o SymTab/cfa_cpp-IdTable.o `test -f 'SymTab/IdTable.cc' || echo '$(srcdir)/'`SymTab/IdTable.cc
    1837 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-IdTable.Tpo SymTab/$(DEPDIR)/cfa_cpp-IdTable.Po
    1838 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/IdTable.cc' object='SymTab/cfa_cpp-IdTable.o' libtool=no @AMDEPBACKSLASH@
    1839 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1840 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-IdTable.o `test -f 'SymTab/IdTable.cc' || echo '$(srcdir)/'`SymTab/IdTable.cc
    1841 
    1842 SymTab/cfa_cpp-IdTable.obj: SymTab/IdTable.cc
    1843 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-IdTable.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-IdTable.Tpo -c -o SymTab/cfa_cpp-IdTable.obj `if test -f 'SymTab/IdTable.cc'; then $(CYGPATH_W) 'SymTab/IdTable.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/IdTable.cc'; fi`
    1844 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-IdTable.Tpo SymTab/$(DEPDIR)/cfa_cpp-IdTable.Po
    1845 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/IdTable.cc' object='SymTab/cfa_cpp-IdTable.obj' libtool=no @AMDEPBACKSLASH@
    1846 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1847 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-IdTable.obj `if test -f 'SymTab/IdTable.cc'; then $(CYGPATH_W) 'SymTab/IdTable.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/IdTable.cc'; fi`
    1848 
    1849 SymTab/cfa_cpp-Indexer.o: SymTab/Indexer.cc
    1850 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Indexer.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Indexer.Tpo -c -o SymTab/cfa_cpp-Indexer.o `test -f 'SymTab/Indexer.cc' || echo '$(srcdir)/'`SymTab/Indexer.cc
    1851 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/cfa_cpp-Indexer.Po
    1852 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Indexer.cc' object='SymTab/cfa_cpp-Indexer.o' libtool=no @AMDEPBACKSLASH@
    1853 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1854 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Indexer.o `test -f 'SymTab/Indexer.cc' || echo '$(srcdir)/'`SymTab/Indexer.cc
    1855 
    1856 SymTab/cfa_cpp-Indexer.obj: SymTab/Indexer.cc
    1857 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Indexer.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Indexer.Tpo -c -o SymTab/cfa_cpp-Indexer.obj `if test -f 'SymTab/Indexer.cc'; then $(CYGPATH_W) 'SymTab/Indexer.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Indexer.cc'; fi`
    1858 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/cfa_cpp-Indexer.Po
    1859 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Indexer.cc' object='SymTab/cfa_cpp-Indexer.obj' libtool=no @AMDEPBACKSLASH@
    1860 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1861 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Indexer.obj `if test -f 'SymTab/Indexer.cc'; then $(CYGPATH_W) 'SymTab/Indexer.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Indexer.cc'; fi`
    1862 
    1863 SymTab/cfa_cpp-Mangler.o: SymTab/Mangler.cc
    1864 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Mangler.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Mangler.Tpo -c -o SymTab/cfa_cpp-Mangler.o `test -f 'SymTab/Mangler.cc' || echo '$(srcdir)/'`SymTab/Mangler.cc
    1865 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/cfa_cpp-Mangler.Po
    1866 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Mangler.cc' object='SymTab/cfa_cpp-Mangler.o' libtool=no @AMDEPBACKSLASH@
    1867 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1868 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Mangler.o `test -f 'SymTab/Mangler.cc' || echo '$(srcdir)/'`SymTab/Mangler.cc
    1869 
    1870 SymTab/cfa_cpp-Mangler.obj: SymTab/Mangler.cc
    1871 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Mangler.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Mangler.Tpo -c -o SymTab/cfa_cpp-Mangler.obj `if test -f 'SymTab/Mangler.cc'; then $(CYGPATH_W) 'SymTab/Mangler.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Mangler.cc'; fi`
    1872 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/cfa_cpp-Mangler.Po
    1873 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Mangler.cc' object='SymTab/cfa_cpp-Mangler.obj' libtool=no @AMDEPBACKSLASH@
    1874 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1875 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Mangler.obj `if test -f 'SymTab/Mangler.cc'; then $(CYGPATH_W) 'SymTab/Mangler.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Mangler.cc'; fi`
    1876 
    1877 SymTab/cfa_cpp-Validate.o: SymTab/Validate.cc
    1878 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Validate.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Validate.Tpo -c -o SymTab/cfa_cpp-Validate.o `test -f 'SymTab/Validate.cc' || echo '$(srcdir)/'`SymTab/Validate.cc
    1879 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/cfa_cpp-Validate.Po
    1880 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Validate.cc' object='SymTab/cfa_cpp-Validate.o' libtool=no @AMDEPBACKSLASH@
    1881 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1882 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Validate.o `test -f 'SymTab/Validate.cc' || echo '$(srcdir)/'`SymTab/Validate.cc
    1883 
    1884 SymTab/cfa_cpp-Validate.obj: SymTab/Validate.cc
    1885 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-Validate.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-Validate.Tpo -c -o SymTab/cfa_cpp-Validate.obj `if test -f 'SymTab/Validate.cc'; then $(CYGPATH_W) 'SymTab/Validate.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Validate.cc'; fi`
    1886 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/cfa_cpp-Validate.Po
    1887 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/Validate.cc' object='SymTab/cfa_cpp-Validate.obj' libtool=no @AMDEPBACKSLASH@
    1888 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1889 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-Validate.obj `if test -f 'SymTab/Validate.cc'; then $(CYGPATH_W) 'SymTab/Validate.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/Validate.cc'; fi`
    1890 
    1891 SymTab/cfa_cpp-FixFunction.o: SymTab/FixFunction.cc
    1892 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-FixFunction.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Tpo -c -o SymTab/cfa_cpp-FixFunction.o `test -f 'SymTab/FixFunction.cc' || echo '$(srcdir)/'`SymTab/FixFunction.cc
    1893 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Po
    1894 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/FixFunction.cc' object='SymTab/cfa_cpp-FixFunction.o' libtool=no @AMDEPBACKSLASH@
    1895 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1896 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-FixFunction.o `test -f 'SymTab/FixFunction.cc' || echo '$(srcdir)/'`SymTab/FixFunction.cc
    1897 
    1898 SymTab/cfa_cpp-FixFunction.obj: SymTab/FixFunction.cc
    1899 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-FixFunction.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Tpo -c -o SymTab/cfa_cpp-FixFunction.obj `if test -f 'SymTab/FixFunction.cc'; then $(CYGPATH_W) 'SymTab/FixFunction.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/FixFunction.cc'; fi`
    1900 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/cfa_cpp-FixFunction.Po
    1901 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/FixFunction.cc' object='SymTab/cfa_cpp-FixFunction.obj' libtool=no @AMDEPBACKSLASH@
    1902 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1903 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-FixFunction.obj `if test -f 'SymTab/FixFunction.cc'; then $(CYGPATH_W) 'SymTab/FixFunction.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/FixFunction.cc'; fi`
    1904 
    1905 SymTab/cfa_cpp-ImplementationType.o: SymTab/ImplementationType.cc
    1906 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-ImplementationType.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Tpo -c -o SymTab/cfa_cpp-ImplementationType.o `test -f 'SymTab/ImplementationType.cc' || echo '$(srcdir)/'`SymTab/ImplementationType.cc
    1907 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Tpo SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Po
    1908 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/ImplementationType.cc' object='SymTab/cfa_cpp-ImplementationType.o' libtool=no @AMDEPBACKSLASH@
    1909 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1910 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-ImplementationType.o `test -f 'SymTab/ImplementationType.cc' || echo '$(srcdir)/'`SymTab/ImplementationType.cc
    1911 
    1912 SymTab/cfa_cpp-ImplementationType.obj: SymTab/ImplementationType.cc
    1913 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-ImplementationType.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Tpo -c -o SymTab/cfa_cpp-ImplementationType.obj `if test -f 'SymTab/ImplementationType.cc'; then $(CYGPATH_W) 'SymTab/ImplementationType.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/ImplementationType.cc'; fi`
    1914 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Tpo SymTab/$(DEPDIR)/cfa_cpp-ImplementationType.Po
    1915 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/ImplementationType.cc' object='SymTab/cfa_cpp-ImplementationType.obj' libtool=no @AMDEPBACKSLASH@
    1916 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1917 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-ImplementationType.obj `if test -f 'SymTab/ImplementationType.cc'; then $(CYGPATH_W) 'SymTab/ImplementationType.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/ImplementationType.cc'; fi`
    1918 
    1919 SymTab/cfa_cpp-TypeEquality.o: SymTab/TypeEquality.cc
    1920 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-TypeEquality.o -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-TypeEquality.Tpo -c -o SymTab/cfa_cpp-TypeEquality.o `test -f 'SymTab/TypeEquality.cc' || echo '$(srcdir)/'`SymTab/TypeEquality.cc
    1921 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-TypeEquality.Tpo SymTab/$(DEPDIR)/cfa_cpp-TypeEquality.Po
    1922 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/TypeEquality.cc' object='SymTab/cfa_cpp-TypeEquality.o' libtool=no @AMDEPBACKSLASH@
    1923 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1924 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-TypeEquality.o `test -f 'SymTab/TypeEquality.cc' || echo '$(srcdir)/'`SymTab/TypeEquality.cc
    1925 
    1926 SymTab/cfa_cpp-TypeEquality.obj: SymTab/TypeEquality.cc
    1927 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SymTab/cfa_cpp-TypeEquality.obj -MD -MP -MF SymTab/$(DEPDIR)/cfa_cpp-TypeEquality.Tpo -c -o SymTab/cfa_cpp-TypeEquality.obj `if test -f 'SymTab/TypeEquality.cc'; then $(CYGPATH_W) 'SymTab/TypeEquality.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/TypeEquality.cc'; fi`
    1928 @am__fastdepCXX_TRUE@   $(am__mv) SymTab/$(DEPDIR)/cfa_cpp-TypeEquality.Tpo SymTab/$(DEPDIR)/cfa_cpp-TypeEquality.Po
    1929 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SymTab/TypeEquality.cc' object='SymTab/cfa_cpp-TypeEquality.obj' libtool=no @AMDEPBACKSLASH@
    1930 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1931 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SymTab/cfa_cpp-TypeEquality.obj `if test -f 'SymTab/TypeEquality.cc'; then $(CYGPATH_W) 'SymTab/TypeEquality.cc'; else $(CYGPATH_W) '$(srcdir)/SymTab/TypeEquality.cc'; fi`
    1932 
    1933 SynTree/cfa_cpp-Type.o: SynTree/Type.cc
    1934 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Type.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Type.Tpo -c -o SynTree/cfa_cpp-Type.o `test -f 'SynTree/Type.cc' || echo '$(srcdir)/'`SynTree/Type.cc
    1935 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/cfa_cpp-Type.Po
    1936 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Type.cc' object='SynTree/cfa_cpp-Type.o' libtool=no @AMDEPBACKSLASH@
    1937 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1938 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Type.o `test -f 'SynTree/Type.cc' || echo '$(srcdir)/'`SynTree/Type.cc
    1939 
    1940 SynTree/cfa_cpp-Type.obj: SynTree/Type.cc
    1941 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Type.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Type.Tpo -c -o SynTree/cfa_cpp-Type.obj `if test -f 'SynTree/Type.cc'; then $(CYGPATH_W) 'SynTree/Type.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Type.cc'; fi`
    1942 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/cfa_cpp-Type.Po
    1943 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Type.cc' object='SynTree/cfa_cpp-Type.obj' libtool=no @AMDEPBACKSLASH@
    1944 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1945 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Type.obj `if test -f 'SynTree/Type.cc'; then $(CYGPATH_W) 'SynTree/Type.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Type.cc'; fi`
    1946 
    1947 SynTree/cfa_cpp-VoidType.o: SynTree/VoidType.cc
    1948 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-VoidType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-VoidType.Tpo -c -o SynTree/cfa_cpp-VoidType.o `test -f 'SynTree/VoidType.cc' || echo '$(srcdir)/'`SynTree/VoidType.cc
    1949 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/cfa_cpp-VoidType.Po
    1950 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/VoidType.cc' object='SynTree/cfa_cpp-VoidType.o' libtool=no @AMDEPBACKSLASH@
    1951 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1952 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-VoidType.o `test -f 'SynTree/VoidType.cc' || echo '$(srcdir)/'`SynTree/VoidType.cc
    1953 
    1954 SynTree/cfa_cpp-VoidType.obj: SynTree/VoidType.cc
    1955 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-VoidType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-VoidType.Tpo -c -o SynTree/cfa_cpp-VoidType.obj `if test -f 'SynTree/VoidType.cc'; then $(CYGPATH_W) 'SynTree/VoidType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VoidType.cc'; fi`
    1956 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/cfa_cpp-VoidType.Po
    1957 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/VoidType.cc' object='SynTree/cfa_cpp-VoidType.obj' libtool=no @AMDEPBACKSLASH@
    1958 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1959 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-VoidType.obj `if test -f 'SynTree/VoidType.cc'; then $(CYGPATH_W) 'SynTree/VoidType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/VoidType.cc'; fi`
    1960 
    1961 SynTree/cfa_cpp-BasicType.o: SynTree/BasicType.cc
    1962 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-BasicType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-BasicType.Tpo -c -o SynTree/cfa_cpp-BasicType.o `test -f 'SynTree/BasicType.cc' || echo '$(srcdir)/'`SynTree/BasicType.cc
    1963 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/cfa_cpp-BasicType.Po
    1964 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/BasicType.cc' object='SynTree/cfa_cpp-BasicType.o' libtool=no @AMDEPBACKSLASH@
    1965 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1966 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-BasicType.o `test -f 'SynTree/BasicType.cc' || echo '$(srcdir)/'`SynTree/BasicType.cc
    1967 
    1968 SynTree/cfa_cpp-BasicType.obj: SynTree/BasicType.cc
    1969 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-BasicType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-BasicType.Tpo -c -o SynTree/cfa_cpp-BasicType.obj `if test -f 'SynTree/BasicType.cc'; then $(CYGPATH_W) 'SynTree/BasicType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/BasicType.cc'; fi`
    1970 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/cfa_cpp-BasicType.Po
    1971 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/BasicType.cc' object='SynTree/cfa_cpp-BasicType.obj' libtool=no @AMDEPBACKSLASH@
    1972 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1973 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-BasicType.obj `if test -f 'SynTree/BasicType.cc'; then $(CYGPATH_W) 'SynTree/BasicType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/BasicType.cc'; fi`
    1974 
    1975 SynTree/cfa_cpp-PointerType.o: SynTree/PointerType.cc
    1976 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-PointerType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-PointerType.Tpo -c -o SynTree/cfa_cpp-PointerType.o `test -f 'SynTree/PointerType.cc' || echo '$(srcdir)/'`SynTree/PointerType.cc
    1977 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/cfa_cpp-PointerType.Po
    1978 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/PointerType.cc' object='SynTree/cfa_cpp-PointerType.o' libtool=no @AMDEPBACKSLASH@
    1979 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1980 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-PointerType.o `test -f 'SynTree/PointerType.cc' || echo '$(srcdir)/'`SynTree/PointerType.cc
    1981 
    1982 SynTree/cfa_cpp-PointerType.obj: SynTree/PointerType.cc
    1983 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-PointerType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-PointerType.Tpo -c -o SynTree/cfa_cpp-PointerType.obj `if test -f 'SynTree/PointerType.cc'; then $(CYGPATH_W) 'SynTree/PointerType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/PointerType.cc'; fi`
    1984 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/cfa_cpp-PointerType.Po
    1985 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/PointerType.cc' object='SynTree/cfa_cpp-PointerType.obj' libtool=no @AMDEPBACKSLASH@
    1986 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1987 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-PointerType.obj `if test -f 'SynTree/PointerType.cc'; then $(CYGPATH_W) 'SynTree/PointerType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/PointerType.cc'; fi`
    1988 
    1989 SynTree/cfa_cpp-ArrayType.o: SynTree/ArrayType.cc
    1990 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ArrayType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Tpo -c -o SynTree/cfa_cpp-ArrayType.o `test -f 'SynTree/ArrayType.cc' || echo '$(srcdir)/'`SynTree/ArrayType.cc
    1991 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Po
    1992 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ArrayType.cc' object='SynTree/cfa_cpp-ArrayType.o' libtool=no @AMDEPBACKSLASH@
    1993 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    1994 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ArrayType.o `test -f 'SynTree/ArrayType.cc' || echo '$(srcdir)/'`SynTree/ArrayType.cc
    1995 
    1996 SynTree/cfa_cpp-ArrayType.obj: SynTree/ArrayType.cc
    1997 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ArrayType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Tpo -c -o SynTree/cfa_cpp-ArrayType.obj `if test -f 'SynTree/ArrayType.cc'; then $(CYGPATH_W) 'SynTree/ArrayType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ArrayType.cc'; fi`
    1998 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/cfa_cpp-ArrayType.Po
    1999 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ArrayType.cc' object='SynTree/cfa_cpp-ArrayType.obj' libtool=no @AMDEPBACKSLASH@
    2000 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2001 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ArrayType.obj `if test -f 'SynTree/ArrayType.cc'; then $(CYGPATH_W) 'SynTree/ArrayType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ArrayType.cc'; fi`
    2002 
    2003 SynTree/cfa_cpp-FunctionType.o: SynTree/FunctionType.cc
    2004 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-FunctionType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Tpo -c -o SynTree/cfa_cpp-FunctionType.o `test -f 'SynTree/FunctionType.cc' || echo '$(srcdir)/'`SynTree/FunctionType.cc
    2005 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Po
    2006 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/FunctionType.cc' object='SynTree/cfa_cpp-FunctionType.o' libtool=no @AMDEPBACKSLASH@
    2007 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2008 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-FunctionType.o `test -f 'SynTree/FunctionType.cc' || echo '$(srcdir)/'`SynTree/FunctionType.cc
    2009 
    2010 SynTree/cfa_cpp-FunctionType.obj: SynTree/FunctionType.cc
    2011 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-FunctionType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Tpo -c -o SynTree/cfa_cpp-FunctionType.obj `if test -f 'SynTree/FunctionType.cc'; then $(CYGPATH_W) 'SynTree/FunctionType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionType.cc'; fi`
    2012 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/cfa_cpp-FunctionType.Po
    2013 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/FunctionType.cc' object='SynTree/cfa_cpp-FunctionType.obj' libtool=no @AMDEPBACKSLASH@
    2014 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2015 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-FunctionType.obj `if test -f 'SynTree/FunctionType.cc'; then $(CYGPATH_W) 'SynTree/FunctionType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionType.cc'; fi`
    2016 
    2017 SynTree/cfa_cpp-ReferenceToType.o: SynTree/ReferenceToType.cc
    2018 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ReferenceToType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Tpo -c -o SynTree/cfa_cpp-ReferenceToType.o `test -f 'SynTree/ReferenceToType.cc' || echo '$(srcdir)/'`SynTree/ReferenceToType.cc
    2019 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Po
    2020 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ReferenceToType.cc' object='SynTree/cfa_cpp-ReferenceToType.o' libtool=no @AMDEPBACKSLASH@
    2021 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2022 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ReferenceToType.o `test -f 'SynTree/ReferenceToType.cc' || echo '$(srcdir)/'`SynTree/ReferenceToType.cc
    2023 
    2024 SynTree/cfa_cpp-ReferenceToType.obj: SynTree/ReferenceToType.cc
    2025 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ReferenceToType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Tpo -c -o SynTree/cfa_cpp-ReferenceToType.obj `if test -f 'SynTree/ReferenceToType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceToType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceToType.cc'; fi`
    2026 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/cfa_cpp-ReferenceToType.Po
    2027 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ReferenceToType.cc' object='SynTree/cfa_cpp-ReferenceToType.obj' libtool=no @AMDEPBACKSLASH@
    2028 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2029 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ReferenceToType.obj `if test -f 'SynTree/ReferenceToType.cc'; then $(CYGPATH_W) 'SynTree/ReferenceToType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ReferenceToType.cc'; fi`
    2030 
    2031 SynTree/cfa_cpp-TupleType.o: SynTree/TupleType.cc
    2032 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TupleType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TupleType.Tpo -c -o SynTree/cfa_cpp-TupleType.o `test -f 'SynTree/TupleType.cc' || echo '$(srcdir)/'`SynTree/TupleType.cc
    2033 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/cfa_cpp-TupleType.Po
    2034 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TupleType.cc' object='SynTree/cfa_cpp-TupleType.o' libtool=no @AMDEPBACKSLASH@
    2035 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2036 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TupleType.o `test -f 'SynTree/TupleType.cc' || echo '$(srcdir)/'`SynTree/TupleType.cc
    2037 
    2038 SynTree/cfa_cpp-TupleType.obj: SynTree/TupleType.cc
    2039 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TupleType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TupleType.Tpo -c -o SynTree/cfa_cpp-TupleType.obj `if test -f 'SynTree/TupleType.cc'; then $(CYGPATH_W) 'SynTree/TupleType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleType.cc'; fi`
    2040 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/cfa_cpp-TupleType.Po
    2041 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TupleType.cc' object='SynTree/cfa_cpp-TupleType.obj' libtool=no @AMDEPBACKSLASH@
    2042 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2043 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TupleType.obj `if test -f 'SynTree/TupleType.cc'; then $(CYGPATH_W) 'SynTree/TupleType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleType.cc'; fi`
    2044 
    2045 SynTree/cfa_cpp-TypeofType.o: SynTree/TypeofType.cc
    2046 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeofType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Tpo -c -o SynTree/cfa_cpp-TypeofType.o `test -f 'SynTree/TypeofType.cc' || echo '$(srcdir)/'`SynTree/TypeofType.cc
    2047 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Po
    2048 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeofType.cc' object='SynTree/cfa_cpp-TypeofType.o' libtool=no @AMDEPBACKSLASH@
    2049 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2050 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeofType.o `test -f 'SynTree/TypeofType.cc' || echo '$(srcdir)/'`SynTree/TypeofType.cc
    2051 
    2052 SynTree/cfa_cpp-TypeofType.obj: SynTree/TypeofType.cc
    2053 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeofType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Tpo -c -o SynTree/cfa_cpp-TypeofType.obj `if test -f 'SynTree/TypeofType.cc'; then $(CYGPATH_W) 'SynTree/TypeofType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeofType.cc'; fi`
    2054 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeofType.Po
    2055 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeofType.cc' object='SynTree/cfa_cpp-TypeofType.obj' libtool=no @AMDEPBACKSLASH@
    2056 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2057 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeofType.obj `if test -f 'SynTree/TypeofType.cc'; then $(CYGPATH_W) 'SynTree/TypeofType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeofType.cc'; fi`
    2058 
    2059 SynTree/cfa_cpp-AttrType.o: SynTree/AttrType.cc
    2060 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AttrType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AttrType.Tpo -c -o SynTree/cfa_cpp-AttrType.o `test -f 'SynTree/AttrType.cc' || echo '$(srcdir)/'`SynTree/AttrType.cc
    2061 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/cfa_cpp-AttrType.Po
    2062 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AttrType.cc' object='SynTree/cfa_cpp-AttrType.o' libtool=no @AMDEPBACKSLASH@
    2063 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2064 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AttrType.o `test -f 'SynTree/AttrType.cc' || echo '$(srcdir)/'`SynTree/AttrType.cc
    2065 
    2066 SynTree/cfa_cpp-AttrType.obj: SynTree/AttrType.cc
    2067 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AttrType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AttrType.Tpo -c -o SynTree/cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi`
    2068 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/cfa_cpp-AttrType.Po
    2069 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AttrType.cc' object='SynTree/cfa_cpp-AttrType.obj' libtool=no @AMDEPBACKSLASH@
    2070 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2071 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AttrType.obj `if test -f 'SynTree/AttrType.cc'; then $(CYGPATH_W) 'SynTree/AttrType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AttrType.cc'; fi`
    2072 
    2073 SynTree/cfa_cpp-Constant.o: SynTree/Constant.cc
    2074 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Constant.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Constant.Tpo -c -o SynTree/cfa_cpp-Constant.o `test -f 'SynTree/Constant.cc' || echo '$(srcdir)/'`SynTree/Constant.cc
    2075 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/cfa_cpp-Constant.Po
    2076 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Constant.cc' object='SynTree/cfa_cpp-Constant.o' libtool=no @AMDEPBACKSLASH@
    2077 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2078 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Constant.o `test -f 'SynTree/Constant.cc' || echo '$(srcdir)/'`SynTree/Constant.cc
    2079 
    2080 SynTree/cfa_cpp-Constant.obj: SynTree/Constant.cc
    2081 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Constant.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Constant.Tpo -c -o SynTree/cfa_cpp-Constant.obj `if test -f 'SynTree/Constant.cc'; then $(CYGPATH_W) 'SynTree/Constant.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Constant.cc'; fi`
    2082 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/cfa_cpp-Constant.Po
    2083 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Constant.cc' object='SynTree/cfa_cpp-Constant.obj' libtool=no @AMDEPBACKSLASH@
    2084 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2085 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Constant.obj `if test -f 'SynTree/Constant.cc'; then $(CYGPATH_W) 'SynTree/Constant.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Constant.cc'; fi`
    2086 
    2087 SynTree/cfa_cpp-Expression.o: SynTree/Expression.cc
    2088 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Expression.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Expression.Tpo -c -o SynTree/cfa_cpp-Expression.o `test -f 'SynTree/Expression.cc' || echo '$(srcdir)/'`SynTree/Expression.cc
    2089 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/cfa_cpp-Expression.Po
    2090 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Expression.cc' object='SynTree/cfa_cpp-Expression.o' libtool=no @AMDEPBACKSLASH@
    2091 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2092 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Expression.o `test -f 'SynTree/Expression.cc' || echo '$(srcdir)/'`SynTree/Expression.cc
    2093 
    2094 SynTree/cfa_cpp-Expression.obj: SynTree/Expression.cc
    2095 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Expression.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Expression.Tpo -c -o SynTree/cfa_cpp-Expression.obj `if test -f 'SynTree/Expression.cc'; then $(CYGPATH_W) 'SynTree/Expression.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Expression.cc'; fi`
    2096 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/cfa_cpp-Expression.Po
    2097 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Expression.cc' object='SynTree/cfa_cpp-Expression.obj' libtool=no @AMDEPBACKSLASH@
    2098 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2099 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Expression.obj `if test -f 'SynTree/Expression.cc'; then $(CYGPATH_W) 'SynTree/Expression.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Expression.cc'; fi`
    2100 
    2101 SynTree/cfa_cpp-TupleExpr.o: SynTree/TupleExpr.cc
    2102 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TupleExpr.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Tpo -c -o SynTree/cfa_cpp-TupleExpr.o `test -f 'SynTree/TupleExpr.cc' || echo '$(srcdir)/'`SynTree/TupleExpr.cc
    2103 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Po
    2104 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TupleExpr.cc' object='SynTree/cfa_cpp-TupleExpr.o' libtool=no @AMDEPBACKSLASH@
    2105 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2106 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TupleExpr.o `test -f 'SynTree/TupleExpr.cc' || echo '$(srcdir)/'`SynTree/TupleExpr.cc
    2107 
    2108 SynTree/cfa_cpp-TupleExpr.obj: SynTree/TupleExpr.cc
    2109 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TupleExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Tpo -c -o SynTree/cfa_cpp-TupleExpr.obj `if test -f 'SynTree/TupleExpr.cc'; then $(CYGPATH_W) 'SynTree/TupleExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleExpr.cc'; fi`
    2110 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-TupleExpr.Po
    2111 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TupleExpr.cc' object='SynTree/cfa_cpp-TupleExpr.obj' libtool=no @AMDEPBACKSLASH@
    2112 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2113 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TupleExpr.obj `if test -f 'SynTree/TupleExpr.cc'; then $(CYGPATH_W) 'SynTree/TupleExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TupleExpr.cc'; fi`
    2114 
    2115 SynTree/cfa_cpp-CommaExpr.o: SynTree/CommaExpr.cc
    2116 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CommaExpr.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Tpo -c -o SynTree/cfa_cpp-CommaExpr.o `test -f 'SynTree/CommaExpr.cc' || echo '$(srcdir)/'`SynTree/CommaExpr.cc
    2117 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Po
    2118 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/CommaExpr.cc' object='SynTree/cfa_cpp-CommaExpr.o' libtool=no @AMDEPBACKSLASH@
    2119 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2120 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CommaExpr.o `test -f 'SynTree/CommaExpr.cc' || echo '$(srcdir)/'`SynTree/CommaExpr.cc
    2121 
    2122 SynTree/cfa_cpp-CommaExpr.obj: SynTree/CommaExpr.cc
    2123 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CommaExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Tpo -c -o SynTree/cfa_cpp-CommaExpr.obj `if test -f 'SynTree/CommaExpr.cc'; then $(CYGPATH_W) 'SynTree/CommaExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CommaExpr.cc'; fi`
    2124 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-CommaExpr.Po
    2125 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/CommaExpr.cc' object='SynTree/cfa_cpp-CommaExpr.obj' libtool=no @AMDEPBACKSLASH@
    2126 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2127 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CommaExpr.obj `if test -f 'SynTree/CommaExpr.cc'; then $(CYGPATH_W) 'SynTree/CommaExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CommaExpr.cc'; fi`
    2128 
    2129 SynTree/cfa_cpp-TypeExpr.o: SynTree/TypeExpr.cc
    2130 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeExpr.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Tpo -c -o SynTree/cfa_cpp-TypeExpr.o `test -f 'SynTree/TypeExpr.cc' || echo '$(srcdir)/'`SynTree/TypeExpr.cc
    2131 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Po
    2132 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeExpr.cc' object='SynTree/cfa_cpp-TypeExpr.o' libtool=no @AMDEPBACKSLASH@
    2133 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2134 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeExpr.o `test -f 'SynTree/TypeExpr.cc' || echo '$(srcdir)/'`SynTree/TypeExpr.cc
    2135 
    2136 SynTree/cfa_cpp-TypeExpr.obj: SynTree/TypeExpr.cc
    2137 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Tpo -c -o SynTree/cfa_cpp-TypeExpr.obj `if test -f 'SynTree/TypeExpr.cc'; then $(CYGPATH_W) 'SynTree/TypeExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeExpr.cc'; fi`
    2138 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeExpr.Po
    2139 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeExpr.cc' object='SynTree/cfa_cpp-TypeExpr.obj' libtool=no @AMDEPBACKSLASH@
    2140 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2141 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeExpr.obj `if test -f 'SynTree/TypeExpr.cc'; then $(CYGPATH_W) 'SynTree/TypeExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeExpr.cc'; fi`
    2142 
    2143 SynTree/cfa_cpp-ApplicationExpr.o: SynTree/ApplicationExpr.cc
    2144 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ApplicationExpr.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Tpo -c -o SynTree/cfa_cpp-ApplicationExpr.o `test -f 'SynTree/ApplicationExpr.cc' || echo '$(srcdir)/'`SynTree/ApplicationExpr.cc
    2145 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Po
    2146 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ApplicationExpr.cc' object='SynTree/cfa_cpp-ApplicationExpr.o' libtool=no @AMDEPBACKSLASH@
    2147 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2148 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ApplicationExpr.o `test -f 'SynTree/ApplicationExpr.cc' || echo '$(srcdir)/'`SynTree/ApplicationExpr.cc
    2149 
    2150 SynTree/cfa_cpp-ApplicationExpr.obj: SynTree/ApplicationExpr.cc
    2151 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ApplicationExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Tpo -c -o SynTree/cfa_cpp-ApplicationExpr.obj `if test -f 'SynTree/ApplicationExpr.cc'; then $(CYGPATH_W) 'SynTree/ApplicationExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ApplicationExpr.cc'; fi`
    2152 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-ApplicationExpr.Po
    2153 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ApplicationExpr.cc' object='SynTree/cfa_cpp-ApplicationExpr.obj' libtool=no @AMDEPBACKSLASH@
    2154 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2155 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ApplicationExpr.obj `if test -f 'SynTree/ApplicationExpr.cc'; then $(CYGPATH_W) 'SynTree/ApplicationExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ApplicationExpr.cc'; fi`
    2156 
    2157 SynTree/cfa_cpp-AddressExpr.o: SynTree/AddressExpr.cc
    2158 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AddressExpr.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Tpo -c -o SynTree/cfa_cpp-AddressExpr.o `test -f 'SynTree/AddressExpr.cc' || echo '$(srcdir)/'`SynTree/AddressExpr.cc
    2159 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Po
    2160 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AddressExpr.cc' object='SynTree/cfa_cpp-AddressExpr.o' libtool=no @AMDEPBACKSLASH@
    2161 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2162 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AddressExpr.o `test -f 'SynTree/AddressExpr.cc' || echo '$(srcdir)/'`SynTree/AddressExpr.cc
    2163 
    2164 SynTree/cfa_cpp-AddressExpr.obj: SynTree/AddressExpr.cc
    2165 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AddressExpr.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Tpo -c -o SynTree/cfa_cpp-AddressExpr.obj `if test -f 'SynTree/AddressExpr.cc'; then $(CYGPATH_W) 'SynTree/AddressExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddressExpr.cc'; fi`
    2166 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/cfa_cpp-AddressExpr.Po
    2167 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AddressExpr.cc' object='SynTree/cfa_cpp-AddressExpr.obj' libtool=no @AMDEPBACKSLASH@
    2168 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2169 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AddressExpr.obj `if test -f 'SynTree/AddressExpr.cc'; then $(CYGPATH_W) 'SynTree/AddressExpr.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AddressExpr.cc'; fi`
    2170 
    2171 SynTree/cfa_cpp-Statement.o: SynTree/Statement.cc
    2172 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Statement.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Statement.Tpo -c -o SynTree/cfa_cpp-Statement.o `test -f 'SynTree/Statement.cc' || echo '$(srcdir)/'`SynTree/Statement.cc
    2173 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/cfa_cpp-Statement.Po
    2174 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Statement.cc' object='SynTree/cfa_cpp-Statement.o' libtool=no @AMDEPBACKSLASH@
    2175 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2176 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Statement.o `test -f 'SynTree/Statement.cc' || echo '$(srcdir)/'`SynTree/Statement.cc
    2177 
    2178 SynTree/cfa_cpp-Statement.obj: SynTree/Statement.cc
    2179 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Statement.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Statement.Tpo -c -o SynTree/cfa_cpp-Statement.obj `if test -f 'SynTree/Statement.cc'; then $(CYGPATH_W) 'SynTree/Statement.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Statement.cc'; fi`
    2180 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/cfa_cpp-Statement.Po
    2181 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Statement.cc' object='SynTree/cfa_cpp-Statement.obj' libtool=no @AMDEPBACKSLASH@
    2182 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2183 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Statement.obj `if test -f 'SynTree/Statement.cc'; then $(CYGPATH_W) 'SynTree/Statement.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Statement.cc'; fi`
    2184 
    2185 SynTree/cfa_cpp-CompoundStmt.o: SynTree/CompoundStmt.cc
    2186 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CompoundStmt.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Tpo -c -o SynTree/cfa_cpp-CompoundStmt.o `test -f 'SynTree/CompoundStmt.cc' || echo '$(srcdir)/'`SynTree/CompoundStmt.cc
    2187 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Po
    2188 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/CompoundStmt.cc' object='SynTree/cfa_cpp-CompoundStmt.o' libtool=no @AMDEPBACKSLASH@
    2189 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2190 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CompoundStmt.o `test -f 'SynTree/CompoundStmt.cc' || echo '$(srcdir)/'`SynTree/CompoundStmt.cc
    2191 
    2192 SynTree/cfa_cpp-CompoundStmt.obj: SynTree/CompoundStmt.cc
    2193 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CompoundStmt.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Tpo -c -o SynTree/cfa_cpp-CompoundStmt.obj `if test -f 'SynTree/CompoundStmt.cc'; then $(CYGPATH_W) 'SynTree/CompoundStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CompoundStmt.cc'; fi`
    2194 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/cfa_cpp-CompoundStmt.Po
    2195 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/CompoundStmt.cc' object='SynTree/cfa_cpp-CompoundStmt.obj' libtool=no @AMDEPBACKSLASH@
    2196 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2197 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CompoundStmt.obj `if test -f 'SynTree/CompoundStmt.cc'; then $(CYGPATH_W) 'SynTree/CompoundStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CompoundStmt.cc'; fi`
    2198 
    2199 SynTree/cfa_cpp-DeclStmt.o: SynTree/DeclStmt.cc
    2200 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-DeclStmt.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Tpo -c -o SynTree/cfa_cpp-DeclStmt.o `test -f 'SynTree/DeclStmt.cc' || echo '$(srcdir)/'`SynTree/DeclStmt.cc
    2201 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Po
    2202 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/DeclStmt.cc' object='SynTree/cfa_cpp-DeclStmt.o' libtool=no @AMDEPBACKSLASH@
    2203 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2204 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-DeclStmt.o `test -f 'SynTree/DeclStmt.cc' || echo '$(srcdir)/'`SynTree/DeclStmt.cc
    2205 
    2206 SynTree/cfa_cpp-DeclStmt.obj: SynTree/DeclStmt.cc
    2207 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-DeclStmt.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Tpo -c -o SynTree/cfa_cpp-DeclStmt.obj `if test -f 'SynTree/DeclStmt.cc'; then $(CYGPATH_W) 'SynTree/DeclStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclStmt.cc'; fi`
    2208 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/cfa_cpp-DeclStmt.Po
    2209 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/DeclStmt.cc' object='SynTree/cfa_cpp-DeclStmt.obj' libtool=no @AMDEPBACKSLASH@
    2210 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2211 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-DeclStmt.obj `if test -f 'SynTree/DeclStmt.cc'; then $(CYGPATH_W) 'SynTree/DeclStmt.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclStmt.cc'; fi`
    2212 
    2213 SynTree/cfa_cpp-Declaration.o: SynTree/Declaration.cc
    2214 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Declaration.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Declaration.Tpo -c -o SynTree/cfa_cpp-Declaration.o `test -f 'SynTree/Declaration.cc' || echo '$(srcdir)/'`SynTree/Declaration.cc
    2215 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/cfa_cpp-Declaration.Po
    2216 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Declaration.cc' object='SynTree/cfa_cpp-Declaration.o' libtool=no @AMDEPBACKSLASH@
    2217 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2218 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Declaration.o `test -f 'SynTree/Declaration.cc' || echo '$(srcdir)/'`SynTree/Declaration.cc
    2219 
    2220 SynTree/cfa_cpp-Declaration.obj: SynTree/Declaration.cc
    2221 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Declaration.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Declaration.Tpo -c -o SynTree/cfa_cpp-Declaration.obj `if test -f 'SynTree/Declaration.cc'; then $(CYGPATH_W) 'SynTree/Declaration.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Declaration.cc'; fi`
    2222 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/cfa_cpp-Declaration.Po
    2223 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Declaration.cc' object='SynTree/cfa_cpp-Declaration.obj' libtool=no @AMDEPBACKSLASH@
    2224 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2225 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Declaration.obj `if test -f 'SynTree/Declaration.cc'; then $(CYGPATH_W) 'SynTree/Declaration.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Declaration.cc'; fi`
    2226 
    2227 SynTree/cfa_cpp-DeclarationWithType.o: SynTree/DeclarationWithType.cc
    2228 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-DeclarationWithType.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Tpo -c -o SynTree/cfa_cpp-DeclarationWithType.o `test -f 'SynTree/DeclarationWithType.cc' || echo '$(srcdir)/'`SynTree/DeclarationWithType.cc
    2229 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Po
    2230 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/DeclarationWithType.cc' object='SynTree/cfa_cpp-DeclarationWithType.o' libtool=no @AMDEPBACKSLASH@
    2231 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2232 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-DeclarationWithType.o `test -f 'SynTree/DeclarationWithType.cc' || echo '$(srcdir)/'`SynTree/DeclarationWithType.cc
    2233 
    2234 SynTree/cfa_cpp-DeclarationWithType.obj: SynTree/DeclarationWithType.cc
    2235 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-DeclarationWithType.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Tpo -c -o SynTree/cfa_cpp-DeclarationWithType.obj `if test -f 'SynTree/DeclarationWithType.cc'; then $(CYGPATH_W) 'SynTree/DeclarationWithType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclarationWithType.cc'; fi`
    2236 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/cfa_cpp-DeclarationWithType.Po
    2237 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/DeclarationWithType.cc' object='SynTree/cfa_cpp-DeclarationWithType.obj' libtool=no @AMDEPBACKSLASH@
    2238 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2239 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-DeclarationWithType.obj `if test -f 'SynTree/DeclarationWithType.cc'; then $(CYGPATH_W) 'SynTree/DeclarationWithType.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/DeclarationWithType.cc'; fi`
    2240 
    2241 SynTree/cfa_cpp-ObjectDecl.o: SynTree/ObjectDecl.cc
    2242 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ObjectDecl.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Tpo -c -o SynTree/cfa_cpp-ObjectDecl.o `test -f 'SynTree/ObjectDecl.cc' || echo '$(srcdir)/'`SynTree/ObjectDecl.cc
    2243 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Po
    2244 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ObjectDecl.cc' object='SynTree/cfa_cpp-ObjectDecl.o' libtool=no @AMDEPBACKSLASH@
    2245 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2246 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ObjectDecl.o `test -f 'SynTree/ObjectDecl.cc' || echo '$(srcdir)/'`SynTree/ObjectDecl.cc
    2247 
    2248 SynTree/cfa_cpp-ObjectDecl.obj: SynTree/ObjectDecl.cc
    2249 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-ObjectDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Tpo -c -o SynTree/cfa_cpp-ObjectDecl.obj `if test -f 'SynTree/ObjectDecl.cc'; then $(CYGPATH_W) 'SynTree/ObjectDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ObjectDecl.cc'; fi`
    2250 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-ObjectDecl.Po
    2251 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/ObjectDecl.cc' object='SynTree/cfa_cpp-ObjectDecl.obj' libtool=no @AMDEPBACKSLASH@
    2252 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2253 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-ObjectDecl.obj `if test -f 'SynTree/ObjectDecl.cc'; then $(CYGPATH_W) 'SynTree/ObjectDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/ObjectDecl.cc'; fi`
    2254 
    2255 SynTree/cfa_cpp-FunctionDecl.o: SynTree/FunctionDecl.cc
    2256 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-FunctionDecl.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Tpo -c -o SynTree/cfa_cpp-FunctionDecl.o `test -f 'SynTree/FunctionDecl.cc' || echo '$(srcdir)/'`SynTree/FunctionDecl.cc
    2257 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Po
    2258 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/FunctionDecl.cc' object='SynTree/cfa_cpp-FunctionDecl.o' libtool=no @AMDEPBACKSLASH@
    2259 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2260 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-FunctionDecl.o `test -f 'SynTree/FunctionDecl.cc' || echo '$(srcdir)/'`SynTree/FunctionDecl.cc
    2261 
    2262 SynTree/cfa_cpp-FunctionDecl.obj: SynTree/FunctionDecl.cc
    2263 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-FunctionDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Tpo -c -o SynTree/cfa_cpp-FunctionDecl.obj `if test -f 'SynTree/FunctionDecl.cc'; then $(CYGPATH_W) 'SynTree/FunctionDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionDecl.cc'; fi`
    2264 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-FunctionDecl.Po
    2265 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/FunctionDecl.cc' object='SynTree/cfa_cpp-FunctionDecl.obj' libtool=no @AMDEPBACKSLASH@
    2266 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2267 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-FunctionDecl.obj `if test -f 'SynTree/FunctionDecl.cc'; then $(CYGPATH_W) 'SynTree/FunctionDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/FunctionDecl.cc'; fi`
    2268 
    2269 SynTree/cfa_cpp-AggregateDecl.o: SynTree/AggregateDecl.cc
    2270 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AggregateDecl.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Tpo -c -o SynTree/cfa_cpp-AggregateDecl.o `test -f 'SynTree/AggregateDecl.cc' || echo '$(srcdir)/'`SynTree/AggregateDecl.cc
    2271 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Po
    2272 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AggregateDecl.cc' object='SynTree/cfa_cpp-AggregateDecl.o' libtool=no @AMDEPBACKSLASH@
    2273 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2274 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AggregateDecl.o `test -f 'SynTree/AggregateDecl.cc' || echo '$(srcdir)/'`SynTree/AggregateDecl.cc
    2275 
    2276 SynTree/cfa_cpp-AggregateDecl.obj: SynTree/AggregateDecl.cc
    2277 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-AggregateDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Tpo -c -o SynTree/cfa_cpp-AggregateDecl.obj `if test -f 'SynTree/AggregateDecl.cc'; then $(CYGPATH_W) 'SynTree/AggregateDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AggregateDecl.cc'; fi`
    2278 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-AggregateDecl.Po
    2279 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/AggregateDecl.cc' object='SynTree/cfa_cpp-AggregateDecl.obj' libtool=no @AMDEPBACKSLASH@
    2280 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2281 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-AggregateDecl.obj `if test -f 'SynTree/AggregateDecl.cc'; then $(CYGPATH_W) 'SynTree/AggregateDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/AggregateDecl.cc'; fi`
    2282 
    2283 SynTree/cfa_cpp-NamedTypeDecl.o: SynTree/NamedTypeDecl.cc
    2284 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-NamedTypeDecl.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Tpo -c -o SynTree/cfa_cpp-NamedTypeDecl.o `test -f 'SynTree/NamedTypeDecl.cc' || echo '$(srcdir)/'`SynTree/NamedTypeDecl.cc
    2285 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Po
    2286 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/NamedTypeDecl.cc' object='SynTree/cfa_cpp-NamedTypeDecl.o' libtool=no @AMDEPBACKSLASH@
    2287 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2288 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-NamedTypeDecl.o `test -f 'SynTree/NamedTypeDecl.cc' || echo '$(srcdir)/'`SynTree/NamedTypeDecl.cc
    2289 
    2290 SynTree/cfa_cpp-NamedTypeDecl.obj: SynTree/NamedTypeDecl.cc
    2291 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-NamedTypeDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Tpo -c -o SynTree/cfa_cpp-NamedTypeDecl.obj `if test -f 'SynTree/NamedTypeDecl.cc'; then $(CYGPATH_W) 'SynTree/NamedTypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/NamedTypeDecl.cc'; fi`
    2292 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-NamedTypeDecl.Po
    2293 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/NamedTypeDecl.cc' object='SynTree/cfa_cpp-NamedTypeDecl.obj' libtool=no @AMDEPBACKSLASH@
    2294 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2295 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-NamedTypeDecl.obj `if test -f 'SynTree/NamedTypeDecl.cc'; then $(CYGPATH_W) 'SynTree/NamedTypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/NamedTypeDecl.cc'; fi`
    2296 
    2297 SynTree/cfa_cpp-TypeDecl.o: SynTree/TypeDecl.cc
    2298 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeDecl.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Tpo -c -o SynTree/cfa_cpp-TypeDecl.o `test -f 'SynTree/TypeDecl.cc' || echo '$(srcdir)/'`SynTree/TypeDecl.cc
    2299 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Po
    2300 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeDecl.cc' object='SynTree/cfa_cpp-TypeDecl.o' libtool=no @AMDEPBACKSLASH@
    2301 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2302 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeDecl.o `test -f 'SynTree/TypeDecl.cc' || echo '$(srcdir)/'`SynTree/TypeDecl.cc
    2303 
    2304 SynTree/cfa_cpp-TypeDecl.obj: SynTree/TypeDecl.cc
    2305 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeDecl.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Tpo -c -o SynTree/cfa_cpp-TypeDecl.obj `if test -f 'SynTree/TypeDecl.cc'; then $(CYGPATH_W) 'SynTree/TypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeDecl.cc'; fi`
    2306 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeDecl.Po
    2307 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeDecl.cc' object='SynTree/cfa_cpp-TypeDecl.obj' libtool=no @AMDEPBACKSLASH@
    2308 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2309 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeDecl.obj `if test -f 'SynTree/TypeDecl.cc'; then $(CYGPATH_W) 'SynTree/TypeDecl.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeDecl.cc'; fi`
    2310 
    2311 SynTree/cfa_cpp-Initializer.o: SynTree/Initializer.cc
    2312 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Initializer.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Initializer.Tpo -c -o SynTree/cfa_cpp-Initializer.o `test -f 'SynTree/Initializer.cc' || echo '$(srcdir)/'`SynTree/Initializer.cc
    2313 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/cfa_cpp-Initializer.Po
    2314 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Initializer.cc' object='SynTree/cfa_cpp-Initializer.o' libtool=no @AMDEPBACKSLASH@
    2315 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2316 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Initializer.o `test -f 'SynTree/Initializer.cc' || echo '$(srcdir)/'`SynTree/Initializer.cc
    2317 
    2318 SynTree/cfa_cpp-Initializer.obj: SynTree/Initializer.cc
    2319 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Initializer.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Initializer.Tpo -c -o SynTree/cfa_cpp-Initializer.obj `if test -f 'SynTree/Initializer.cc'; then $(CYGPATH_W) 'SynTree/Initializer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Initializer.cc'; fi`
    2320 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/cfa_cpp-Initializer.Po
    2321 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Initializer.cc' object='SynTree/cfa_cpp-Initializer.obj' libtool=no @AMDEPBACKSLASH@
    2322 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2323 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Initializer.obj `if test -f 'SynTree/Initializer.cc'; then $(CYGPATH_W) 'SynTree/Initializer.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Initializer.cc'; fi`
    2324 
    2325 SynTree/cfa_cpp-Visitor.o: SynTree/Visitor.cc
    2326 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Visitor.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Visitor.Tpo -c -o SynTree/cfa_cpp-Visitor.o `test -f 'SynTree/Visitor.cc' || echo '$(srcdir)/'`SynTree/Visitor.cc
    2327 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Visitor.Tpo SynTree/$(DEPDIR)/cfa_cpp-Visitor.Po
    2328 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Visitor.cc' object='SynTree/cfa_cpp-Visitor.o' libtool=no @AMDEPBACKSLASH@
    2329 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2330 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Visitor.o `test -f 'SynTree/Visitor.cc' || echo '$(srcdir)/'`SynTree/Visitor.cc
    2331 
    2332 SynTree/cfa_cpp-Visitor.obj: SynTree/Visitor.cc
    2333 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Visitor.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Visitor.Tpo -c -o SynTree/cfa_cpp-Visitor.obj `if test -f 'SynTree/Visitor.cc'; then $(CYGPATH_W) 'SynTree/Visitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Visitor.cc'; fi`
    2334 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Visitor.Tpo SynTree/$(DEPDIR)/cfa_cpp-Visitor.Po
    2335 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Visitor.cc' object='SynTree/cfa_cpp-Visitor.obj' libtool=no @AMDEPBACKSLASH@
    2336 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2337 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Visitor.obj `if test -f 'SynTree/Visitor.cc'; then $(CYGPATH_W) 'SynTree/Visitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Visitor.cc'; fi`
    2338 
    2339 SynTree/cfa_cpp-Mutator.o: SynTree/Mutator.cc
    2340 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Mutator.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Mutator.Tpo -c -o SynTree/cfa_cpp-Mutator.o `test -f 'SynTree/Mutator.cc' || echo '$(srcdir)/'`SynTree/Mutator.cc
    2341 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Mutator.Tpo SynTree/$(DEPDIR)/cfa_cpp-Mutator.Po
    2342 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Mutator.cc' object='SynTree/cfa_cpp-Mutator.o' libtool=no @AMDEPBACKSLASH@
    2343 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2344 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Mutator.o `test -f 'SynTree/Mutator.cc' || echo '$(srcdir)/'`SynTree/Mutator.cc
    2345 
    2346 SynTree/cfa_cpp-Mutator.obj: SynTree/Mutator.cc
    2347 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-Mutator.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-Mutator.Tpo -c -o SynTree/cfa_cpp-Mutator.obj `if test -f 'SynTree/Mutator.cc'; then $(CYGPATH_W) 'SynTree/Mutator.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Mutator.cc'; fi`
    2348 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-Mutator.Tpo SynTree/$(DEPDIR)/cfa_cpp-Mutator.Po
    2349 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/Mutator.cc' object='SynTree/cfa_cpp-Mutator.obj' libtool=no @AMDEPBACKSLASH@
    2350 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2351 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-Mutator.obj `if test -f 'SynTree/Mutator.cc'; then $(CYGPATH_W) 'SynTree/Mutator.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/Mutator.cc'; fi`
    2352 
    2353 SynTree/cfa_cpp-CodeGenVisitor.o: SynTree/CodeGenVisitor.cc
    2354 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CodeGenVisitor.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Tpo -c -o SynTree/cfa_cpp-CodeGenVisitor.o `test -f 'SynTree/CodeGenVisitor.cc' || echo '$(srcdir)/'`SynTree/CodeGenVisitor.cc
    2355 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Tpo SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Po
    2356 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/CodeGenVisitor.cc' object='SynTree/cfa_cpp-CodeGenVisitor.o' libtool=no @AMDEPBACKSLASH@
    2357 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2358 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CodeGenVisitor.o `test -f 'SynTree/CodeGenVisitor.cc' || echo '$(srcdir)/'`SynTree/CodeGenVisitor.cc
    2359 
    2360 SynTree/cfa_cpp-CodeGenVisitor.obj: SynTree/CodeGenVisitor.cc
    2361 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-CodeGenVisitor.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Tpo -c -o SynTree/cfa_cpp-CodeGenVisitor.obj `if test -f 'SynTree/CodeGenVisitor.cc'; then $(CYGPATH_W) 'SynTree/CodeGenVisitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CodeGenVisitor.cc'; fi`
    2362 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Tpo SynTree/$(DEPDIR)/cfa_cpp-CodeGenVisitor.Po
    2363 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/CodeGenVisitor.cc' object='SynTree/cfa_cpp-CodeGenVisitor.obj' libtool=no @AMDEPBACKSLASH@
    2364 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2365 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-CodeGenVisitor.obj `if test -f 'SynTree/CodeGenVisitor.cc'; then $(CYGPATH_W) 'SynTree/CodeGenVisitor.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/CodeGenVisitor.cc'; fi`
    2366 
    2367 SynTree/cfa_cpp-TypeSubstitution.o: SynTree/TypeSubstitution.cc
    2368 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeSubstitution.o -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Tpo -c -o SynTree/cfa_cpp-TypeSubstitution.o `test -f 'SynTree/TypeSubstitution.cc' || echo '$(srcdir)/'`SynTree/TypeSubstitution.cc
    2369 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Po
    2370 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeSubstitution.cc' object='SynTree/cfa_cpp-TypeSubstitution.o' libtool=no @AMDEPBACKSLASH@
    2371 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2372 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeSubstitution.o `test -f 'SynTree/TypeSubstitution.cc' || echo '$(srcdir)/'`SynTree/TypeSubstitution.cc
    2373 
    2374 SynTree/cfa_cpp-TypeSubstitution.obj: SynTree/TypeSubstitution.cc
    2375 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT SynTree/cfa_cpp-TypeSubstitution.obj -MD -MP -MF SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Tpo -c -o SynTree/cfa_cpp-TypeSubstitution.obj `if test -f 'SynTree/TypeSubstitution.cc'; then $(CYGPATH_W) 'SynTree/TypeSubstitution.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeSubstitution.cc'; fi`
    2376 @am__fastdepCXX_TRUE@   $(am__mv) SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/cfa_cpp-TypeSubstitution.Po
    2377 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='SynTree/TypeSubstitution.cc' object='SynTree/cfa_cpp-TypeSubstitution.obj' libtool=no @AMDEPBACKSLASH@
    2378 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2379 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o SynTree/cfa_cpp-TypeSubstitution.obj `if test -f 'SynTree/TypeSubstitution.cc'; then $(CYGPATH_W) 'SynTree/TypeSubstitution.cc'; else $(CYGPATH_W) '$(srcdir)/SynTree/TypeSubstitution.cc'; fi`
    2380 
    2381 Tuples/cfa_cpp-Mutate.o: Tuples/Mutate.cc
    2382 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-Mutate.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o Tuples/cfa_cpp-Mutate.o `test -f 'Tuples/Mutate.cc' || echo '$(srcdir)/'`Tuples/Mutate.cc
    2383 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-Mutate.Tpo Tuples/$(DEPDIR)/cfa_cpp-Mutate.Po
    2384 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/Mutate.cc' object='Tuples/cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
    2385 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2386 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-Mutate.o `test -f 'Tuples/Mutate.cc' || echo '$(srcdir)/'`Tuples/Mutate.cc
    2387 
    2388 Tuples/cfa_cpp-Mutate.obj: Tuples/Mutate.cc
    2389 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-Mutate.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-Mutate.Tpo -c -o Tuples/cfa_cpp-Mutate.obj `if test -f 'Tuples/Mutate.cc'; then $(CYGPATH_W) 'Tuples/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/Mutate.cc'; fi`
    2390 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-Mutate.Tpo Tuples/$(DEPDIR)/cfa_cpp-Mutate.Po
    2391 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/Mutate.cc' object='Tuples/cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
    2392 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2393 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-Mutate.obj `if test -f 'Tuples/Mutate.cc'; then $(CYGPATH_W) 'Tuples/Mutate.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/Mutate.cc'; fi`
    2394 
    2395 Tuples/cfa_cpp-AssignExpand.o: Tuples/AssignExpand.cc
    2396 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-AssignExpand.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Tpo -c -o Tuples/cfa_cpp-AssignExpand.o `test -f 'Tuples/AssignExpand.cc' || echo '$(srcdir)/'`Tuples/AssignExpand.cc
    2397 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Tpo Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Po
    2398 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/AssignExpand.cc' object='Tuples/cfa_cpp-AssignExpand.o' libtool=no @AMDEPBACKSLASH@
    2399 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2400 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-AssignExpand.o `test -f 'Tuples/AssignExpand.cc' || echo '$(srcdir)/'`Tuples/AssignExpand.cc
    2401 
    2402 Tuples/cfa_cpp-AssignExpand.obj: Tuples/AssignExpand.cc
    2403 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-AssignExpand.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Tpo -c -o Tuples/cfa_cpp-AssignExpand.obj `if test -f 'Tuples/AssignExpand.cc'; then $(CYGPATH_W) 'Tuples/AssignExpand.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/AssignExpand.cc'; fi`
    2404 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Tpo Tuples/$(DEPDIR)/cfa_cpp-AssignExpand.Po
    2405 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/AssignExpand.cc' object='Tuples/cfa_cpp-AssignExpand.obj' libtool=no @AMDEPBACKSLASH@
    2406 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2407 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-AssignExpand.obj `if test -f 'Tuples/AssignExpand.cc'; then $(CYGPATH_W) 'Tuples/AssignExpand.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/AssignExpand.cc'; fi`
    2408 
    2409 Tuples/cfa_cpp-FunctionFixer.o: Tuples/FunctionFixer.cc
    2410 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-FunctionFixer.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Tpo -c -o Tuples/cfa_cpp-FunctionFixer.o `test -f 'Tuples/FunctionFixer.cc' || echo '$(srcdir)/'`Tuples/FunctionFixer.cc
    2411 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Tpo Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Po
    2412 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/FunctionFixer.cc' object='Tuples/cfa_cpp-FunctionFixer.o' libtool=no @AMDEPBACKSLASH@
    2413 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2414 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-FunctionFixer.o `test -f 'Tuples/FunctionFixer.cc' || echo '$(srcdir)/'`Tuples/FunctionFixer.cc
    2415 
    2416 Tuples/cfa_cpp-FunctionFixer.obj: Tuples/FunctionFixer.cc
    2417 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-FunctionFixer.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Tpo -c -o Tuples/cfa_cpp-FunctionFixer.obj `if test -f 'Tuples/FunctionFixer.cc'; then $(CYGPATH_W) 'Tuples/FunctionFixer.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionFixer.cc'; fi`
    2418 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Tpo Tuples/$(DEPDIR)/cfa_cpp-FunctionFixer.Po
    2419 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/FunctionFixer.cc' object='Tuples/cfa_cpp-FunctionFixer.obj' libtool=no @AMDEPBACKSLASH@
    2420 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2421 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-FunctionFixer.obj `if test -f 'Tuples/FunctionFixer.cc'; then $(CYGPATH_W) 'Tuples/FunctionFixer.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionFixer.cc'; fi`
    2422 
    2423 Tuples/cfa_cpp-TupleAssignment.o: Tuples/TupleAssignment.cc
    2424 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-TupleAssignment.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Tpo -c -o Tuples/cfa_cpp-TupleAssignment.o `test -f 'Tuples/TupleAssignment.cc' || echo '$(srcdir)/'`Tuples/TupleAssignment.cc
    2425 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Po
    2426 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/TupleAssignment.cc' object='Tuples/cfa_cpp-TupleAssignment.o' libtool=no @AMDEPBACKSLASH@
    2427 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2428 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-TupleAssignment.o `test -f 'Tuples/TupleAssignment.cc' || echo '$(srcdir)/'`Tuples/TupleAssignment.cc
    2429 
    2430 Tuples/cfa_cpp-TupleAssignment.obj: Tuples/TupleAssignment.cc
    2431 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-TupleAssignment.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Tpo -c -o Tuples/cfa_cpp-TupleAssignment.obj `if test -f 'Tuples/TupleAssignment.cc'; then $(CYGPATH_W) 'Tuples/TupleAssignment.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleAssignment.cc'; fi`
    2432 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/cfa_cpp-TupleAssignment.Po
    2433 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/TupleAssignment.cc' object='Tuples/cfa_cpp-TupleAssignment.obj' libtool=no @AMDEPBACKSLASH@
    2434 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2435 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-TupleAssignment.obj `if test -f 'Tuples/TupleAssignment.cc'; then $(CYGPATH_W) 'Tuples/TupleAssignment.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/TupleAssignment.cc'; fi`
    2436 
    2437 Tuples/cfa_cpp-FunctionChecker.o: Tuples/FunctionChecker.cc
    2438 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-FunctionChecker.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Tpo -c -o Tuples/cfa_cpp-FunctionChecker.o `test -f 'Tuples/FunctionChecker.cc' || echo '$(srcdir)/'`Tuples/FunctionChecker.cc
    2439 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Tpo Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Po
    2440 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/FunctionChecker.cc' object='Tuples/cfa_cpp-FunctionChecker.o' libtool=no @AMDEPBACKSLASH@
    2441 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2442 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-FunctionChecker.o `test -f 'Tuples/FunctionChecker.cc' || echo '$(srcdir)/'`Tuples/FunctionChecker.cc
    2443 
    2444 Tuples/cfa_cpp-FunctionChecker.obj: Tuples/FunctionChecker.cc
    2445 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-FunctionChecker.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Tpo -c -o Tuples/cfa_cpp-FunctionChecker.obj `if test -f 'Tuples/FunctionChecker.cc'; then $(CYGPATH_W) 'Tuples/FunctionChecker.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionChecker.cc'; fi`
    2446 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Tpo Tuples/$(DEPDIR)/cfa_cpp-FunctionChecker.Po
    2447 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/FunctionChecker.cc' object='Tuples/cfa_cpp-FunctionChecker.obj' libtool=no @AMDEPBACKSLASH@
    2448 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2449 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-FunctionChecker.obj `if test -f 'Tuples/FunctionChecker.cc'; then $(CYGPATH_W) 'Tuples/FunctionChecker.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/FunctionChecker.cc'; fi`
    2450 
    2451 Tuples/cfa_cpp-NameMatcher.o: Tuples/NameMatcher.cc
    2452 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-NameMatcher.o -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Tpo -c -o Tuples/cfa_cpp-NameMatcher.o `test -f 'Tuples/NameMatcher.cc' || echo '$(srcdir)/'`Tuples/NameMatcher.cc
    2453 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Tpo Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Po
    2454 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/NameMatcher.cc' object='Tuples/cfa_cpp-NameMatcher.o' libtool=no @AMDEPBACKSLASH@
    2455 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2456 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-NameMatcher.o `test -f 'Tuples/NameMatcher.cc' || echo '$(srcdir)/'`Tuples/NameMatcher.cc
    2457 
    2458 Tuples/cfa_cpp-NameMatcher.obj: Tuples/NameMatcher.cc
    2459 @am__fastdepCXX_TRUE@   $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT Tuples/cfa_cpp-NameMatcher.obj -MD -MP -MF Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Tpo -c -o Tuples/cfa_cpp-NameMatcher.obj `if test -f 'Tuples/NameMatcher.cc'; then $(CYGPATH_W) 'Tuples/NameMatcher.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/NameMatcher.cc'; fi`
    2460 @am__fastdepCXX_TRUE@   $(am__mv) Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Tpo Tuples/$(DEPDIR)/cfa_cpp-NameMatcher.Po
    2461 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='Tuples/NameMatcher.cc' object='Tuples/cfa_cpp-NameMatcher.obj' libtool=no @AMDEPBACKSLASH@
    2462 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    2463 @am__fastdepCXX_FALSE@  $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o Tuples/cfa_cpp-NameMatcher.obj `if test -f 'Tuples/NameMatcher.cc'; then $(CYGPATH_W) 'Tuples/NameMatcher.cc'; else $(CYGPATH_W) '$(srcdir)/Tuples/NameMatcher.cc'; fi`
     1036@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     1037@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1038@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     1039
     1040driver_cfa_cpp-main.o: main.cc
     1041@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
     1042@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-main.Tpo $(DEPDIR)/driver_cfa_cpp-main.Po
     1043@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='main.cc' object='driver_cfa_cpp-main.o' libtool=no @AMDEPBACKSLASH@
     1044@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1045@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
     1046
     1047driver_cfa_cpp-main.obj: main.cc
     1048@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`
     1049@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-main.Tpo $(DEPDIR)/driver_cfa_cpp-main.Po
     1050@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='main.cc' object='driver_cfa_cpp-main.obj' libtool=no @AMDEPBACKSLASH@
     1051@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1052@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`
     1053
     1054driver_cfa_cpp-MakeLibCfa.o: MakeLibCfa.cc
     1055@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
     1056@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Po
     1057@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='MakeLibCfa.cc' object='driver_cfa_cpp-MakeLibCfa.o' libtool=no @AMDEPBACKSLASH@
     1058@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1059@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
     1060
     1061driver_cfa_cpp-MakeLibCfa.obj: MakeLibCfa.cc
     1062@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`
     1063@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Tpo $(DEPDIR)/driver_cfa_cpp-MakeLibCfa.Po
     1064@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='MakeLibCfa.cc' object='driver_cfa_cpp-MakeLibCfa.obj' libtool=no @AMDEPBACKSLASH@
     1065@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1066@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`
     1067
     1068CodeGen/driver_cfa_cpp-Generate.o: CodeGen/Generate.cc
     1069@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
     1070@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po
     1071@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/Generate.cc' object='CodeGen/driver_cfa_cpp-Generate.o' libtool=no @AMDEPBACKSLASH@
     1072@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1073@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
     1074
     1075CodeGen/driver_cfa_cpp-Generate.obj: CodeGen/Generate.cc
     1076@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`
     1077@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-Generate.Po
     1078@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/Generate.cc' object='CodeGen/driver_cfa_cpp-Generate.obj' libtool=no @AMDEPBACKSLASH@
     1079@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1080@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`
     1081
     1082CodeGen/driver_cfa_cpp-CodeGenerator.o: CodeGen/CodeGenerator.cc
     1083@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
     1084@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Po
     1085@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/CodeGenerator.cc' object='CodeGen/driver_cfa_cpp-CodeGenerator.o' libtool=no @AMDEPBACKSLASH@
     1086@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1087@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
     1088
     1089CodeGen/driver_cfa_cpp-CodeGenerator.obj: CodeGen/CodeGenerator.cc
     1090@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`
     1091@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-CodeGenerator.Po
     1092@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/CodeGenerator.cc' object='CodeGen/driver_cfa_cpp-CodeGenerator.obj' libtool=no @AMDEPBACKSLASH@
     1093@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1094@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`
     1095
     1096CodeGen/driver_cfa_cpp-GenType.o: CodeGen/GenType.cc
     1097@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
     1098@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Po
     1099@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/GenType.cc' object='CodeGen/driver_cfa_cpp-GenType.o' libtool=no @AMDEPBACKSLASH@
     1100@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1101@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
     1102
     1103CodeGen/driver_cfa_cpp-GenType.obj: CodeGen/GenType.cc
     1104@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`
     1105@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-GenType.Po
     1106@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/GenType.cc' object='CodeGen/driver_cfa_cpp-GenType.obj' libtool=no @AMDEPBACKSLASH@
     1107@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1108@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`
     1109
     1110CodeGen/driver_cfa_cpp-FixNames.o: CodeGen/FixNames.cc
     1111@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
     1112@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Po
     1113@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/FixNames.cc' object='CodeGen/driver_cfa_cpp-FixNames.o' libtool=no @AMDEPBACKSLASH@
     1114@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1115@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
     1116
     1117CodeGen/driver_cfa_cpp-FixNames.obj: CodeGen/FixNames.cc
     1118@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`
     1119@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-FixNames.Po
     1120@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/FixNames.cc' object='CodeGen/driver_cfa_cpp-FixNames.obj' libtool=no @AMDEPBACKSLASH@
     1121@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1122@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`
     1123
     1124CodeGen/driver_cfa_cpp-OperatorTable.o: CodeGen/OperatorTable.cc
     1125@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
     1126@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po
     1127@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/OperatorTable.cc' object='CodeGen/driver_cfa_cpp-OperatorTable.o' libtool=no @AMDEPBACKSLASH@
     1128@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1129@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
     1130
     1131CodeGen/driver_cfa_cpp-OperatorTable.obj: CodeGen/OperatorTable.cc
     1132@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`
     1133@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Tpo CodeGen/$(DEPDIR)/driver_cfa_cpp-OperatorTable.Po
     1134@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='CodeGen/OperatorTable.cc' object='CodeGen/driver_cfa_cpp-OperatorTable.obj' libtool=no @AMDEPBACKSLASH@
     1135@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1136@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`
     1137
     1138Common/driver_cfa_cpp-SemanticError.o: Common/SemanticError.cc
     1139@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
     1140@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po
     1141@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/SemanticError.cc' object='Common/driver_cfa_cpp-SemanticError.o' libtool=no @AMDEPBACKSLASH@
     1142@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1143@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
     1144
     1145Common/driver_cfa_cpp-SemanticError.obj: Common/SemanticError.cc
     1146@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`
     1147@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Tpo Common/$(DEPDIR)/driver_cfa_cpp-SemanticError.Po
     1148@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/SemanticError.cc' object='Common/driver_cfa_cpp-SemanticError.obj' libtool=no @AMDEPBACKSLASH@
     1149@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1150@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`
     1151
     1152Common/driver_cfa_cpp-UniqueName.o: Common/UniqueName.cc
     1153@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
     1154@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po
     1155@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/UniqueName.cc' object='Common/driver_cfa_cpp-UniqueName.o' libtool=no @AMDEPBACKSLASH@
     1156@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1157@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
     1158
     1159Common/driver_cfa_cpp-UniqueName.obj: Common/UniqueName.cc
     1160@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`
     1161@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Tpo Common/$(DEPDIR)/driver_cfa_cpp-UniqueName.Po
     1162@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Common/UniqueName.cc' object='Common/driver_cfa_cpp-UniqueName.obj' libtool=no @AMDEPBACKSLASH@
     1163@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1164@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`
     1165
     1166ControlStruct/driver_cfa_cpp-LabelGenerator.o: ControlStruct/LabelGenerator.cc
     1167@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
     1168@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Po
     1169@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelGenerator.cc' object='ControlStruct/driver_cfa_cpp-LabelGenerator.o' libtool=no @AMDEPBACKSLASH@
     1170@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1171@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
     1172
     1173ControlStruct/driver_cfa_cpp-LabelGenerator.obj: ControlStruct/LabelGenerator.cc
     1174@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`
     1175@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelGenerator.Po
     1176@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelGenerator.cc' object='ControlStruct/driver_cfa_cpp-LabelGenerator.obj' libtool=no @AMDEPBACKSLASH@
     1177@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1178@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`
     1179
     1180ControlStruct/driver_cfa_cpp-LabelFixer.o: ControlStruct/LabelFixer.cc
     1181@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
     1182@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po
     1183@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelFixer.cc' object='ControlStruct/driver_cfa_cpp-LabelFixer.o' libtool=no @AMDEPBACKSLASH@
     1184@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1185@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
     1186
     1187ControlStruct/driver_cfa_cpp-LabelFixer.obj: ControlStruct/LabelFixer.cc
     1188@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`
     1189@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelFixer.Po
     1190@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelFixer.cc' object='ControlStruct/driver_cfa_cpp-LabelFixer.obj' libtool=no @AMDEPBACKSLASH@
     1191@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1192@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`
     1193
     1194ControlStruct/driver_cfa_cpp-MLEMutator.o: ControlStruct/MLEMutator.cc
     1195@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
     1196@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Po
     1197@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/MLEMutator.cc' object='ControlStruct/driver_cfa_cpp-MLEMutator.o' libtool=no @AMDEPBACKSLASH@
     1198@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1199@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
     1200
     1201ControlStruct/driver_cfa_cpp-MLEMutator.obj: ControlStruct/MLEMutator.cc
     1202@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`
     1203@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-MLEMutator.Po
     1204@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/MLEMutator.cc' object='ControlStruct/driver_cfa_cpp-MLEMutator.obj' libtool=no @AMDEPBACKSLASH@
     1205@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1206@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`
     1207
     1208ControlStruct/driver_cfa_cpp-Mutate.o: ControlStruct/Mutate.cc
     1209@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
     1210@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
     1211@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/Mutate.cc' object='ControlStruct/driver_cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
     1212@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1213@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
     1214
     1215ControlStruct/driver_cfa_cpp-Mutate.obj: ControlStruct/Mutate.cc
     1216@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`
     1217@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
     1218@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/Mutate.cc' object='ControlStruct/driver_cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
     1219@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1220@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`
     1221
     1222ControlStruct/driver_cfa_cpp-ForExprMutator.o: ControlStruct/ForExprMutator.cc
     1223@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
     1224@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po
     1225@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/ForExprMutator.cc' object='ControlStruct/driver_cfa_cpp-ForExprMutator.o' libtool=no @AMDEPBACKSLASH@
     1226@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1227@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
     1228
     1229ControlStruct/driver_cfa_cpp-ForExprMutator.obj: ControlStruct/ForExprMutator.cc
     1230@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`
     1231@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-ForExprMutator.Po
     1232@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/ForExprMutator.cc' object='ControlStruct/driver_cfa_cpp-ForExprMutator.obj' libtool=no @AMDEPBACKSLASH@
     1233@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1234@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`
     1235
     1236ControlStruct/driver_cfa_cpp-LabelTypeChecker.o: ControlStruct/LabelTypeChecker.cc
     1237@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
     1238@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Po
     1239@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelTypeChecker.cc' object='ControlStruct/driver_cfa_cpp-LabelTypeChecker.o' libtool=no @AMDEPBACKSLASH@
     1240@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1241@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
     1242
     1243ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj: ControlStruct/LabelTypeChecker.cc
     1244@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`
     1245@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Tpo ControlStruct/$(DEPDIR)/driver_cfa_cpp-LabelTypeChecker.Po
     1246@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ControlStruct/LabelTypeChecker.cc' object='ControlStruct/driver_cfa_cpp-LabelTypeChecker.obj' libtool=no @AMDEPBACKSLASH@
     1247@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1248@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`
     1249
     1250Designators/driver_cfa_cpp-Processor.o: Designators/Processor.cc
     1251@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
     1252@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Tpo Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Po
     1253@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Designators/Processor.cc' object='Designators/driver_cfa_cpp-Processor.o' libtool=no @AMDEPBACKSLASH@
     1254@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1255@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
     1256
     1257Designators/driver_cfa_cpp-Processor.obj: Designators/Processor.cc
     1258@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`
     1259@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Tpo Designators/$(DEPDIR)/driver_cfa_cpp-Processor.Po
     1260@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Designators/Processor.cc' object='Designators/driver_cfa_cpp-Processor.obj' libtool=no @AMDEPBACKSLASH@
     1261@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1262@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`
     1263
     1264GenPoly/driver_cfa_cpp-Box.o: GenPoly/Box.cc
     1265@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
     1266@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Po
     1267@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Box.cc' object='GenPoly/driver_cfa_cpp-Box.o' libtool=no @AMDEPBACKSLASH@
     1268@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1269@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
     1270
     1271GenPoly/driver_cfa_cpp-Box.obj: GenPoly/Box.cc
     1272@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`
     1273@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Box.Po
     1274@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Box.cc' object='GenPoly/driver_cfa_cpp-Box.obj' libtool=no @AMDEPBACKSLASH@
     1275@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1276@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`
     1277
     1278GenPoly/driver_cfa_cpp-GenPoly.o: GenPoly/GenPoly.cc
     1279@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
     1280@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Po
     1281@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/GenPoly.cc' object='GenPoly/driver_cfa_cpp-GenPoly.o' libtool=no @AMDEPBACKSLASH@
     1282@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1283@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
     1284
     1285GenPoly/driver_cfa_cpp-GenPoly.obj: GenPoly/GenPoly.cc
     1286@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`
     1287@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-GenPoly.Po
     1288@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/GenPoly.cc' object='GenPoly/driver_cfa_cpp-GenPoly.obj' libtool=no @AMDEPBACKSLASH@
     1289@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1290@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`
     1291
     1292GenPoly/driver_cfa_cpp-PolyMutator.o: GenPoly/PolyMutator.cc
     1293@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
     1294@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Po
     1295@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/PolyMutator.cc' object='GenPoly/driver_cfa_cpp-PolyMutator.o' libtool=no @AMDEPBACKSLASH@
     1296@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1297@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
     1298
     1299GenPoly/driver_cfa_cpp-PolyMutator.obj: GenPoly/PolyMutator.cc
     1300@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`
     1301@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-PolyMutator.Po
     1302@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/PolyMutator.cc' object='GenPoly/driver_cfa_cpp-PolyMutator.obj' libtool=no @AMDEPBACKSLASH@
     1303@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1304@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`
     1305
     1306GenPoly/driver_cfa_cpp-ScrubTyVars.o: GenPoly/ScrubTyVars.cc
     1307@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
     1308@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po
     1309@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/ScrubTyVars.cc' object='GenPoly/driver_cfa_cpp-ScrubTyVars.o' libtool=no @AMDEPBACKSLASH@
     1310@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1311@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
     1312
     1313GenPoly/driver_cfa_cpp-ScrubTyVars.obj: GenPoly/ScrubTyVars.cc
     1314@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`
     1315@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-ScrubTyVars.Po
     1316@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/ScrubTyVars.cc' object='GenPoly/driver_cfa_cpp-ScrubTyVars.obj' libtool=no @AMDEPBACKSLASH@
     1317@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1318@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`
     1319
     1320GenPoly/driver_cfa_cpp-Lvalue.o: GenPoly/Lvalue.cc
     1321@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
     1322@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Po
     1323@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Lvalue.cc' object='GenPoly/driver_cfa_cpp-Lvalue.o' libtool=no @AMDEPBACKSLASH@
     1324@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1325@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
     1326
     1327GenPoly/driver_cfa_cpp-Lvalue.obj: GenPoly/Lvalue.cc
     1328@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`
     1329@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Lvalue.Po
     1330@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Lvalue.cc' object='GenPoly/driver_cfa_cpp-Lvalue.obj' libtool=no @AMDEPBACKSLASH@
     1331@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1332@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`
     1333
     1334GenPoly/driver_cfa_cpp-Specialize.o: GenPoly/Specialize.cc
     1335@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
     1336@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Po
     1337@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Specialize.cc' object='GenPoly/driver_cfa_cpp-Specialize.o' libtool=no @AMDEPBACKSLASH@
     1338@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1339@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
     1340
     1341GenPoly/driver_cfa_cpp-Specialize.obj: GenPoly/Specialize.cc
     1342@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`
     1343@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-Specialize.Po
     1344@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/Specialize.cc' object='GenPoly/driver_cfa_cpp-Specialize.obj' libtool=no @AMDEPBACKSLASH@
     1345@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1346@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`
     1347
     1348GenPoly/driver_cfa_cpp-CopyParams.o: GenPoly/CopyParams.cc
     1349@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
     1350@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Po
     1351@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/CopyParams.cc' object='GenPoly/driver_cfa_cpp-CopyParams.o' libtool=no @AMDEPBACKSLASH@
     1352@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1353@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
     1354
     1355GenPoly/driver_cfa_cpp-CopyParams.obj: GenPoly/CopyParams.cc
     1356@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`
     1357@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-CopyParams.Po
     1358@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/CopyParams.cc' object='GenPoly/driver_cfa_cpp-CopyParams.obj' libtool=no @AMDEPBACKSLASH@
     1359@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1360@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`
     1361
     1362GenPoly/driver_cfa_cpp-FindFunction.o: GenPoly/FindFunction.cc
     1363@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
     1364@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Po
     1365@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/FindFunction.cc' object='GenPoly/driver_cfa_cpp-FindFunction.o' libtool=no @AMDEPBACKSLASH@
     1366@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1367@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
     1368
     1369GenPoly/driver_cfa_cpp-FindFunction.obj: GenPoly/FindFunction.cc
     1370@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`
     1371@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-FindFunction.Po
     1372@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/FindFunction.cc' object='GenPoly/driver_cfa_cpp-FindFunction.obj' libtool=no @AMDEPBACKSLASH@
     1373@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1374@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`
     1375
     1376GenPoly/driver_cfa_cpp-DeclMutator.o: GenPoly/DeclMutator.cc
     1377@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
     1378@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Po
     1379@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/DeclMutator.cc' object='GenPoly/driver_cfa_cpp-DeclMutator.o' libtool=no @AMDEPBACKSLASH@
     1380@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1381@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
     1382
     1383GenPoly/driver_cfa_cpp-DeclMutator.obj: GenPoly/DeclMutator.cc
     1384@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`
     1385@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Tpo GenPoly/$(DEPDIR)/driver_cfa_cpp-DeclMutator.Po
     1386@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='GenPoly/DeclMutator.cc' object='GenPoly/driver_cfa_cpp-DeclMutator.obj' libtool=no @AMDEPBACKSLASH@
     1387@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1388@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`
     1389
     1390InitTweak/driver_cfa_cpp-GenInit.o: InitTweak/GenInit.cc
     1391@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
     1392@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Po
     1393@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/GenInit.cc' object='InitTweak/driver_cfa_cpp-GenInit.o' libtool=no @AMDEPBACKSLASH@
     1394@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1395@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
     1396
     1397InitTweak/driver_cfa_cpp-GenInit.obj: InitTweak/GenInit.cc
     1398@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`
     1399@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-GenInit.Po
     1400@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/GenInit.cc' object='InitTweak/driver_cfa_cpp-GenInit.obj' libtool=no @AMDEPBACKSLASH@
     1401@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1402@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`
     1403
     1404InitTweak/driver_cfa_cpp-FixInit.o: InitTweak/FixInit.cc
     1405@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
     1406@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po
     1407@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/FixInit.cc' object='InitTweak/driver_cfa_cpp-FixInit.o' libtool=no @AMDEPBACKSLASH@
     1408@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1409@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
     1410
     1411InitTweak/driver_cfa_cpp-FixInit.obj: InitTweak/FixInit.cc
     1412@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`
     1413@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixInit.Po
     1414@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/FixInit.cc' object='InitTweak/driver_cfa_cpp-FixInit.obj' libtool=no @AMDEPBACKSLASH@
     1415@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1416@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`
     1417
     1418InitTweak/driver_cfa_cpp-FixGlobalInit.o: InitTweak/FixGlobalInit.cc
     1419@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
     1420@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Po
     1421@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/FixGlobalInit.cc' object='InitTweak/driver_cfa_cpp-FixGlobalInit.o' libtool=no @AMDEPBACKSLASH@
     1422@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1423@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
     1424
     1425InitTweak/driver_cfa_cpp-FixGlobalInit.obj: InitTweak/FixGlobalInit.cc
     1426@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`
     1427@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-FixGlobalInit.Po
     1428@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/FixGlobalInit.cc' object='InitTweak/driver_cfa_cpp-FixGlobalInit.obj' libtool=no @AMDEPBACKSLASH@
     1429@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1430@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`
     1431
     1432InitTweak/driver_cfa_cpp-InitTweak.o: InitTweak/InitTweak.cc
     1433@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
     1434@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po
     1435@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/InitTweak.cc' object='InitTweak/driver_cfa_cpp-InitTweak.o' libtool=no @AMDEPBACKSLASH@
     1436@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1437@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
     1438
     1439InitTweak/driver_cfa_cpp-InitTweak.obj: InitTweak/InitTweak.cc
     1440@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`
     1441@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Tpo InitTweak/$(DEPDIR)/driver_cfa_cpp-InitTweak.Po
     1442@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='InitTweak/InitTweak.cc' object='InitTweak/driver_cfa_cpp-InitTweak.obj' libtool=no @AMDEPBACKSLASH@
     1443@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1444@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`
     1445
     1446Parser/driver_cfa_cpp-parser.o: Parser/parser.cc
     1447@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
     1448@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parser.Po
     1449@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/parser.cc' object='Parser/driver_cfa_cpp-parser.o' libtool=no @AMDEPBACKSLASH@
     1450@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1451@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
     1452
     1453Parser/driver_cfa_cpp-parser.obj: Parser/parser.cc
     1454@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`
     1455@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parser.Po
     1456@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/parser.cc' object='Parser/driver_cfa_cpp-parser.obj' libtool=no @AMDEPBACKSLASH@
     1457@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1458@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`
     1459
     1460Parser/driver_cfa_cpp-lex.o: Parser/lex.cc
     1461@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
     1462@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-lex.Po
     1463@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/lex.cc' object='Parser/driver_cfa_cpp-lex.o' libtool=no @AMDEPBACKSLASH@
     1464@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1465@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
     1466
     1467Parser/driver_cfa_cpp-lex.obj: Parser/lex.cc
     1468@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`
     1469@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-lex.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-lex.Po
     1470@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/lex.cc' object='Parser/driver_cfa_cpp-lex.obj' libtool=no @AMDEPBACKSLASH@
     1471@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1472@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`
     1473
     1474Parser/driver_cfa_cpp-TypedefTable.o: Parser/TypedefTable.cc
     1475@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
     1476@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Po
     1477@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/TypedefTable.cc' object='Parser/driver_cfa_cpp-TypedefTable.o' libtool=no @AMDEPBACKSLASH@
     1478@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1479@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
     1480
     1481Parser/driver_cfa_cpp-TypedefTable.obj: Parser/TypedefTable.cc
     1482@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`
     1483@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypedefTable.Po
     1484@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/TypedefTable.cc' object='Parser/driver_cfa_cpp-TypedefTable.obj' libtool=no @AMDEPBACKSLASH@
     1485@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1486@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`
     1487
     1488Parser/driver_cfa_cpp-ParseNode.o: Parser/ParseNode.cc
     1489@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
     1490@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po
     1491@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/ParseNode.cc' object='Parser/driver_cfa_cpp-ParseNode.o' libtool=no @AMDEPBACKSLASH@
     1492@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1493@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
     1494
     1495Parser/driver_cfa_cpp-ParseNode.obj: Parser/ParseNode.cc
     1496@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`
     1497@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ParseNode.Po
     1498@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/ParseNode.cc' object='Parser/driver_cfa_cpp-ParseNode.obj' libtool=no @AMDEPBACKSLASH@
     1499@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1500@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`
     1501
     1502Parser/driver_cfa_cpp-DeclarationNode.o: Parser/DeclarationNode.cc
     1503@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
     1504@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po
     1505@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/DeclarationNode.cc' object='Parser/driver_cfa_cpp-DeclarationNode.o' libtool=no @AMDEPBACKSLASH@
     1506@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1507@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
     1508
     1509Parser/driver_cfa_cpp-DeclarationNode.obj: Parser/DeclarationNode.cc
     1510@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`
     1511@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-DeclarationNode.Po
     1512@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/DeclarationNode.cc' object='Parser/driver_cfa_cpp-DeclarationNode.obj' libtool=no @AMDEPBACKSLASH@
     1513@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1514@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`
     1515
     1516Parser/driver_cfa_cpp-ExpressionNode.o: Parser/ExpressionNode.cc
     1517@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
     1518@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po
     1519@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/ExpressionNode.cc' object='Parser/driver_cfa_cpp-ExpressionNode.o' libtool=no @AMDEPBACKSLASH@
     1520@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1521@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
     1522
     1523Parser/driver_cfa_cpp-ExpressionNode.obj: Parser/ExpressionNode.cc
     1524@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`
     1525@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-ExpressionNode.Po
     1526@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/ExpressionNode.cc' object='Parser/driver_cfa_cpp-ExpressionNode.obj' libtool=no @AMDEPBACKSLASH@
     1527@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1528@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`
     1529
     1530Parser/driver_cfa_cpp-StatementNode.o: Parser/StatementNode.cc
     1531@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
     1532@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po
     1533@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/StatementNode.cc' object='Parser/driver_cfa_cpp-StatementNode.o' libtool=no @AMDEPBACKSLASH@
     1534@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1535@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
     1536
     1537Parser/driver_cfa_cpp-StatementNode.obj: Parser/StatementNode.cc
     1538@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`
     1539@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-StatementNode.Po
     1540@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/StatementNode.cc' object='Parser/driver_cfa_cpp-StatementNode.obj' libtool=no @AMDEPBACKSLASH@
     1541@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1542@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`
     1543
     1544Parser/driver_cfa_cpp-InitializerNode.o: Parser/InitializerNode.cc
     1545@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
     1546@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Po
     1547@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/InitializerNode.cc' object='Parser/driver_cfa_cpp-InitializerNode.o' libtool=no @AMDEPBACKSLASH@
     1548@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1549@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
     1550
     1551Parser/driver_cfa_cpp-InitializerNode.obj: Parser/InitializerNode.cc
     1552@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`
     1553@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-InitializerNode.Po
     1554@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/InitializerNode.cc' object='Parser/driver_cfa_cpp-InitializerNode.obj' libtool=no @AMDEPBACKSLASH@
     1555@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1556@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`
     1557
     1558Parser/driver_cfa_cpp-TypeData.o: Parser/TypeData.cc
     1559@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
     1560@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po
     1561@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/TypeData.cc' object='Parser/driver_cfa_cpp-TypeData.o' libtool=no @AMDEPBACKSLASH@
     1562@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1563@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
     1564
     1565Parser/driver_cfa_cpp-TypeData.obj: Parser/TypeData.cc
     1566@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`
     1567@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-TypeData.Po
     1568@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/TypeData.cc' object='Parser/driver_cfa_cpp-TypeData.obj' libtool=no @AMDEPBACKSLASH@
     1569@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1570@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`
     1571
     1572Parser/driver_cfa_cpp-LinkageSpec.o: Parser/LinkageSpec.cc
     1573@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
     1574@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po
     1575@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/LinkageSpec.cc' object='Parser/driver_cfa_cpp-LinkageSpec.o' libtool=no @AMDEPBACKSLASH@
     1576@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1577@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
     1578
     1579Parser/driver_cfa_cpp-LinkageSpec.obj: Parser/LinkageSpec.cc
     1580@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`
     1581@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-LinkageSpec.Po
     1582@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/LinkageSpec.cc' object='Parser/driver_cfa_cpp-LinkageSpec.obj' libtool=no @AMDEPBACKSLASH@
     1583@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1584@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`
     1585
     1586Parser/driver_cfa_cpp-parseutility.o: Parser/parseutility.cc
     1587@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
     1588@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Po
     1589@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/parseutility.cc' object='Parser/driver_cfa_cpp-parseutility.o' libtool=no @AMDEPBACKSLASH@
     1590@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1591@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
     1592
     1593Parser/driver_cfa_cpp-parseutility.obj: Parser/parseutility.cc
     1594@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`
     1595@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-parseutility.Po
     1596@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/parseutility.cc' object='Parser/driver_cfa_cpp-parseutility.obj' libtool=no @AMDEPBACKSLASH@
     1597@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1598@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`
     1599
     1600Parser/driver_cfa_cpp-Parser.o: Parser/Parser.cc
     1601@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
     1602@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po
     1603@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.o' libtool=no @AMDEPBACKSLASH@
     1604@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1605@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
     1606
     1607Parser/driver_cfa_cpp-Parser.obj: Parser/Parser.cc
     1608@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`
     1609@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Tpo Parser/$(DEPDIR)/driver_cfa_cpp-Parser.Po
     1610@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Parser/Parser.cc' object='Parser/driver_cfa_cpp-Parser.obj' libtool=no @AMDEPBACKSLASH@
     1611@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1612@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`
     1613
     1614ResolvExpr/driver_cfa_cpp-AlternativeFinder.o: ResolvExpr/AlternativeFinder.cc
     1615@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
     1616@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Po
     1617@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/driver_cfa_cpp-AlternativeFinder.o' libtool=no @AMDEPBACKSLASH@
     1618@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1619@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
     1620
     1621ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj: ResolvExpr/AlternativeFinder.cc
     1622@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`
     1623@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativeFinder.Po
     1624@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AlternativeFinder.cc' object='ResolvExpr/driver_cfa_cpp-AlternativeFinder.obj' libtool=no @AMDEPBACKSLASH@
     1625@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1626@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`
     1627
     1628ResolvExpr/driver_cfa_cpp-Alternative.o: ResolvExpr/Alternative.cc
     1629@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
     1630@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Po
     1631@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Alternative.cc' object='ResolvExpr/driver_cfa_cpp-Alternative.o' libtool=no @AMDEPBACKSLASH@
     1632@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1633@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
     1634
     1635ResolvExpr/driver_cfa_cpp-Alternative.obj: ResolvExpr/Alternative.cc
     1636@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`
     1637@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Alternative.Po
     1638@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Alternative.cc' object='ResolvExpr/driver_cfa_cpp-Alternative.obj' libtool=no @AMDEPBACKSLASH@
     1639@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1640@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`
     1641
     1642ResolvExpr/driver_cfa_cpp-Unify.o: ResolvExpr/Unify.cc
     1643@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
     1644@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po
     1645@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Unify.cc' object='ResolvExpr/driver_cfa_cpp-Unify.o' libtool=no @AMDEPBACKSLASH@
     1646@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1647@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
     1648
     1649ResolvExpr/driver_cfa_cpp-Unify.obj: ResolvExpr/Unify.cc
     1650@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`
     1651@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Unify.Po
     1652@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Unify.cc' object='ResolvExpr/driver_cfa_cpp-Unify.obj' libtool=no @AMDEPBACKSLASH@
     1653@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1654@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`
     1655
     1656ResolvExpr/driver_cfa_cpp-PtrsAssignable.o: ResolvExpr/PtrsAssignable.cc
     1657@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
     1658@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Po
     1659@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsAssignable.o' libtool=no @AMDEPBACKSLASH@
     1660@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1661@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
     1662
     1663ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj: ResolvExpr/PtrsAssignable.cc
     1664@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`
     1665@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsAssignable.Po
     1666@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PtrsAssignable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsAssignable.obj' libtool=no @AMDEPBACKSLASH@
     1667@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1668@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`
     1669
     1670ResolvExpr/driver_cfa_cpp-CommonType.o: ResolvExpr/CommonType.cc
     1671@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
     1672@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Po
     1673@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/CommonType.cc' object='ResolvExpr/driver_cfa_cpp-CommonType.o' libtool=no @AMDEPBACKSLASH@
     1674@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1675@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
     1676
     1677ResolvExpr/driver_cfa_cpp-CommonType.obj: ResolvExpr/CommonType.cc
     1678@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`
     1679@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CommonType.Po
     1680@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/CommonType.cc' object='ResolvExpr/driver_cfa_cpp-CommonType.obj' libtool=no @AMDEPBACKSLASH@
     1681@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1682@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`
     1683
     1684ResolvExpr/driver_cfa_cpp-ConversionCost.o: ResolvExpr/ConversionCost.cc
     1685@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
     1686@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Po
     1687@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/driver_cfa_cpp-ConversionCost.o' libtool=no @AMDEPBACKSLASH@
     1688@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1689@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
     1690
     1691ResolvExpr/driver_cfa_cpp-ConversionCost.obj: ResolvExpr/ConversionCost.cc
     1692@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`
     1693@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ConversionCost.Po
     1694@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/ConversionCost.cc' object='ResolvExpr/driver_cfa_cpp-ConversionCost.obj' libtool=no @AMDEPBACKSLASH@
     1695@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1696@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`
     1697
     1698ResolvExpr/driver_cfa_cpp-CastCost.o: ResolvExpr/CastCost.cc
     1699@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
     1700@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Po
     1701@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/CastCost.cc' object='ResolvExpr/driver_cfa_cpp-CastCost.o' libtool=no @AMDEPBACKSLASH@
     1702@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1703@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
     1704
     1705ResolvExpr/driver_cfa_cpp-CastCost.obj: ResolvExpr/CastCost.cc
     1706@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`
     1707@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-CastCost.Po
     1708@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/CastCost.cc' object='ResolvExpr/driver_cfa_cpp-CastCost.obj' libtool=no @AMDEPBACKSLASH@
     1709@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1710@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`
     1711
     1712ResolvExpr/driver_cfa_cpp-PtrsCastable.o: ResolvExpr/PtrsCastable.cc
     1713@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
     1714@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Po
     1715@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsCastable.o' libtool=no @AMDEPBACKSLASH@
     1716@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1717@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
     1718
     1719ResolvExpr/driver_cfa_cpp-PtrsCastable.obj: ResolvExpr/PtrsCastable.cc
     1720@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`
     1721@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PtrsCastable.Po
     1722@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PtrsCastable.cc' object='ResolvExpr/driver_cfa_cpp-PtrsCastable.obj' libtool=no @AMDEPBACKSLASH@
     1723@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1724@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`
     1725
     1726ResolvExpr/driver_cfa_cpp-AdjustExprType.o: ResolvExpr/AdjustExprType.cc
     1727@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
     1728@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Po
     1729@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/driver_cfa_cpp-AdjustExprType.o' libtool=no @AMDEPBACKSLASH@
     1730@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1731@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
     1732
     1733ResolvExpr/driver_cfa_cpp-AdjustExprType.obj: ResolvExpr/AdjustExprType.cc
     1734@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`
     1735@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AdjustExprType.Po
     1736@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AdjustExprType.cc' object='ResolvExpr/driver_cfa_cpp-AdjustExprType.obj' libtool=no @AMDEPBACKSLASH@
     1737@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1738@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`
     1739
     1740ResolvExpr/driver_cfa_cpp-AlternativePrinter.o: ResolvExpr/AlternativePrinter.cc
     1741@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
     1742@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Po
     1743@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/driver_cfa_cpp-AlternativePrinter.o' libtool=no @AMDEPBACKSLASH@
     1744@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1745@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
     1746
     1747ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj: ResolvExpr/AlternativePrinter.cc
     1748@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`
     1749@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-AlternativePrinter.Po
     1750@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/AlternativePrinter.cc' object='ResolvExpr/driver_cfa_cpp-AlternativePrinter.obj' libtool=no @AMDEPBACKSLASH@
     1751@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1752@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`
     1753
     1754ResolvExpr/driver_cfa_cpp-Resolver.o: ResolvExpr/Resolver.cc
     1755@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
     1756@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Po
     1757@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Resolver.cc' object='ResolvExpr/driver_cfa_cpp-Resolver.o' libtool=no @AMDEPBACKSLASH@
     1758@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1759@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
     1760
     1761ResolvExpr/driver_cfa_cpp-Resolver.obj: ResolvExpr/Resolver.cc
     1762@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`
     1763@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Resolver.Po
     1764@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Resolver.cc' object='ResolvExpr/driver_cfa_cpp-Resolver.obj' libtool=no @AMDEPBACKSLASH@
     1765@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1766@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`
     1767
     1768ResolvExpr/driver_cfa_cpp-ResolveTypeof.o: ResolvExpr/ResolveTypeof.cc
     1769@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
     1770@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Po
     1771@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/driver_cfa_cpp-ResolveTypeof.o' libtool=no @AMDEPBACKSLASH@
     1772@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1773@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
     1774
     1775ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj: ResolvExpr/ResolveTypeof.cc
     1776@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`
     1777@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-ResolveTypeof.Po
     1778@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/ResolveTypeof.cc' object='ResolvExpr/driver_cfa_cpp-ResolveTypeof.obj' libtool=no @AMDEPBACKSLASH@
     1779@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1780@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`
     1781
     1782ResolvExpr/driver_cfa_cpp-RenameVars.o: ResolvExpr/RenameVars.cc
     1783@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
     1784@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Po
     1785@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/RenameVars.cc' object='ResolvExpr/driver_cfa_cpp-RenameVars.o' libtool=no @AMDEPBACKSLASH@
     1786@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1787@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
     1788
     1789ResolvExpr/driver_cfa_cpp-RenameVars.obj: ResolvExpr/RenameVars.cc
     1790@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`
     1791@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-RenameVars.Po
     1792@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/RenameVars.cc' object='ResolvExpr/driver_cfa_cpp-RenameVars.obj' libtool=no @AMDEPBACKSLASH@
     1793@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1794@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`
     1795
     1796ResolvExpr/driver_cfa_cpp-FindOpenVars.o: ResolvExpr/FindOpenVars.cc
     1797@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
     1798@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Po
     1799@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/driver_cfa_cpp-FindOpenVars.o' libtool=no @AMDEPBACKSLASH@
     1800@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1801@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
     1802
     1803ResolvExpr/driver_cfa_cpp-FindOpenVars.obj: ResolvExpr/FindOpenVars.cc
     1804@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`
     1805@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-FindOpenVars.Po
     1806@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/FindOpenVars.cc' object='ResolvExpr/driver_cfa_cpp-FindOpenVars.obj' libtool=no @AMDEPBACKSLASH@
     1807@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1808@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`
     1809
     1810ResolvExpr/driver_cfa_cpp-PolyCost.o: ResolvExpr/PolyCost.cc
     1811@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
     1812@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Po
     1813@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PolyCost.cc' object='ResolvExpr/driver_cfa_cpp-PolyCost.o' libtool=no @AMDEPBACKSLASH@
     1814@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1815@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
     1816
     1817ResolvExpr/driver_cfa_cpp-PolyCost.obj: ResolvExpr/PolyCost.cc
     1818@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`
     1819@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-PolyCost.Po
     1820@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/PolyCost.cc' object='ResolvExpr/driver_cfa_cpp-PolyCost.obj' libtool=no @AMDEPBACKSLASH@
     1821@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1822@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`
     1823
     1824ResolvExpr/driver_cfa_cpp-Occurs.o: ResolvExpr/Occurs.cc
     1825@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
     1826@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Po
     1827@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Occurs.cc' object='ResolvExpr/driver_cfa_cpp-Occurs.o' libtool=no @AMDEPBACKSLASH@
     1828@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1829@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
     1830
     1831ResolvExpr/driver_cfa_cpp-Occurs.obj: ResolvExpr/Occurs.cc
     1832@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`
     1833@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-Occurs.Po
     1834@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/Occurs.cc' object='ResolvExpr/driver_cfa_cpp-Occurs.obj' libtool=no @AMDEPBACKSLASH@
     1835@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1836@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`
     1837
     1838ResolvExpr/driver_cfa_cpp-TypeEnvironment.o: ResolvExpr/TypeEnvironment.cc
     1839@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
     1840@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po
     1841@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/driver_cfa_cpp-TypeEnvironment.o' libtool=no @AMDEPBACKSLASH@
     1842@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1843@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
     1844
     1845ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj: ResolvExpr/TypeEnvironment.cc
     1846@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`
     1847@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Tpo ResolvExpr/$(DEPDIR)/driver_cfa_cpp-TypeEnvironment.Po
     1848@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='ResolvExpr/TypeEnvironment.cc' object='ResolvExpr/driver_cfa_cpp-TypeEnvironment.obj' libtool=no @AMDEPBACKSLASH@
     1849@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1850@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`
     1851
     1852SymTab/driver_cfa_cpp-Indexer.o: SymTab/Indexer.cc
     1853@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
     1854@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Po
     1855@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Indexer.cc' object='SymTab/driver_cfa_cpp-Indexer.o' libtool=no @AMDEPBACKSLASH@
     1856@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1857@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
     1858
     1859SymTab/driver_cfa_cpp-Indexer.obj: SymTab/Indexer.cc
     1860@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`
     1861@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Indexer.Po
     1862@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Indexer.cc' object='SymTab/driver_cfa_cpp-Indexer.obj' libtool=no @AMDEPBACKSLASH@
     1863@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1864@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`
     1865
     1866SymTab/driver_cfa_cpp-Mangler.o: SymTab/Mangler.cc
     1867@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
     1868@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Po
     1869@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Mangler.cc' object='SymTab/driver_cfa_cpp-Mangler.o' libtool=no @AMDEPBACKSLASH@
     1870@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1871@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
     1872
     1873SymTab/driver_cfa_cpp-Mangler.obj: SymTab/Mangler.cc
     1874@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`
     1875@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Mangler.Po
     1876@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Mangler.cc' object='SymTab/driver_cfa_cpp-Mangler.obj' libtool=no @AMDEPBACKSLASH@
     1877@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1878@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`
     1879
     1880SymTab/driver_cfa_cpp-Validate.o: SymTab/Validate.cc
     1881@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
     1882@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Po
     1883@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Validate.cc' object='SymTab/driver_cfa_cpp-Validate.o' libtool=no @AMDEPBACKSLASH@
     1884@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1885@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
     1886
     1887SymTab/driver_cfa_cpp-Validate.obj: SymTab/Validate.cc
     1888@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`
     1889@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Validate.Po
     1890@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Validate.cc' object='SymTab/driver_cfa_cpp-Validate.obj' libtool=no @AMDEPBACKSLASH@
     1891@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1892@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`
     1893
     1894SymTab/driver_cfa_cpp-FixFunction.o: SymTab/FixFunction.cc
     1895@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
     1896@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po
     1897@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/FixFunction.cc' object='SymTab/driver_cfa_cpp-FixFunction.o' libtool=no @AMDEPBACKSLASH@
     1898@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1899@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
     1900
     1901SymTab/driver_cfa_cpp-FixFunction.obj: SymTab/FixFunction.cc
     1902@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`
     1903@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-FixFunction.Po
     1904@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/FixFunction.cc' object='SymTab/driver_cfa_cpp-FixFunction.obj' libtool=no @AMDEPBACKSLASH@
     1905@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1906@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`
     1907
     1908SymTab/driver_cfa_cpp-ImplementationType.o: SymTab/ImplementationType.cc
     1909@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
     1910@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Po
     1911@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/ImplementationType.cc' object='SymTab/driver_cfa_cpp-ImplementationType.o' libtool=no @AMDEPBACKSLASH@
     1912@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1913@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
     1914
     1915SymTab/driver_cfa_cpp-ImplementationType.obj: SymTab/ImplementationType.cc
     1916@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`
     1917@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-ImplementationType.Po
     1918@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/ImplementationType.cc' object='SymTab/driver_cfa_cpp-ImplementationType.obj' libtool=no @AMDEPBACKSLASH@
     1919@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1920@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`
     1921
     1922SymTab/driver_cfa_cpp-TypeEquality.o: SymTab/TypeEquality.cc
     1923@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
     1924@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Po
     1925@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/TypeEquality.cc' object='SymTab/driver_cfa_cpp-TypeEquality.o' libtool=no @AMDEPBACKSLASH@
     1926@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1927@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
     1928
     1929SymTab/driver_cfa_cpp-TypeEquality.obj: SymTab/TypeEquality.cc
     1930@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`
     1931@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-TypeEquality.Po
     1932@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/TypeEquality.cc' object='SymTab/driver_cfa_cpp-TypeEquality.obj' libtool=no @AMDEPBACKSLASH@
     1933@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1934@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`
     1935
     1936SymTab/driver_cfa_cpp-Autogen.o: SymTab/Autogen.cc
     1937@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
     1938@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Po
     1939@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Autogen.cc' object='SymTab/driver_cfa_cpp-Autogen.o' libtool=no @AMDEPBACKSLASH@
     1940@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1941@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
     1942
     1943SymTab/driver_cfa_cpp-Autogen.obj: SymTab/Autogen.cc
     1944@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`
     1945@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Tpo SymTab/$(DEPDIR)/driver_cfa_cpp-Autogen.Po
     1946@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SymTab/Autogen.cc' object='SymTab/driver_cfa_cpp-Autogen.obj' libtool=no @AMDEPBACKSLASH@
     1947@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1948@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`
     1949
     1950SynTree/driver_cfa_cpp-Type.o: SynTree/Type.cc
     1951@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
     1952@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Po
     1953@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Type.cc' object='SynTree/driver_cfa_cpp-Type.o' libtool=no @AMDEPBACKSLASH@
     1954@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1955@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
     1956
     1957SynTree/driver_cfa_cpp-Type.obj: SynTree/Type.cc
     1958@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`
     1959@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Type.Po
     1960@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Type.cc' object='SynTree/driver_cfa_cpp-Type.obj' libtool=no @AMDEPBACKSLASH@
     1961@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1962@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`
     1963
     1964SynTree/driver_cfa_cpp-VoidType.o: SynTree/VoidType.cc
     1965@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
     1966@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po
     1967@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/VoidType.cc' object='SynTree/driver_cfa_cpp-VoidType.o' libtool=no @AMDEPBACKSLASH@
     1968@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1969@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
     1970
     1971SynTree/driver_cfa_cpp-VoidType.obj: SynTree/VoidType.cc
     1972@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`
     1973@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VoidType.Po
     1974@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/VoidType.cc' object='SynTree/driver_cfa_cpp-VoidType.obj' libtool=no @AMDEPBACKSLASH@
     1975@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1976@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`
     1977
     1978SynTree/driver_cfa_cpp-BasicType.o: SynTree/BasicType.cc
     1979@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
     1980@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po
     1981@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/BasicType.cc' object='SynTree/driver_cfa_cpp-BasicType.o' libtool=no @AMDEPBACKSLASH@
     1982@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1983@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
     1984
     1985SynTree/driver_cfa_cpp-BasicType.obj: SynTree/BasicType.cc
     1986@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`
     1987@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-BasicType.Po
     1988@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/BasicType.cc' object='SynTree/driver_cfa_cpp-BasicType.obj' libtool=no @AMDEPBACKSLASH@
     1989@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1990@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`
     1991
     1992SynTree/driver_cfa_cpp-PointerType.o: SynTree/PointerType.cc
     1993@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
     1994@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Po
     1995@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/PointerType.cc' object='SynTree/driver_cfa_cpp-PointerType.o' libtool=no @AMDEPBACKSLASH@
     1996@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     1997@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
     1998
     1999SynTree/driver_cfa_cpp-PointerType.obj: SynTree/PointerType.cc
     2000@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`
     2001@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-PointerType.Po
     2002@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/PointerType.cc' object='SynTree/driver_cfa_cpp-PointerType.obj' libtool=no @AMDEPBACKSLASH@
     2003@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2004@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`
     2005
     2006SynTree/driver_cfa_cpp-ArrayType.o: SynTree/ArrayType.cc
     2007@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
     2008@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po
     2009@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ArrayType.cc' object='SynTree/driver_cfa_cpp-ArrayType.o' libtool=no @AMDEPBACKSLASH@
     2010@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2011@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
     2012
     2013SynTree/driver_cfa_cpp-ArrayType.obj: SynTree/ArrayType.cc
     2014@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`
     2015@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ArrayType.Po
     2016@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ArrayType.cc' object='SynTree/driver_cfa_cpp-ArrayType.obj' libtool=no @AMDEPBACKSLASH@
     2017@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2018@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`
     2019
     2020SynTree/driver_cfa_cpp-FunctionType.o: SynTree/FunctionType.cc
     2021@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
     2022@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Po
     2023@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/FunctionType.cc' object='SynTree/driver_cfa_cpp-FunctionType.o' libtool=no @AMDEPBACKSLASH@
     2024@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2025@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
     2026
     2027SynTree/driver_cfa_cpp-FunctionType.obj: SynTree/FunctionType.cc
     2028@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`
     2029@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionType.Po
     2030@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/FunctionType.cc' object='SynTree/driver_cfa_cpp-FunctionType.obj' libtool=no @AMDEPBACKSLASH@
     2031@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2032@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`
     2033
     2034SynTree/driver_cfa_cpp-ReferenceToType.o: SynTree/ReferenceToType.cc
     2035@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
     2036@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Po
     2037@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ReferenceToType.cc' object='SynTree/driver_cfa_cpp-ReferenceToType.o' libtool=no @AMDEPBACKSLASH@
     2038@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2039@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
     2040
     2041SynTree/driver_cfa_cpp-ReferenceToType.obj: SynTree/ReferenceToType.cc
     2042@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`
     2043@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ReferenceToType.Po
     2044@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ReferenceToType.cc' object='SynTree/driver_cfa_cpp-ReferenceToType.obj' libtool=no @AMDEPBACKSLASH@
     2045@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2046@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`
     2047
     2048SynTree/driver_cfa_cpp-TupleType.o: SynTree/TupleType.cc
     2049@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
     2050@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Po
     2051@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TupleType.cc' object='SynTree/driver_cfa_cpp-TupleType.o' libtool=no @AMDEPBACKSLASH@
     2052@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2053@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
     2054
     2055SynTree/driver_cfa_cpp-TupleType.obj: SynTree/TupleType.cc
     2056@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`
     2057@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleType.Po
     2058@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TupleType.cc' object='SynTree/driver_cfa_cpp-TupleType.obj' libtool=no @AMDEPBACKSLASH@
     2059@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2060@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`
     2061
     2062SynTree/driver_cfa_cpp-TypeofType.o: SynTree/TypeofType.cc
     2063@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
     2064@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po
     2065@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeofType.cc' object='SynTree/driver_cfa_cpp-TypeofType.o' libtool=no @AMDEPBACKSLASH@
     2066@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2067@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
     2068
     2069SynTree/driver_cfa_cpp-TypeofType.obj: SynTree/TypeofType.cc
     2070@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`
     2071@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeofType.Po
     2072@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeofType.cc' object='SynTree/driver_cfa_cpp-TypeofType.obj' libtool=no @AMDEPBACKSLASH@
     2073@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2074@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`
     2075
     2076SynTree/driver_cfa_cpp-AttrType.o: SynTree/AttrType.cc
     2077@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
     2078@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po
     2079@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AttrType.cc' object='SynTree/driver_cfa_cpp-AttrType.o' libtool=no @AMDEPBACKSLASH@
     2080@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2081@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
     2082
     2083SynTree/driver_cfa_cpp-AttrType.obj: SynTree/AttrType.cc
     2084@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`
     2085@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AttrType.Po
     2086@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AttrType.cc' object='SynTree/driver_cfa_cpp-AttrType.obj' libtool=no @AMDEPBACKSLASH@
     2087@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2088@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`
     2089
     2090SynTree/driver_cfa_cpp-VarArgsType.o: SynTree/VarArgsType.cc
     2091@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
     2092@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po
     2093@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.o' libtool=no @AMDEPBACKSLASH@
     2094@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2095@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
     2096
     2097SynTree/driver_cfa_cpp-VarArgsType.obj: SynTree/VarArgsType.cc
     2098@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`
     2099@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-VarArgsType.Po
     2100@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/VarArgsType.cc' object='SynTree/driver_cfa_cpp-VarArgsType.obj' libtool=no @AMDEPBACKSLASH@
     2101@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2102@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`
     2103
     2104SynTree/driver_cfa_cpp-Constant.o: SynTree/Constant.cc
     2105@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
     2106@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Po
     2107@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Constant.cc' object='SynTree/driver_cfa_cpp-Constant.o' libtool=no @AMDEPBACKSLASH@
     2108@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2109@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
     2110
     2111SynTree/driver_cfa_cpp-Constant.obj: SynTree/Constant.cc
     2112@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`
     2113@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Constant.Po
     2114@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Constant.cc' object='SynTree/driver_cfa_cpp-Constant.obj' libtool=no @AMDEPBACKSLASH@
     2115@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2116@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`
     2117
     2118SynTree/driver_cfa_cpp-Expression.o: SynTree/Expression.cc
     2119@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
     2120@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Po
     2121@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Expression.cc' object='SynTree/driver_cfa_cpp-Expression.o' libtool=no @AMDEPBACKSLASH@
     2122@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2123@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
     2124
     2125SynTree/driver_cfa_cpp-Expression.obj: SynTree/Expression.cc
     2126@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`
     2127@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Expression.Po
     2128@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Expression.cc' object='SynTree/driver_cfa_cpp-Expression.obj' libtool=no @AMDEPBACKSLASH@
     2129@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2130@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`
     2131
     2132SynTree/driver_cfa_cpp-TupleExpr.o: SynTree/TupleExpr.cc
     2133@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
     2134@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Po
     2135@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TupleExpr.cc' object='SynTree/driver_cfa_cpp-TupleExpr.o' libtool=no @AMDEPBACKSLASH@
     2136@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2137@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
     2138
     2139SynTree/driver_cfa_cpp-TupleExpr.obj: SynTree/TupleExpr.cc
     2140@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`
     2141@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TupleExpr.Po
     2142@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TupleExpr.cc' object='SynTree/driver_cfa_cpp-TupleExpr.obj' libtool=no @AMDEPBACKSLASH@
     2143@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2144@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`
     2145
     2146SynTree/driver_cfa_cpp-CommaExpr.o: SynTree/CommaExpr.cc
     2147@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
     2148@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po
     2149@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/CommaExpr.cc' object='SynTree/driver_cfa_cpp-CommaExpr.o' libtool=no @AMDEPBACKSLASH@
     2150@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2151@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
     2152
     2153SynTree/driver_cfa_cpp-CommaExpr.obj: SynTree/CommaExpr.cc
     2154@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`
     2155@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CommaExpr.Po
     2156@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/CommaExpr.cc' object='SynTree/driver_cfa_cpp-CommaExpr.obj' libtool=no @AMDEPBACKSLASH@
     2157@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2158@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`
     2159
     2160SynTree/driver_cfa_cpp-TypeExpr.o: SynTree/TypeExpr.cc
     2161@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
     2162@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Po
     2163@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeExpr.cc' object='SynTree/driver_cfa_cpp-TypeExpr.o' libtool=no @AMDEPBACKSLASH@
     2164@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2165@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
     2166
     2167SynTree/driver_cfa_cpp-TypeExpr.obj: SynTree/TypeExpr.cc
     2168@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`
     2169@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeExpr.Po
     2170@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeExpr.cc' object='SynTree/driver_cfa_cpp-TypeExpr.obj' libtool=no @AMDEPBACKSLASH@
     2171@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2172@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`
     2173
     2174SynTree/driver_cfa_cpp-ApplicationExpr.o: SynTree/ApplicationExpr.cc
     2175@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
     2176@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Po
     2177@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ApplicationExpr.cc' object='SynTree/driver_cfa_cpp-ApplicationExpr.o' libtool=no @AMDEPBACKSLASH@
     2178@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2179@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
     2180
     2181SynTree/driver_cfa_cpp-ApplicationExpr.obj: SynTree/ApplicationExpr.cc
     2182@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`
     2183@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ApplicationExpr.Po
     2184@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ApplicationExpr.cc' object='SynTree/driver_cfa_cpp-ApplicationExpr.obj' libtool=no @AMDEPBACKSLASH@
     2185@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2186@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`
     2187
     2188SynTree/driver_cfa_cpp-AddressExpr.o: SynTree/AddressExpr.cc
     2189@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
     2190@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po
     2191@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AddressExpr.cc' object='SynTree/driver_cfa_cpp-AddressExpr.o' libtool=no @AMDEPBACKSLASH@
     2192@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2193@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
     2194
     2195SynTree/driver_cfa_cpp-AddressExpr.obj: SynTree/AddressExpr.cc
     2196@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`
     2197@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddressExpr.Po
     2198@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AddressExpr.cc' object='SynTree/driver_cfa_cpp-AddressExpr.obj' libtool=no @AMDEPBACKSLASH@
     2199@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2200@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`
     2201
     2202SynTree/driver_cfa_cpp-Statement.o: SynTree/Statement.cc
     2203@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
     2204@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Po
     2205@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Statement.cc' object='SynTree/driver_cfa_cpp-Statement.o' libtool=no @AMDEPBACKSLASH@
     2206@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2207@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
     2208
     2209SynTree/driver_cfa_cpp-Statement.obj: SynTree/Statement.cc
     2210@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`
     2211@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Statement.Po
     2212@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Statement.cc' object='SynTree/driver_cfa_cpp-Statement.obj' libtool=no @AMDEPBACKSLASH@
     2213@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2214@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`
     2215
     2216SynTree/driver_cfa_cpp-CompoundStmt.o: SynTree/CompoundStmt.cc
     2217@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
     2218@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po
     2219@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/CompoundStmt.cc' object='SynTree/driver_cfa_cpp-CompoundStmt.o' libtool=no @AMDEPBACKSLASH@
     2220@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2221@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
     2222
     2223SynTree/driver_cfa_cpp-CompoundStmt.obj: SynTree/CompoundStmt.cc
     2224@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`
     2225@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-CompoundStmt.Po
     2226@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/CompoundStmt.cc' object='SynTree/driver_cfa_cpp-CompoundStmt.obj' libtool=no @AMDEPBACKSLASH@
     2227@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2228@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`
     2229
     2230SynTree/driver_cfa_cpp-DeclStmt.o: SynTree/DeclStmt.cc
     2231@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
     2232@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Po
     2233@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/DeclStmt.cc' object='SynTree/driver_cfa_cpp-DeclStmt.o' libtool=no @AMDEPBACKSLASH@
     2234@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2235@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
     2236
     2237SynTree/driver_cfa_cpp-DeclStmt.obj: SynTree/DeclStmt.cc
     2238@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`
     2239@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclStmt.Po
     2240@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/DeclStmt.cc' object='SynTree/driver_cfa_cpp-DeclStmt.obj' libtool=no @AMDEPBACKSLASH@
     2241@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2242@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`
     2243
     2244SynTree/driver_cfa_cpp-Declaration.o: SynTree/Declaration.cc
     2245@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
     2246@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Po
     2247@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Declaration.cc' object='SynTree/driver_cfa_cpp-Declaration.o' libtool=no @AMDEPBACKSLASH@
     2248@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2249@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
     2250
     2251SynTree/driver_cfa_cpp-Declaration.obj: SynTree/Declaration.cc
     2252@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`
     2253@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Declaration.Po
     2254@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Declaration.cc' object='SynTree/driver_cfa_cpp-Declaration.obj' libtool=no @AMDEPBACKSLASH@
     2255@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2256@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`
     2257
     2258SynTree/driver_cfa_cpp-DeclarationWithType.o: SynTree/DeclarationWithType.cc
     2259@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
     2260@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Po
     2261@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/DeclarationWithType.cc' object='SynTree/driver_cfa_cpp-DeclarationWithType.o' libtool=no @AMDEPBACKSLASH@
     2262@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2263@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
     2264
     2265SynTree/driver_cfa_cpp-DeclarationWithType.obj: SynTree/DeclarationWithType.cc
     2266@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`
     2267@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-DeclarationWithType.Po
     2268@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/DeclarationWithType.cc' object='SynTree/driver_cfa_cpp-DeclarationWithType.obj' libtool=no @AMDEPBACKSLASH@
     2269@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2270@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`
     2271
     2272SynTree/driver_cfa_cpp-ObjectDecl.o: SynTree/ObjectDecl.cc
     2273@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
     2274@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Po
     2275@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ObjectDecl.cc' object='SynTree/driver_cfa_cpp-ObjectDecl.o' libtool=no @AMDEPBACKSLASH@
     2276@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2277@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
     2278
     2279SynTree/driver_cfa_cpp-ObjectDecl.obj: SynTree/ObjectDecl.cc
     2280@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`
     2281@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-ObjectDecl.Po
     2282@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/ObjectDecl.cc' object='SynTree/driver_cfa_cpp-ObjectDecl.obj' libtool=no @AMDEPBACKSLASH@
     2283@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2284@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`
     2285
     2286SynTree/driver_cfa_cpp-FunctionDecl.o: SynTree/FunctionDecl.cc
     2287@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
     2288@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Po
     2289@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/FunctionDecl.cc' object='SynTree/driver_cfa_cpp-FunctionDecl.o' libtool=no @AMDEPBACKSLASH@
     2290@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2291@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
     2292
     2293SynTree/driver_cfa_cpp-FunctionDecl.obj: SynTree/FunctionDecl.cc
     2294@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`
     2295@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-FunctionDecl.Po
     2296@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/FunctionDecl.cc' object='SynTree/driver_cfa_cpp-FunctionDecl.obj' libtool=no @AMDEPBACKSLASH@
     2297@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2298@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`
     2299
     2300SynTree/driver_cfa_cpp-AggregateDecl.o: SynTree/AggregateDecl.cc
     2301@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
     2302@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po
     2303@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AggregateDecl.cc' object='SynTree/driver_cfa_cpp-AggregateDecl.o' libtool=no @AMDEPBACKSLASH@
     2304@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2305@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
     2306
     2307SynTree/driver_cfa_cpp-AggregateDecl.obj: SynTree/AggregateDecl.cc
     2308@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`
     2309@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AggregateDecl.Po
     2310@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AggregateDecl.cc' object='SynTree/driver_cfa_cpp-AggregateDecl.obj' libtool=no @AMDEPBACKSLASH@
     2311@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2312@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`
     2313
     2314SynTree/driver_cfa_cpp-NamedTypeDecl.o: SynTree/NamedTypeDecl.cc
     2315@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
     2316@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Po
     2317@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/NamedTypeDecl.cc' object='SynTree/driver_cfa_cpp-NamedTypeDecl.o' libtool=no @AMDEPBACKSLASH@
     2318@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2319@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
     2320
     2321SynTree/driver_cfa_cpp-NamedTypeDecl.obj: SynTree/NamedTypeDecl.cc
     2322@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`
     2323@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-NamedTypeDecl.Po
     2324@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/NamedTypeDecl.cc' object='SynTree/driver_cfa_cpp-NamedTypeDecl.obj' libtool=no @AMDEPBACKSLASH@
     2325@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2326@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`
     2327
     2328SynTree/driver_cfa_cpp-TypeDecl.o: SynTree/TypeDecl.cc
     2329@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
     2330@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Po
     2331@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeDecl.cc' object='SynTree/driver_cfa_cpp-TypeDecl.o' libtool=no @AMDEPBACKSLASH@
     2332@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2333@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
     2334
     2335SynTree/driver_cfa_cpp-TypeDecl.obj: SynTree/TypeDecl.cc
     2336@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`
     2337@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeDecl.Po
     2338@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeDecl.cc' object='SynTree/driver_cfa_cpp-TypeDecl.obj' libtool=no @AMDEPBACKSLASH@
     2339@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2340@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`
     2341
     2342SynTree/driver_cfa_cpp-Initializer.o: SynTree/Initializer.cc
     2343@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
     2344@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Po
     2345@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Initializer.cc' object='SynTree/driver_cfa_cpp-Initializer.o' libtool=no @AMDEPBACKSLASH@
     2346@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2347@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
     2348
     2349SynTree/driver_cfa_cpp-Initializer.obj: SynTree/Initializer.cc
     2350@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`
     2351@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Initializer.Po
     2352@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Initializer.cc' object='SynTree/driver_cfa_cpp-Initializer.obj' libtool=no @AMDEPBACKSLASH@
     2353@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2354@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`
     2355
     2356SynTree/driver_cfa_cpp-Visitor.o: SynTree/Visitor.cc
     2357@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
     2358@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Po
     2359@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Visitor.cc' object='SynTree/driver_cfa_cpp-Visitor.o' libtool=no @AMDEPBACKSLASH@
     2360@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2361@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
     2362
     2363SynTree/driver_cfa_cpp-Visitor.obj: SynTree/Visitor.cc
     2364@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`
     2365@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Visitor.Po
     2366@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Visitor.cc' object='SynTree/driver_cfa_cpp-Visitor.obj' libtool=no @AMDEPBACKSLASH@
     2367@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2368@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`
     2369
     2370SynTree/driver_cfa_cpp-Mutator.o: SynTree/Mutator.cc
     2371@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
     2372@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Po
     2373@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Mutator.cc' object='SynTree/driver_cfa_cpp-Mutator.o' libtool=no @AMDEPBACKSLASH@
     2374@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2375@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
     2376
     2377SynTree/driver_cfa_cpp-Mutator.obj: SynTree/Mutator.cc
     2378@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`
     2379@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Mutator.Po
     2380@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Mutator.cc' object='SynTree/driver_cfa_cpp-Mutator.obj' libtool=no @AMDEPBACKSLASH@
     2381@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2382@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`
     2383
     2384SynTree/driver_cfa_cpp-AddStmtVisitor.o: SynTree/AddStmtVisitor.cc
     2385@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
     2386@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Po
     2387@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AddStmtVisitor.cc' object='SynTree/driver_cfa_cpp-AddStmtVisitor.o' libtool=no @AMDEPBACKSLASH@
     2388@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2389@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
     2390
     2391SynTree/driver_cfa_cpp-AddStmtVisitor.obj: SynTree/AddStmtVisitor.cc
     2392@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`
     2393@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-AddStmtVisitor.Po
     2394@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/AddStmtVisitor.cc' object='SynTree/driver_cfa_cpp-AddStmtVisitor.obj' libtool=no @AMDEPBACKSLASH@
     2395@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2396@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`
     2397
     2398SynTree/driver_cfa_cpp-TypeSubstitution.o: SynTree/TypeSubstitution.cc
     2399@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
     2400@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po
     2401@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeSubstitution.cc' object='SynTree/driver_cfa_cpp-TypeSubstitution.o' libtool=no @AMDEPBACKSLASH@
     2402@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2403@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
     2404
     2405SynTree/driver_cfa_cpp-TypeSubstitution.obj: SynTree/TypeSubstitution.cc
     2406@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`
     2407@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-TypeSubstitution.Po
     2408@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/TypeSubstitution.cc' object='SynTree/driver_cfa_cpp-TypeSubstitution.obj' libtool=no @AMDEPBACKSLASH@
     2409@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2410@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`
     2411
     2412SynTree/driver_cfa_cpp-Attribute.o: SynTree/Attribute.cc
     2413@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
     2414@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Po
     2415@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Attribute.cc' object='SynTree/driver_cfa_cpp-Attribute.o' libtool=no @AMDEPBACKSLASH@
     2416@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2417@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
     2418
     2419SynTree/driver_cfa_cpp-Attribute.obj: SynTree/Attribute.cc
     2420@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`
     2421@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Tpo SynTree/$(DEPDIR)/driver_cfa_cpp-Attribute.Po
     2422@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='SynTree/Attribute.cc' object='SynTree/driver_cfa_cpp-Attribute.obj' libtool=no @AMDEPBACKSLASH@
     2423@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2424@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`
     2425
     2426Tuples/driver_cfa_cpp-Mutate.o: Tuples/Mutate.cc
     2427@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
     2428@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
     2429@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/Mutate.cc' object='Tuples/driver_cfa_cpp-Mutate.o' libtool=no @AMDEPBACKSLASH@
     2430@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2431@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
     2432
     2433Tuples/driver_cfa_cpp-Mutate.obj: Tuples/Mutate.cc
     2434@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`
     2435@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-Mutate.Po
     2436@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/Mutate.cc' object='Tuples/driver_cfa_cpp-Mutate.obj' libtool=no @AMDEPBACKSLASH@
     2437@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2438@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`
     2439
     2440Tuples/driver_cfa_cpp-AssignExpand.o: Tuples/AssignExpand.cc
     2441@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
     2442@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Po
     2443@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/AssignExpand.cc' object='Tuples/driver_cfa_cpp-AssignExpand.o' libtool=no @AMDEPBACKSLASH@
     2444@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2445@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
     2446
     2447Tuples/driver_cfa_cpp-AssignExpand.obj: Tuples/AssignExpand.cc
     2448@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`
     2449@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-AssignExpand.Po
     2450@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/AssignExpand.cc' object='Tuples/driver_cfa_cpp-AssignExpand.obj' libtool=no @AMDEPBACKSLASH@
     2451@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2452@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`
     2453
     2454Tuples/driver_cfa_cpp-FunctionFixer.o: Tuples/FunctionFixer.cc
     2455@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
     2456@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Po
     2457@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/FunctionFixer.cc' object='Tuples/driver_cfa_cpp-FunctionFixer.o' libtool=no @AMDEPBACKSLASH@
     2458@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2459@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
     2460
     2461Tuples/driver_cfa_cpp-FunctionFixer.obj: Tuples/FunctionFixer.cc
     2462@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`
     2463@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionFixer.Po
     2464@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/FunctionFixer.cc' object='Tuples/driver_cfa_cpp-FunctionFixer.obj' libtool=no @AMDEPBACKSLASH@
     2465@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2466@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`
     2467
     2468Tuples/driver_cfa_cpp-TupleAssignment.o: Tuples/TupleAssignment.cc
     2469@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
     2470@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Po
     2471@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/TupleAssignment.cc' object='Tuples/driver_cfa_cpp-TupleAssignment.o' libtool=no @AMDEPBACKSLASH@
     2472@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2473@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
     2474
     2475Tuples/driver_cfa_cpp-TupleAssignment.obj: Tuples/TupleAssignment.cc
     2476@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`
     2477@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-TupleAssignment.Po
     2478@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/TupleAssignment.cc' object='Tuples/driver_cfa_cpp-TupleAssignment.obj' libtool=no @AMDEPBACKSLASH@
     2479@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2480@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`
     2481
     2482Tuples/driver_cfa_cpp-FunctionChecker.o: Tuples/FunctionChecker.cc
     2483@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
     2484@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Po
     2485@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/FunctionChecker.cc' object='Tuples/driver_cfa_cpp-FunctionChecker.o' libtool=no @AMDEPBACKSLASH@
     2486@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2487@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
     2488
     2489Tuples/driver_cfa_cpp-FunctionChecker.obj: Tuples/FunctionChecker.cc
     2490@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`
     2491@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-FunctionChecker.Po
     2492@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/FunctionChecker.cc' object='Tuples/driver_cfa_cpp-FunctionChecker.obj' libtool=no @AMDEPBACKSLASH@
     2493@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2494@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`
     2495
     2496Tuples/driver_cfa_cpp-NameMatcher.o: Tuples/NameMatcher.cc
     2497@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
     2498@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Po
     2499@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/NameMatcher.cc' object='Tuples/driver_cfa_cpp-NameMatcher.o' libtool=no @AMDEPBACKSLASH@
     2500@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2501@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
     2502
     2503Tuples/driver_cfa_cpp-NameMatcher.obj: Tuples/NameMatcher.cc
     2504@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`
     2505@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Tpo Tuples/$(DEPDIR)/driver_cfa_cpp-NameMatcher.Po
     2506@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='Tuples/NameMatcher.cc' object='Tuples/driver_cfa_cpp-NameMatcher.obj' libtool=no @AMDEPBACKSLASH@
     2507@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     2508@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`
    24642509
    24652510.ll.cc:
    2466         $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
     2511        $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
    24672512
    24682513.yy.cc:
    2469         $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
     2514        $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
    24702515
    24712516ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     
    26082653        -rm -f Tuples/$(DEPDIR)/$(am__dirstamp)
    26092654        -rm -f Tuples/$(am__dirstamp)
     2655        -rm -f driver/$(am__dirstamp)
    26102656
    26112657maintainer-clean-generic:
  • src/Parser/DeclarationNode.cc

    r679864e1 r242d458  
    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
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 14 14:46:32 2015
    13 // Update Count     : 126
     12// Last Modified On : Tue Jul 12 20:49:31 2016
     13// Update Count     : 164
    1414//
    1515
     
    3434const char *DeclarationNode::storageName[] = { "extern", "static", "auto", "register", "inline", "fortran", "_Noreturn", "_Thread_local", "" };
    3535const char *DeclarationNode::qualifierName[] = { "const", "restrict", "volatile", "lvalue", "_Atomic" };
    36 const char *DeclarationNode::basicTypeName[] = { "char", "int", "float", "double", "void", "_Bool", "_Complex", "_Imaginary" };
     36const char *DeclarationNode::basicTypeName[] = { "char", "int", "float", "double", "void", "_Bool", "_Complex", "_Imaginary", };
    3737const char *DeclarationNode::modifierName[]  = { "signed", "unsigned", "short", "long" };
    3838const char *DeclarationNode::aggregateName[] = { "struct", "union", "context" };
    3939const char *DeclarationNode::typeClassName[] = { "type", "dtype", "ftype" };
     40const char *DeclarationNode::builtinTypeName[] = { "__builtin_va_list" };
    4041
    4142UniqueName DeclarationNode::anonymous( "__anonymous" );
    4243
    43 extern LinkageSpec::Type linkage;               /* defined in cfa.y */
     44extern LinkageSpec::Type linkage;                                               // defined in parser.yy
    4445
    4546DeclarationNode *DeclarationNode::clone() const {
     
    5455        newnode->linkage = linkage;
    5556        return newnode;
    56 }
     57} // DeclarationNode::clone
    5758
    5859DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) {
     
    9697                os << endl << string( indent + 2, ' ' ) << "with initializer ";
    9798                initializer->printOneLine( os );
     99                os << " maybe constructed? " << initializer->get_maybeConstructed();
     100
    98101        } // if
    99102
     
    116119        newnode->type->function->newStyle = newStyle;
    117120        newnode->type->function->body = body;
     121        typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
    118122
    119123        if ( body ) {
     
    128132
    129133        return newnode;
    130 }
     134} // DeclarationNode::newFunction
    131135
    132136DeclarationNode *DeclarationNode::newQualifier( Qualifier q ) {
     
    135139        newnode->type->qualifiers.push_back( q );
    136140        return newnode;
    137 }
     141} // DeclarationNode::newQualifier
    138142
    139143DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
     
    141145        newnode->storageClasses.push_back( sc );
    142146        return newnode;
    143 }
     147} // DeclarationNode::newStorageClass
    144148
    145149DeclarationNode *DeclarationNode::newBasicType( BasicType bt ) {
     
    148152        newnode->type->basic->typeSpec.push_back( bt );
    149153        return newnode;
    150 }
     154} // DeclarationNode::newBasicType
     155
     156DeclarationNode *DeclarationNode::newBuiltinType( BuiltinType bt ) {
     157        DeclarationNode *newnode = new DeclarationNode;
     158        newnode->type = new TypeData( TypeData::Builtin );
     159        newnode->type->builtin->type = bt;
     160        return newnode;
     161} // DeclarationNode::newBuiltinType
    151162
    152163DeclarationNode *DeclarationNode::newModifier( Modifier mod ) {
     
    155166        newnode->type->basic->modifiers.push_back( mod );
    156167        return newnode;
    157 }
     168} // DeclarationNode::newModifier
    158169
    159170DeclarationNode *DeclarationNode::newForall( DeclarationNode *forall ) {
     
    162173        newnode->type->forall = forall;
    163174        return newnode;
    164 }
     175} // DeclarationNode::newForall
    165176
    166177DeclarationNode *DeclarationNode::newFromTypedef( std::string *name ) {
     
    171182        newnode->type->symbolic->params = 0;
    172183        return newnode;
    173 }
    174 
    175 DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields ) {
     184} // DeclarationNode::newFromTypedef
     185
     186DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body ) {
    176187        DeclarationNode *newnode = new DeclarationNode;
    177188        newnode->type = new TypeData( TypeData::Aggregate );
     
    179190        newnode->type->aggregate->name = assign_strptr( name );
    180191        if ( newnode->type->aggregate->name == "" ) {           // anonymous aggregate ?
    181                 newnode->type->aggregate->name = DeclarationNode::anonymous.newName();
    182         } else {
    183                 // SKULLDUGGERY: generate a typedef for the aggregate name so that the aggregate does not have to be qualified
    184                 // by "struct"
    185                 typedefTable.addToEnclosingScope( newnode->type->aggregate->name, TypedefTable::TD );
    186                 DeclarationNode *typedf = new DeclarationNode;
    187                 typedf->name = newnode->type->aggregate->name;
    188                 newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() );
     192                newnode->type->aggregate->name = anonymous.newName();
    189193        } // if
    190194        newnode->type->aggregate->actuals = actuals;
    191195        newnode->type->aggregate->fields = fields;
    192         return newnode;
    193 }
     196        newnode->type->aggregate->body = body;
     197        return newnode;
     198} // DeclarationNode::newAggregate
    194199
    195200DeclarationNode *DeclarationNode::newEnum( std::string *name, DeclarationNode *constants ) {
     
    200205        if ( newnode->type->enumeration->name == "" ) {         // anonymous enumeration ?
    201206                newnode->type->enumeration->name = DeclarationNode::anonymous.newName();
    202         } else {
    203                 // SKULLDUGGERY: generate a typedef for the enumeration name so that the enumeration does not have to be
    204                 // qualified by "enum"
    205                 typedefTable.addToEnclosingScope( newnode->type->enumeration->name, TypedefTable::TD );
    206                 DeclarationNode *typedf = new DeclarationNode;
    207                 typedf->name = newnode->type->enumeration->name;
    208                 newnode->appendList( typedf->addType( newnode->clone() )->addTypedef() );
    209207        } // if
    210208        newnode->type->enumeration->constants = constants;
    211209        return newnode;
    212 }
     210} // DeclarationNode::newEnum
    213211
    214212DeclarationNode *DeclarationNode::newEnumConstant( std::string *name, ExpressionNode *constant ) {
    215213        DeclarationNode *newnode = new DeclarationNode;
    216214        newnode->name = assign_strptr( name );
    217         // do something with the constant
    218         return newnode;
    219 }
     215        newnode->enumeratorValue = constant;
     216        typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
     217        return newnode;
     218} // DeclarationNode::newEnumConstant
    220219
    221220DeclarationNode *DeclarationNode::newName( std::string *name ) {
     
    223222        newnode->name = assign_strptr( name );
    224223        return newnode;
    225 }
     224} // DeclarationNode::newName
    226225
    227226DeclarationNode *DeclarationNode::newFromTypeGen( std::string *name, ExpressionNode *params ) {
     
    232231        newnode->type->symbolic->actuals = params;
    233232        return newnode;
    234 }
     233} // DeclarationNode::newFromTypeGen
    235234
    236235DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string *name ) {
     
    241240        newnode->type->variable->name = newnode->name;
    242241        return newnode;
    243 }
    244 
    245 DeclarationNode *DeclarationNode::newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {
     242} // DeclarationNode::newTypeParam
     243
     244DeclarationNode *DeclarationNode::newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {
    246245        DeclarationNode *newnode = new DeclarationNode;
    247246        newnode->type = new TypeData( TypeData::Aggregate );
    248         newnode->type->aggregate->kind = Context;
     247        newnode->type->aggregate->kind = Trait;
    249248        newnode->type->aggregate->params = params;
    250249        newnode->type->aggregate->fields = asserts;
    251250        newnode->type->aggregate->name = assign_strptr( name );
    252251        return newnode;
    253 }
    254 
    255 DeclarationNode *DeclarationNode::newContextUse( std::string *name, ExpressionNode *params ) {
     252} // DeclarationNode::newTrait
     253
     254DeclarationNode *DeclarationNode::newTraitUse( std::string *name, ExpressionNode *params ) {
    256255        DeclarationNode *newnode = new DeclarationNode;
    257256        newnode->type = new TypeData( TypeData::AggregateInst );
    258257        newnode->type->aggInst->aggregate = new TypeData( TypeData::Aggregate );
    259         newnode->type->aggInst->aggregate->aggregate->kind = Context;
     258        newnode->type->aggInst->aggregate->aggregate->kind = Trait;
    260259        newnode->type->aggInst->aggregate->aggregate->name = assign_strptr( name );
    261260        newnode->type->aggInst->params = params;
    262261        return newnode;
    263 }
     262} // DeclarationNode::newTraitUse
    264263
    265264DeclarationNode *DeclarationNode::newTypeDecl( std::string *name, DeclarationNode *typeParams ) {
     
    271270        newnode->type->symbolic->name = newnode->name;
    272271        return newnode;
    273 }
     272} // DeclarationNode::newTypeDecl
    274273
    275274DeclarationNode *DeclarationNode::newPointer( DeclarationNode *qualifiers ) {
     
    277276        newnode->type = new TypeData( TypeData::Pointer );
    278277        return newnode->addQualifiers( qualifiers );
    279 }
     278} // DeclarationNode::newPointer
    280279
    281280DeclarationNode *DeclarationNode::newArray( ExpressionNode *size, DeclarationNode *qualifiers, bool isStatic ) {
     
    290289        } // if
    291290        return newnode->addQualifiers( qualifiers );
    292 }
     291} // DeclarationNode::newArray
    293292
    294293DeclarationNode *DeclarationNode::newVarArray( DeclarationNode *qualifiers ) {
     
    357356        } // if
    358357}
    359          
     358
    360359DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
    361360        if ( q ) {
     
    508507                assert( false );
    509508        } // switch
    510        
     509
    511510        return this;
    512511}
     
    619618                assert( a->type->kind == TypeData::Array );
    620619                TypeData *lastArray = findLast( a->type );
    621                 if ( type ) { 
     620                if ( type ) {
    622621                        switch ( type->kind ) {
    623622                          case TypeData::Aggregate:
     
    663662        } // if
    664663}
    665        
     664
    666665DeclarationNode *DeclarationNode::addIdList( DeclarationNode *ids ) {
    667666        type = addIdListToType( type, ids );
     
    794793                        errors.append( e );
    795794                } // try
    796                 cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
     795                cur = dynamic_cast<DeclarationNode *>( cur->get_link() );
    797796        } // while
    798797        if ( ! errors.isEmpty() ) {
     
    857856Declaration *DeclarationNode::build() const {
    858857        if ( type ) {
    859                 Declaration *newDecl = type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) );
    860                 return newDecl;
     858                return type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
    861859        } // if
    862860        if ( ! buildFuncSpecifier( Inline ) && ! buildFuncSpecifier( Noreturn ) ) {
    863                 return new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) );
     861                return (new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
    864862        } // if
    865863        throw SemanticError( "invalid function specifier in declaration of ", this );
     
    868866Type *DeclarationNode::buildType() const {
    869867        assert( type );
    870  
     868
    871869        switch ( type->kind ) {
    872870          case TypeData::Enum:
     
    881879                          ret = new UnionInstType( type->buildQualifiers(), type->aggregate->name );
    882880                          break;
    883                         case DeclarationNode::Context:
    884                           ret = new ContextInstType( type->buildQualifiers(), type->aggregate->name );
     881                        case DeclarationNode::Trait:
     882                          ret = new TraitInstType( type->buildQualifiers(), type->aggregate->name );
    885883                          break;
    886884                        default:
  • src/Parser/ExpressionNode.cc

    r679864e1 r242d458  
    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
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 13:51:11 2015
    13 // Update Count     : 254
    14 // 
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Aug  5 07:56:23 2016
     13// Update Count     : 375
     14//
    1515
    1616#include <cassert>
     
    1919#include <sstream>
    2020#include <cstdio>
    21 #include <climits>
    2221
    2322#include "ParseNode.h"
     23#include "TypeData.h"
    2424#include "SynTree/Constant.h"
    2525#include "SynTree/Expression.h"
    26 #include "UnimplementedError.h"
     26#include "SynTree/Declaration.h"
     27#include "Common/UnimplementedError.h"
    2728#include "parseutility.h"
    28 #include "utility.h"
     29#include "Common/utility.h"
    2930
    3031using namespace std;
    3132
    32 ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {}
    33 
    34 ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ), argName( 0 ) {}
    35 
    36 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) {
     33ExpressionNode::ExpressionNode() : ParseNode() {}
     34
     35ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ) {}
     36
     37ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {
    3738        if ( other.argName ) {
    3839                argName = other.argName->clone();
     
    8283}
    8384
    84 CommaExprNode *ExpressionNode::add_to_list( ExpressionNode *exp ) {
    85         return new CommaExprNode( this, exp );
    86 }
    87 
    88 //##############################################################################
    89 
    90 static inline bool checkU( char c ) { return c == 'u' || c == 'U'; }
    91 static inline bool checkL( char c ) { return c == 'l' || c == 'L'; }
    92 static inline bool checkF( char c ) { return c == 'f' || c == 'F'; }
    93 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
    94 
    95 // Difficult to separate extra parts of constants during lexing because actions are not allow in the middle of patterns:
    96 //
    97 //              prefix action constant action suffix
    98 //
    99 // Alternatively, breaking a pattern using BEGIN does not work if the following pattern can be empty:
    100 //
    101 //              constant BEGIN CONT ...
    102 //              <CONT>(...)? BEGIN 0 ... // possible empty suffix
    103 //
    104 // because the CONT rule is NOT triggered if the pattern is empty. Hence, constants are reparsed here to determine their
    105 // type.
    106 
    107 ConstantNode::ConstantNode( Type t, string *inVal ) : type( t ), value( *inVal ) {
    108         // lexing divides constants into 4 kinds
    109         switch ( type ) {
    110           case Integer:
    111                 {
    112                         static const BasicType::Kind kind[2][3] = {
    113                                 { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
    114                                 { BasicType::UnsignedInt, BasicType::LongUnsignedInt, BasicType::LongLongUnsignedInt },
    115                         };
    116                         size_t last = value.length() - 1;                       // last character of constant
    117                         unsigned long long v;                                           // converted integral value
    118                         bool dec = true, Unsigned = false;                      // decimal, unsigned constant
    119                         int size;                                                                       // 0 => int, 1 => long, 2 => long long
    120 
    121                         if ( value[0] == '0' ) {                                        // octal constant ?
    122                                 dec = false;
    123                                 if ( last != 0 && checkX( value[1] ) ) { // hex constant ?
    124                                         sscanf( (char *)value.c_str(), "%llx", &v );
    125                                         //printf( "%llx %llu\n", v, v );
    126                                 } else {
    127                                         sscanf( (char *)value.c_str(), "%llo", &v );
    128                                         //printf( "%llo %llu\n", v, v );
    129                                 } // if
    130                         } else {                                                                        // decimal constant ?
    131                                 sscanf( (char *)value.c_str(), "%llu", &v );
    132                                 //printf( "%llu %llu\n", v, v );
    133                         } // if
    134 
    135                         if ( v <= INT_MAX ) {                                           // signed int
    136                                 size = 0;
    137                         } else if ( v <= UINT_MAX && ! dec ) {          // unsigned int
    138                                 size = 0;
    139                                 Unsigned = true;                                                // unsigned
    140                         } else if ( v <= LONG_MAX ) {                           // signed long int
    141                                 size = 1;
    142                         } else if ( v <= ULONG_MAX && ( ! dec || LONG_MAX == LLONG_MAX ) ) { // signed long int
    143                                 size = 1;
    144                                 Unsigned = true;                                                // unsigned long int
    145                         } else if ( v <= LLONG_MAX ) {                          // signed long long int
    146                                 size = 2;
    147                         } else {                                                                        // unsigned long long int
    148                                 size = 2;
    149                                 Unsigned = true;                                                // unsigned long long int
    150                         } // if
    151 
    152                         if ( checkU( value[last] ) ) {                          // suffix 'u' ?
    153                                 Unsigned = true;
    154                                 if ( last > 0 && checkL( value[ last - 1 ] ) ) { // suffix 'l' ?
    155                                         size = 1;
    156                                         if ( last > 1 && checkL( value[ last - 2 ] ) ) { // suffix 'll' ?
    157                                                 size = 2;
    158                                         } // if
    159                                 } // if
    160                         } else if ( checkL( value[ last ] ) ) {         // suffix 'l' ?
    161                                 size = 1;
    162                                 if ( last > 0 && checkL( value[ last - 1 ] ) ) { // suffix 'll' ?
    163                                         size = 2;
    164                                         if ( last > 1 && checkU( value[ last - 2 ] ) ) { // suffix 'u' ?
    165                                                 Unsigned = true;
    166                                         } // if
    167                                 } else {
    168                                         if ( last > 0 && checkU( value[ last - 1 ] ) ) { // suffix 'u' ?
    169                                                 Unsigned = true;
    170                                         } // if
    171                                 } // if
    172                         } // if
    173                         btype = kind[Unsigned][size];                           // lookup constant type
    174                         break;
    175                 }
    176           case Float:
    177                 {
    178                         size_t len = value.length() - 1;
    179 
    180                         btype = BasicType::Double;                                      // default
    181                         if ( checkF( value[len] ) ) {                           // float ?
    182                                 btype = BasicType::Float;
    183                         } // if
    184                         if ( checkL( value[len] ) ) {                           // long double ?
    185                                 btype = BasicType::LongDouble;
    186                         } // if
    187                         break;
    188                 }
    189           case Character:
    190                 btype = BasicType::Char;                                                // default
    191                 if ( string( "LUu" ).find( value[0] ) != string::npos ) {
    192                         // ???
    193                 } // if
    194                 break;
    195           case String:
    196                 // array of char
    197                 if ( string( "LUu" ).find( value[0] ) != string::npos ) {
    198                         if ( value[0] == 'u' && value[1] == '8' ) {
    199                                 // ???
    200                         } else {
    201                                 // ???
    202                         } // if
    203                 } // if
    204                 break;
    205         } // switch
     85// CommaExprNode *ExpressionNode::add_to_list( ExpressionNode *exp ) {
     86//      return new CommaExprNode( this, exp );
     87// }
     88
     89//##############################################################################
     90
     91ConstantNode::ConstantNode( ConstantExpr *expr ) : expr( expr ) {
    20692} // ConstantNode::ConstantNode
    20793
    20894ConstantNode *ConstantNode::appendstr( const std::string *newValue ) {
    20995        assert( newValue != 0 );
    210         assert( type == String );
     96
     97        string value = expr->get_constant()->get_value();
    21198
    21299        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    213100        value.insert( value.length() - 1, newValue->substr( 1, newValue->length() - 2 ) );
    214        
     101        expr->get_constant()->set_value( value );
     102
    215103        delete newValue;                                                                        // allocated by lexer
    216104        return this;
     
    218106
    219107void ConstantNode::printOneLine( std::ostream &os, int indent ) const {
    220         os << string( indent, ' ' );
    221         printDesignation( os );
    222 
    223         switch ( type ) {
    224           case Integer:
    225           case Float:
    226                 os << value ;
    227                 break;
    228           case Character:
    229                 os << "'" << value << "'";
    230                 break;
    231           case String:
    232                 os << '"' << value << '"';
    233                 break;
    234         } // switch
    235 
    236         os << ' ';
     108        // os << string( indent, ' ' );
     109        // printDesignation( os );
     110
     111        // switch ( type ) {
     112        //   case Integer:
     113        //   case Float:
     114        //      os << value ;
     115        //      break;
     116        //   case Character:
     117        //      os << "'" << value << "'";
     118        //      break;
     119        //   case String:
     120        //      os << '"' << value << '"';
     121        //      break;
     122        // } // switch
     123
     124        // os << ' ';
    237125}
    238126
     
    243131
    244132Expression *ConstantNode::build() const {
    245         ::Type::Qualifiers q;                                                           // no qualifiers on constants
    246 
    247         switch ( get_type() ) {
    248           case String:
    249                 {
    250                         // string should probably be a primitive type
    251                         ArrayType *at = new ArrayType( q, new BasicType( q, BasicType::Char ),
    252                                                                                    new ConstantExpr(
    253                                                                                            Constant( new BasicType( q, BasicType::UnsignedInt ),
    254                                                                                                                  toString( value.size()+1-2 ) ) ),  // +1 for '\0' and -2 for '"'
    255                                                                                    false, false );
    256                         return new ConstantExpr( Constant( at, value ), maybeBuild< Expression >( get_argName() ) );
    257                 }
    258           default:
    259                 return new ConstantExpr( Constant( new BasicType( q, btype ), get_value() ), maybeBuild< Expression >( get_argName() ) );
    260         }
     133        return expr->clone();
    261134}
    262135
     
    325198
    326199Expression *DesignatorNode::build() const {
    327         Expression * ret = get_argName()->build();
     200        Expression * ret = maybeBuild<Expression>(get_argName());
    328201
    329202        if ( isArrayIndex ) {
    330                 // need to traverse entire structure and change any instances of 0 or 1 to 
     203                // need to traverse entire structure and change any instances of 0 or 1 to
    331204                // ConstantExpr
    332205                DesignatorFixer fixer;
     
    365238//##############################################################################
    366239
     240static const char *opName[] = {
     241        "TupleC", "Comma", "TupleFieldSel", // "TuplePFieldSel", // n-adic
     242        // triadic
     243        "Cond", "NCond",
     244        // diadic
     245        "SizeOf", "AlignOf", "OffsetOf", "Attr", "?+?", "?-?", "?*?", "?/?", "?%?", "||", "&&",
     246        "?|?", "?&?", "?^?", "Cast", "?<<?", "?>>?", "?<?", "?>?", "?<=?", "?>=?", "?==?", "?!=?",
     247        "?=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?",
     248        "?[?]", "FieldSel", "PFieldSel", "...",
     249        // monadic
     250        "+?", "-?", "AddressOf", "*?", "!?", "~?", "++?", "?++", "--?", "?--", "&&"
     251};
     252
    367253OperatorNode::OperatorNode( Type t ) : type( t ) {}
    368254
     
    372258OperatorNode::~OperatorNode() {}
    373259
    374 OperatorNode::Type OperatorNode::get_type( void ) const{
     260OperatorNode::Type OperatorNode::get_type( void ) const {
    375261        return type;
    376262}
     
    378264void OperatorNode::printOneLine( std::ostream &os, int indent ) const {
    379265        printDesignation( os );
    380         os << OpName[ type ] << ' ';
     266        os << opName[ type ] << ' ';
    381267}
    382268
    383269void OperatorNode::print( std::ostream &os, int indent ) const{
    384270        printDesignation( os );
    385         os << string( indent, ' ' ) << "Operator: " << OpName[type] << endl;
     271        os << string( indent, ' ' ) << "Operator: " << opName[type] << endl;
    386272        return;
    387273}
    388274
    389275const char *OperatorNode::get_typename( void ) const{
    390         return OpName[ type ];
    391 }
    392 
    393 const char *OperatorNode::OpName[] = {
    394         "TupleC",  "Comma", "TupleFieldSel",// "TuplePFieldSel", //n-adic
    395         // triadic
    396         "Cond",   "NCond",
    397         // diadic
    398         "SizeOf",     "AlignOf", "Attr", "CompLit", "Plus",    "Minus",   "Mul",     "Div",     "Mod",      "Or",
    399         "And",       "BitOr",   "BitAnd",  "Xor",     "Cast",    "LShift",  "RShift",  "LThan",   "GThan",
    400         "LEThan",    "GEThan", "Eq",      "Neq",     "Assign",  "MulAssn", "DivAssn", "ModAssn", "PlusAssn",
    401         "MinusAssn", "LSAssn", "RSAssn",  "AndAssn", "ERAssn",  "OrAssn",  "Index",   "FieldSel","PFieldSel",
    402         "Range",
    403         // monadic
    404         "UnPlus", "UnMinus", "AddressOf", "PointTo", "Neg", "BitNeg", "Incr", "IncrPost", "Decr", "DecrPost", "LabelAddress"
    405 };
     276        return opName[ type ];
     277}
    406278
    407279//##############################################################################
     
    418290
    419291CompositeExprNode::CompositeExprNode( ExpressionNode *f, ExpressionNode *arg1, ExpressionNode *arg2):
    420         function( f ), arguments( arg1) {
    421         arguments->set_link( arg2);
    422 }
    423 
    424 CompositeExprNode::CompositeExprNode( const CompositeExprNode &other ) : ExpressionNode( other ), function( maybeClone( other.function ) ) {
     292        function( f ), arguments( arg1 ) {
     293        arguments->set_link( arg2 );
     294}
     295
     296CompositeExprNode::CompositeExprNode( const CompositeExprNode &other ) : ExpressionNode( other ), function( maybeClone( other.function ) ), arguments( 0 ) {
    425297        ParseNode *cur = other.arguments;
    426298        while ( cur ) {
     
    439311}
    440312
    441 // the names that users use to define operator functions
    442 static const char *opFuncName[] = {
    443         "",             "",             "",
    444         "",             "",
    445         //diadic
    446         "",             "",             "",             "",             "?+?",          "?-?",  "?*?",  "?/?",  "?%?",  "",              "",
    447         "?|?",          "?&?",          "?^?",  "",             "?<<?", "?>>?", "?<?",  "?>?",  "?<=?",
    448         "?>=?",         "?==?",         "?!=?", "?=?",  "?*=?", "?/=?", "?%=?", "?+=?", "?-=?",
    449         "?<<=?",        "?>>=?",        "?&=?", "?^=?", "?|=?", "?[?]", "",             "",             "Range",
    450         //monadic
    451         "+?",           "-?",           "",             "*?",   "!?",   "~?",   "++?",  "?++",  "--?",  "?--",  "&&"
    452 };
    453 
    454 #include "utility.h"
     313
     314Expression *build_cast( TypeValueNode * arg, ExpressionNode *expr_node ) {
     315        DeclarationNode *decl_node = arg->get_decl();
     316
     317        Type *targetType = decl_node->buildType();
     318        if ( dynamic_cast< VoidType* >( targetType ) ) {
     319                delete targetType;
     320                return new CastExpr( maybeBuild<Expression>(expr_node) );
     321        } else {
     322                return new CastExpr( maybeBuild<Expression>(expr_node), targetType );
     323        } // if
     324}
     325
     326Expression *build_fieldSel( ExpressionNode *expr_node, VarRefNode *member ) {
     327        NameExpr* memberExpr = dynamic_cast<NameExpr*> ( maybeBuild<Expression>( member) );
     328        assert( memberExpr );
     329        UntypedMemberExpr *ret = new UntypedMemberExpr( memberExpr->get_name(), maybeBuild<Expression>(expr_node) );
     330        delete member;
     331        return ret;
     332}
     333
     334Expression *build_pfieldSel( ExpressionNode *expr_node, VarRefNode *member ) {
     335        NameExpr* memberExpr = dynamic_cast<NameExpr*> ( maybeBuild<Expression>( member) );
     336        assert( memberExpr );
     337        UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
     338        deref->get_args().push_back( maybeBuild<Expression>(expr_node) );
     339        UntypedMemberExpr *ret = new UntypedMemberExpr( memberExpr->get_name(), deref );
     340        delete member;
     341        return ret;
     342}
     343
     344Expression *build_addressOf( ExpressionNode *expr_node ) {
     345                return new AddressExpr( maybeBuild<Expression>(expr_node) );
     346}
     347Expression *build_sizeOf( ExpressionNode *expr_node ) {
     348        if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( expr_node ) ) {
     349                return new SizeofExpr( arg->get_decl()->buildType() );
     350        } else {
     351                return new SizeofExpr( maybeBuild<Expression>(expr_node) );
     352        } // if
     353}
     354Expression *build_alignOf( ExpressionNode *expr_node ) {
     355        if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( expr_node ) ) {
     356                return new AlignofExpr( arg->get_decl()->buildType() );
     357        } else {
     358                return new AlignofExpr( maybeBuild<Expression>(expr_node) );
     359        } // if
     360}
     361Expression *build_offsetOf( TypeValueNode * arg, VarRefNode *member ) {
     362        NameExpr *memberExpr = dynamic_cast<NameExpr *>( maybeBuild<Expression>( member ) );
     363        assert( memberExpr );
     364        return new UntypedOffsetofExpr( arg->get_decl()->buildType(), memberExpr->get_name() );
     365}
     366
     367Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) {
     368        return new LogicalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), notZeroExpr( maybeBuild<Expression>(expr_node2) ), kind );
     369}
     370
     371Expression *build_opr1( OperatorNode::Type op, ExpressionNode *expr_node ) {
     372        std::list<Expression *> args;
     373        args.push_back( new AddressExpr( maybeBuild<Expression>(expr_node) ) );
     374        return new UntypedExpr( new NameExpr( opName[ op ] ), args );
     375}
     376Expression *build_opr2( OperatorNode::Type op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
     377        std::list<Expression *> args;
     378        args.push_back( maybeBuild<Expression>(expr_node1) );
     379        args.push_back( maybeBuild<Expression>(expr_node2) );
     380        return new UntypedExpr( new NameExpr( opName[ op ] ), args );
     381}
     382
     383Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) {
     384        return new ConditionalExpr( notZeroExpr( maybeBuild<Expression>(expr_node1) ), maybeBuild<Expression>(expr_node2), maybeBuild<Expression>(expr_node3) );
     385}
     386
     387Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
     388        return new CommaExpr( maybeBuild<Expression>(expr_node1), maybeBuild<Expression>(expr_node2) );
     389}
     390
     391CompositeExprNode2::CompositeExprNode2( Expression *expr ) : expr( expr ) {}
     392CompositeExprNode2::CompositeExprNode2( const CompositeExprNode2 &other ) : expr( other.expr->clone() ) {}
     393CompositeExprNode2::~CompositeExprNode2() { delete expr; }
     394void CompositeExprNode2::print( std::ostream &, int indent ) const { assert( false ); }
     395void CompositeExprNode2::printOneLine( std::ostream &, int indent ) const { assert( false ); }
     396
    455397
    456398Expression *CompositeExprNode::build() const {
     
    461403
    462404        if ( ! ( op = dynamic_cast<OperatorNode *>( function ) ) ) { // function as opposed to operator
    463                 return new UntypedExpr( function->build(), args, maybeBuild< Expression >( get_argName() ));
    464         } // if
    465 
    466         switch ( op->get_type()) {
    467           case OperatorNode::Incr:
    468           case OperatorNode::Decr:
    469           case OperatorNode::IncrPost:
    470           case OperatorNode::DecrPost:
     405                return new UntypedExpr( maybeBuild<Expression>(function), args, maybeBuild< Expression >( get_argName() ));
     406        } // if
     407
     408        switch ( op->get_type() ) {
    471409          case OperatorNode::Assign:
    472410          case OperatorNode::MulAssn:
     
    480418          case OperatorNode::ERAssn:
    481419          case OperatorNode::OrAssn:
    482                 // the rewrite rules for these expressions specify that the first argument has its address taken
    483420                assert( ! args.empty() );
    484421                args.front() = new AddressExpr( args.front() );
    485                 break;
    486           default:
    487                 /* do nothing */
    488                 ;
    489         }
    490 
    491         switch ( op->get_type() ) {
    492           case OperatorNode::Incr:
    493           case OperatorNode::Decr:
    494           case OperatorNode::IncrPost:
    495           case OperatorNode::DecrPost:
    496           case OperatorNode::Assign:
    497           case OperatorNode::MulAssn:
    498           case OperatorNode::DivAssn:
    499           case OperatorNode::ModAssn:
    500           case OperatorNode::PlusAssn:
    501           case OperatorNode::MinusAssn:
    502           case OperatorNode::LSAssn:
    503           case OperatorNode::RSAssn:
    504           case OperatorNode::AndAssn:
    505           case OperatorNode::ERAssn:
    506           case OperatorNode::OrAssn:
    507           case OperatorNode::Plus:
    508           case OperatorNode::Minus:
    509           case OperatorNode::Mul:
    510           case OperatorNode::Div:
    511           case OperatorNode::Mod:
    512           case OperatorNode::BitOr:
    513           case OperatorNode::BitAnd:
    514           case OperatorNode::Xor:
    515           case OperatorNode::LShift:
    516           case OperatorNode::RShift:
    517           case OperatorNode::LThan:
    518           case OperatorNode::GThan:
    519           case OperatorNode::LEThan:
    520           case OperatorNode::GEThan:
    521           case OperatorNode::Eq:
    522           case OperatorNode::Neq:
    523           case OperatorNode::Index:
    524           case OperatorNode::Range:
    525422          case OperatorNode::UnPlus:
    526423          case OperatorNode::UnMinus:
     
    529426          case OperatorNode::BitNeg:
    530427          case OperatorNode::LabelAddress:
    531                 return new UntypedExpr( new NameExpr( opFuncName[ op->get_type() ] ), args );
    532           case OperatorNode::AddressOf:
    533                 assert( args.size() == 1 );
    534                 assert( args.front() );
    535 
    536                 return new AddressExpr( args.front() );
    537           case OperatorNode::Cast:
     428                return new UntypedExpr( new NameExpr( opName[ op->get_type() ] ), args );
     429
     430          case OperatorNode::Attr:
    538431                {
    539                         TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args());
    540                         assert( arg );
    541 
    542                         DeclarationNode *decl_node = arg->get_decl();
    543                         ExpressionNode *expr_node = dynamic_cast<ExpressionNode *>( arg->get_link());
    544 
    545                         Type *targetType = decl_node->buildType();
    546                         if ( dynamic_cast< VoidType* >( targetType ) ) {
    547                                 delete targetType;
    548                                 return new CastExpr( expr_node->build(), maybeBuild< Expression >( get_argName() ) );
     432                        VarRefNode *var = dynamic_cast<VarRefNode *>( get_args() );
     433                        assert( var );
     434                        if ( ! get_args()->get_link() ) {
     435                                return new AttrExpr( maybeBuild<Expression>(var), ( Expression*)0);
     436                        } else if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args()->get_link() ) ) {
     437                                return new AttrExpr( maybeBuild<Expression>(var), arg->get_decl()->buildType() );
    549438                        } else {
    550                                 return new CastExpr( expr_node->build(),targetType, maybeBuild< Expression >( get_argName() ) );
     439                                return new AttrExpr( maybeBuild<Expression>(var), args.back() );
    551440                        } // if
    552441                }
    553           case OperatorNode::FieldSel:
    554                 {
    555                         assert( args.size() == 2 );
    556 
    557                         NameExpr *member = dynamic_cast<NameExpr *>( args.back());
    558                         // TupleExpr *memberTup = dynamic_cast<TupleExpr *>( args.back());
    559 
    560                         if ( member != 0 ) {
    561                                 UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), args.front());
    562                                 delete member;
    563                                 return ret;
    564                                 /* else if ( memberTup != 0 )
    565                                    {
    566                                    UntypedMemberExpr *ret = new UntypedMemberExpr( memberTup->get_name(), args.front());
    567                                    delete member;
    568                                    return ret;
    569                                    } */
    570                         } else
    571                                 assert( false );
    572                 }
    573           case OperatorNode::PFieldSel:
    574                 {
    575                         assert( args.size() == 2 );
    576 
    577                         NameExpr *member = dynamic_cast<NameExpr *>( args.back());  // modify for Tuples   xxx
    578                         assert( member != 0 );
    579 
    580                         UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    581                         deref->get_args().push_back( args.front() );
    582 
    583                         UntypedMemberExpr *ret = new UntypedMemberExpr( member->get_name(), deref );
    584                         delete member;
    585                         return ret;
    586                 }
    587           case OperatorNode::AlignOf:
    588           case OperatorNode::SizeOf:
    589                 {
    590 ///     bool isSizeOf = ( op->get_type() == OperatorNode::SizeOf );
    591 
    592                         if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args()) ) {
    593                                 return new SizeofExpr( arg->get_decl()->buildType());
    594                         } else {
    595                                 return new SizeofExpr( args.front());
    596                         } // if
    597                 }
    598           case OperatorNode::Attr:
    599                 {
    600                         VarRefNode *var = dynamic_cast<VarRefNode *>( get_args());
    601                         assert( var );
    602                         if ( ! get_args()->get_link() ) {
    603                                 return new AttrExpr( var->build(), ( Expression*)0);
    604                         } else if ( TypeValueNode * arg = dynamic_cast<TypeValueNode *>( get_args()->get_link()) ) {
    605                                 return new AttrExpr( var->build(), arg->get_decl()->buildType());
    606                         } else {
    607                                 return new AttrExpr( var->build(), args.back());
    608                         } // if
    609                 }
    610           case OperatorNode::CompLit:
    611                 throw UnimplementedError( "C99 compound literals" );
    612                 // the short-circuited operators
    613           case OperatorNode::Or:
    614           case OperatorNode::And:
    615                 assert( args.size() == 2);
    616                 return new LogicalExpr( notZeroExpr( args.front() ), notZeroExpr( args.back() ), ( op->get_type() == OperatorNode::And ) );
    617442          case OperatorNode::Cond:
    618443                {
     
    626451          case OperatorNode::NCond:
    627452                throw UnimplementedError( "GNU 2-argument conditional expression" );
    628           case OperatorNode::Comma:
    629                 {
    630                         assert( args.size() == 2);
    631                         std::list< Expression * >::const_iterator i = args.begin();
    632                         Expression *ret = *i++;
    633                         while ( i != args.end() ) {
    634                                 ret = new CommaExpr( ret, *i++ );
    635                         }
    636                         return ret;
    637                 }
    638453                // Tuples
    639454          case OperatorNode::TupleC:
     
    644459                }
    645460          default:
    646                 // shouldn't happen
     461                assert( ((void)"CompositeExprNode::build", false) );
    647462                return 0;
    648463        } // switch
     
    655470        for ( ExpressionNode *cur = arguments; cur != 0; cur = dynamic_cast< ExpressionNode* >( cur->get_link() ) ) {
    656471                cur->printOneLine( os, indent );
    657         }
     472        } // for
    658473        os << ") ";
    659474}
     
    698513
    699514Expression *AsmExprNode::build() const {
    700         return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)constraint->build(), operand->build() );
     515        return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)maybeBuild<Expression>(constraint), maybeBuild<Expression>(operand) );
    701516}
    702517
     
    736551//##############################################################################
    737552
    738 CommaExprNode::CommaExprNode(): CompositeExprNode( new OperatorNode( OperatorNode::Comma )) {}
    739 
    740 CommaExprNode::CommaExprNode( ExpressionNode *exp ) : CompositeExprNode( new OperatorNode( OperatorNode::Comma ), exp ) {
    741 }
    742 
    743 CommaExprNode::CommaExprNode( ExpressionNode *exp1, ExpressionNode *exp2) : CompositeExprNode( new OperatorNode( OperatorNode::Comma ), exp1, exp2) {
    744 }
    745 
    746 CommaExprNode *CommaExprNode::add_to_list( ExpressionNode *exp ) {
    747         add_arg( exp );
    748 
    749         return this;
    750 }
    751 
    752 CommaExprNode::CommaExprNode( const CommaExprNode &other ) : CompositeExprNode( other ) {
    753 }
    754 
    755 //##############################################################################
    756 
    757553ValofExprNode::ValofExprNode( StatementNode *s ): body( s ) {}
    758554
     
    775571
    776572Expression *ValofExprNode::build() const {
    777         return new UntypedValofExpr ( get_body()->build(), maybeBuild< Expression >( get_argName() ) );
     573        return new UntypedValofExpr ( maybeBuild<Statement>(get_body()), maybeBuild< Expression >( get_argName() ) );
    778574}
    779575
     
    851647        os << "Type:";
    852648        get_decl()->print( os, indent + 2);
     649}
     650
     651
     652CompoundLiteralNode::CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids ) : type( type ), kids( kids ) {}
     653CompoundLiteralNode::CompoundLiteralNode( const CompoundLiteralNode &other ) : ExpressionNode( other ), type( other.type ), kids( other.kids ) {}
     654
     655CompoundLiteralNode::~CompoundLiteralNode() {
     656        delete kids;
     657        delete type;
     658}
     659
     660CompoundLiteralNode *CompoundLiteralNode::clone() const {
     661        return new CompoundLiteralNode( *this );
     662}
     663
     664void CompoundLiteralNode::print( std::ostream &os, int indent ) const {
     665        os << string( indent,' ' ) << "CompoundLiteralNode:" << endl;
     666
     667        os << string( indent + 2, ' ' ) << "type:" << endl;
     668        if ( type != 0 )
     669                type->print( os, indent + 4 );
     670
     671        os << string( indent + 2, ' ' ) << "initialization:" << endl;
     672        if ( kids != 0 )
     673                kids->printList( os, indent + 4 );
     674}
     675
     676void CompoundLiteralNode::printOneLine( std::ostream &os, int indent ) const {
     677        os << "( ";
     678        if ( type ) type->print( os );
     679        os << ", ";
     680        if ( kids ) kids->printOneLine( os );
     681        os << ") ";
     682}
     683
     684Expression *CompoundLiteralNode::build() const {
     685        Declaration * newDecl = maybeBuild<Declaration>(type); // compound literal type
     686        if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
     687                return new CompoundLiteralExpr( newDeclWithType->get_type(), maybeBuild<Initializer>(kids) );
     688        // these types do not have associated type information
     689        } else if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( newDecl )  ) {
     690                return new CompoundLiteralExpr( new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() ), maybeBuild<Initializer>(kids) );
     691        } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( newDecl )  ) {
     692                return new CompoundLiteralExpr( new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() ), maybeBuild<Initializer>(kids) );
     693        } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( newDecl )  ) {
     694                return new CompoundLiteralExpr( new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() ), maybeBuild<Initializer>(kids) );
     695        } else {
     696                assert( false );
     697        } // if
    853698}
    854699
  • src/Parser/InitializerNode.cc

    r679864e1 r242d458  
    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
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 15:49:42 2015
    13 // Update Count     : 3
    14 // 
     12// Last Modified On : Mon Jul  4 15:37:15 2016
     13// Update Count     : 15
     14//
    1515
    1616#include <cassert>
     
    2323
    2424InitializerNode::InitializerNode( ExpressionNode *_expr, bool aggrp, ExpressionNode *des )
    25         : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ) {
     25        : expr( _expr ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    2626        if ( aggrp )
    2727                kids = dynamic_cast< InitializerNode *>( get_link() );
     
    3232
    3333InitializerNode::InitializerNode( InitializerNode *init, bool aggrp, ExpressionNode *des )
    34         : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ) {
     34        : expr( 0 ), aggregate( aggrp ), designator( des ), kids( 0 ), maybeConstructed( true ) {
    3535        if ( init != 0 )
    3636                set_link(init);
     
    8080
    8181        if ( aggregate ) {
    82                 assert( next_init() != 0 );
     82                //assert( next_init() != 0 );
    8383
    8484                std::list< Initializer *> initlist;
     
    9191                } // if
    9292
    93                 return new ListInit( initlist, designlist );
     93                return new ListInit( initlist, designlist, maybeConstructed );
    9494        } else {
    9595                std::list< Expression *> designators;
     
    9999
    100100                if ( get_expression() != 0)
    101                         return new SingleInit( get_expression()->build(), designators );
     101                        return new SingleInit( maybeBuild<Expression>( get_expression() ), designators, maybeConstructed );
    102102        } // if
    103103
  • src/Parser/LinkageSpec.cc

    r679864e1 r242d458  
    1818
    1919#include "LinkageSpec.h"
    20 #include "SemanticError.h"
     20#include "Common/SemanticError.h"
    2121
    2222LinkageSpec::Type LinkageSpec::fromString( const std::string &stringSpec ) {
  • src/Parser/ParseNode.cc

    r679864e1 r242d458  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:26:29 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 12 13:26:00 2015
    13 // Update Count     : 36
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sun Jul 24 02:17:01 2016
     13// Update Count     : 90
    1414//
    1515
     16#include <climits>
    1617#include "ParseNode.h"
    1718using namespace std;
     19
     20// Difficult to separate extra parts of constants during lexing because actions are not allow in the middle of patterns:
     21//
     22//              prefix action constant action suffix
     23//
     24// Alternatively, breaking a pattern using BEGIN does not work if the following pattern can be empty:
     25//
     26//              constant BEGIN CONT ...
     27//              <CONT>(...)? BEGIN 0 ... // possible empty suffix
     28//
     29// because the CONT rule is NOT triggered if the pattern is empty. Hence, constants are reparsed here to determine their
     30// type.
     31
     32static Type::Qualifiers emptyQualifiers;                                // no qualifiers on constants
     33
     34static inline bool checkU( char c ) { return c == 'u' || c == 'U'; }
     35static inline bool checkL( char c ) { return c == 'l' || c == 'L'; }
     36static inline bool checkF( char c ) { return c == 'f' || c == 'F'; }
     37static inline bool checkD( char c ) { return c == 'd' || c == 'D'; }
     38static inline bool checkI( char c ) { return c == 'i' || c == 'I'; }
     39static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
     40
     41ConstantNode *makeConstantInteger( std::string & str ) {
     42        static const BasicType::Kind kind[2][3] = {
     43                { BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
     44                { BasicType::UnsignedInt, BasicType::LongUnsignedInt, BasicType::LongLongUnsignedInt },
     45        };
     46        bool dec = true, Unsigned = false;                                      // decimal, unsigned constant
     47        int size;                                                                                       // 0 => int, 1 => long, 2 => long long
     48        unsigned long long v;                                                           // converted integral value
     49        size_t last = str.length() - 1;                                         // last character of constant
     50
     51        if ( str[0] == '0' ) {                                                          // octal/hex constant ?
     52                dec = false;
     53                if ( last != 0 && checkX( str[1] ) ) {                  // hex constant ?
     54                        sscanf( (char *)str.c_str(), "%llx", &v );
     55                        //printf( "%llx %llu\n", v, v );
     56                } else {                                                                                // octal constant
     57                        sscanf( (char *)str.c_str(), "%llo", &v );
     58                        //printf( "%llo %llu\n", v, v );
     59                } // if
     60        } else {                                                                                        // decimal constant ?
     61                sscanf( (char *)str.c_str(), "%llu", &v );
     62                //printf( "%llu %llu\n", v, v );
     63        } // if
     64
     65        if ( v <= INT_MAX ) {                                                           // signed int
     66                size = 0;
     67        } else if ( v <= UINT_MAX && ! dec ) {                          // unsigned int
     68                size = 0;
     69                Unsigned = true;                                                                // unsigned
     70        } else if ( v <= LONG_MAX ) {                                           // signed long int
     71                size = 1;
     72        } else if ( v <= ULONG_MAX && ( ! dec || LONG_MAX == LLONG_MAX ) ) { // signed long int
     73                size = 1;
     74                Unsigned = true;                                                                // unsigned long int
     75        } else if ( v <= LLONG_MAX ) {                                          // signed long long int
     76                size = 2;
     77        } else {                                                                                        // unsigned long long int
     78                size = 2;
     79                Unsigned = true;                                                                // unsigned long long int
     80        } // if
     81
     82        if ( checkU( str[last] ) ) {                                            // suffix 'u' ?
     83                Unsigned = true;
     84                if ( last > 0 && checkL( str[last - 1] ) ) {    // suffix 'l' ?
     85                        size = 1;
     86                        if ( last > 1 && checkL( str[last - 2] ) ) { // suffix 'll' ?
     87                                size = 2;
     88                        } // if
     89                } // if
     90        } else if ( checkL( str[ last ] ) ) {                           // suffix 'l' ?
     91                size = 1;
     92                if ( last > 0 && checkL( str[last - 1] ) ) { // suffix 'll' ?
     93                        size = 2;
     94                        if ( last > 1 && checkU( str[last - 2] ) ) { // suffix 'u' ?
     95                                Unsigned = true;
     96                        } // if
     97                } else {
     98                        if ( last > 0 && checkU( str[last - 1] ) ) { // suffix 'u' ?
     99                                Unsigned = true;
     100                        } // if
     101                } // if
     102        } // if
     103
     104        return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[Unsigned][size] ), str ), nullptr ) );
     105} // makeConstantInteger
     106
     107ConstantNode *makeConstantFloat( std::string & str ) {
     108        static const BasicType::Kind kind[2][3] = {
     109                { BasicType::Float, BasicType::Double, BasicType::LongDouble },
     110                { BasicType::FloatComplex, BasicType::DoubleComplex, BasicType::LongDoubleComplex },
     111        };
     112
     113        bool complx = false;                                                            // real, complex
     114        int size = 1;                                                                           // 0 => float, 1 => double (default), 2 => long double
     115        // floating-point constant has minimum of 2 characters: 1. or .1
     116        size_t last = str.length() - 1;
     117
     118        if ( checkI( str[last] ) ) {                                            // imaginary ?
     119                complx = true;
     120                last -= 1;                                                                              // backup one character
     121        } // if
     122
     123        if ( checkF( str[last] ) ) {                                            // float ?
     124                size = 0;
     125        } else if ( checkD( str[last] ) ) {                                     // double ?
     126                size = 1;
     127        } else if ( checkL( str[last] ) ) {                                     // long double ?
     128                size = 2;
     129        } // if
     130        if ( ! complx && checkI( str[last - 1] ) ) {            // imaginary ?
     131                complx = true;
     132        } // if
     133
     134        return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, kind[complx][size] ), str ), nullptr ) );
     135} // makeConstantFloat
     136
     137ConstantNode *makeConstantChar( std::string & str ) {
     138        return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ), nullptr ) );
     139} // makeConstantChar
     140
     141ConstantNode *makeConstantStr( std::string & str ) {
     142        // string should probably be a primitive type
     143        ArrayType *at = new ArrayType( emptyQualifiers, new BasicType( emptyQualifiers, BasicType::Char ),
     144                                                                   new ConstantExpr(
     145                                                                           Constant( new BasicType( emptyQualifiers, BasicType::UnsignedInt ),
     146                                                                                                 toString( str.size()+1-2 ) ) ),  // +1 for '\0' and -2 for '"'
     147                                                                   false, false );
     148        return new ConstantNode( new ConstantExpr( Constant( at, str ), nullptr ) );
     149} // makeConstantStr
     150
    18151
    19152// Builder
     
    28161};
    29162
    30 ParseNode *ParseNode::get_link() const {
    31         return next;
    32 }
    33 
    34163ParseNode *ParseNode::get_last() {
    35164        ParseNode *current = this;
     
    42171
    43172ParseNode *ParseNode::set_link( ParseNode *next_ ) {
    44         if ( next_ == 0 ) return this;
    45 
    46         get_last()->next = next_;
    47 
     173        if ( next_ != 0 ) get_last()->next = next_;
    48174        return this;
    49175}
  • src/Parser/ParseNode.h

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // ParseNode.h -- 
     7// ParseNode.h --
    88//
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:28:16 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 19 15:59:27 2015
    13 // Update Count     : 174
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Fri Aug  5 07:49:32 2016
     13// Update Count     : 288
    1414//
    1515
     
    2020#include <list>
    2121#include <iterator>
    22 
    23 #include "utility.h"
     22#include <memory>
     23
     24#include "Common/utility.h"
    2425#include "Parser/LinkageSpec.h"
    2526#include "SynTree/Type.h"
     27#include "SynTree/Expression.h"
    2628//#include "SynTree/Declaration.h"
    27 #include "UniqueName.h"
     29#include "Common/UniqueName.h"
     30#include "SynTree/Label.h"
    2831
    2932class ExpressionNode;
     
    4043        ParseNode();
    4144        ParseNode( const std::string * );
    42         ParseNode( const std::string & );  // for copy constructing subclasses
     45        ParseNode( const std::string & );                                       // for copy constructing subclasses
    4346        virtual ~ParseNode();
    4447
    45         ParseNode *get_link() const;
     48        ParseNode *get_link() const { return next; }
    4649        ParseNode *get_last();
    4750        ParseNode *set_link( ParseNode * );
     
    5962  protected:
    6063        std::string name;
     64        static int indent_by;
    6165        ParseNode *next;
    62         static int indent_by;
    6366};
    6467
     
    7477        virtual ExpressionNode *clone() const = 0;
    7578
    76         virtual CommaExprNode *add_to_list( ExpressionNode * );
     79        // virtual CommaExprNode *add_to_list( ExpressionNode * );
    7780
    7881        ExpressionNode *get_argName() const { return argName; }
    7982        ExpressionNode *set_argName( const std::string *aName );
    8083        ExpressionNode *set_argName( ExpressionNode *aDesignator );
     84        bool get_extension() const { return extension; }
     85        ExpressionNode *set_extension( bool exten ) { extension = exten; return this; }
    8186
    8287        virtual void print( std::ostream &, int indent = 0) const = 0;
     
    8792        void printDesignation ( std::ostream &, int indent = 0) const;
    8893  private:
    89         ExpressionNode *argName;
     94        ExpressionNode *argName = 0;
     95        bool extension = false;
     96};
     97
     98template< typename T >
     99struct maybeBuild_t<Expression, T> {
     100        static inline Expression * doit( const T *orig ) {
     101                if ( orig ) {
     102                        Expression *p = orig->build();
     103                        p->set_extension( orig->get_extension() );
     104                        return p;
     105                } else {
     106                        return 0;
     107                } // if
     108        }
    90109};
    91110
     
    107126        enum Type { Integer, Float, Character, String };
    108127
    109         ConstantNode( Type, std::string * );
    110         ~ConstantNode() { delete &value; }
     128        ConstantNode( ConstantExpr * );
     129        ConstantNode( const ConstantNode &other ) : expr( other.expr->clone() ) {};
     130        ~ConstantNode() { delete expr; }
    111131
    112132        virtual ConstantNode *clone() const { return new ConstantNode( *this ); }
    113         Type get_type( void ) const { return type; }
    114         virtual void print( std::ostream &, int indent = 0) const;
    115         virtual void printOneLine( std::ostream &, int indent = 0) const;
    116 
    117         const std::string &get_value() const { return value; }
     133        virtual void print( std::ostream &, int indent = 0) const;
     134        virtual void printOneLine( std::ostream &, int indent = 0) const;
     135
    118136        ConstantNode *appendstr( const std::string *newValue );
    119137
    120138        Expression *build() const;
    121139  private:
    122         Type type;
    123         BasicType::Kind btype;
    124         std::string &value;
    125 };
     140        ConstantExpr *expr;
     141};
     142
     143ConstantNode *makeConstantInteger( std::string & );
     144ConstantNode *makeConstantFloat( std::string & );
     145ConstantNode *makeConstantChar( std::string & );
     146ConstantNode *makeConstantStr( std::string & );
    126147
    127148class VarRefNode : public ExpressionNode {
     
    174195class OperatorNode : public ExpressionNode {
    175196  public:
    176         enum Type { TupleC, Comma, TupleFieldSel,
    177                                 Cond, NCond,
    178                                 SizeOf, AlignOf, Attr, CompLit, Plus, Minus, Mul, Div, Mod, Or, And,
    179                                 BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq,
    180                                 Assign, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn,
    181                                 ERAssn, OrAssn, Index, FieldSel, PFieldSel, Range,
     197        enum Type { TupleC, Comma, TupleFieldSel, // n-adic
     198                                // triadic
     199                                Cond, NCond,
     200                                // diadic
     201                                SizeOf, AlignOf, OffsetOf, Attr, Plus, Minus, Mul, Div, Mod, Or, And,
     202                                BitOr, BitAnd, Xor, Cast, LShift, RShift, LThan, GThan, LEThan, GEThan, Eq, Neq,
     203                                Assign, MulAssn, DivAssn, ModAssn, PlusAssn, MinusAssn, LSAssn, RSAssn, AndAssn, ERAssn, OrAssn,
     204                                Index, FieldSel, PFieldSel, Range,
     205                                // monadic
    182206                                UnPlus, UnMinus, AddressOf, PointTo, Neg, BitNeg, Incr, IncrPost, Decr, DecrPost, LabelAddress,
    183207                                Ctor, Dtor,
     
    199223  private:
    200224        Type type;
    201         static const char *OpName[];
     225};
     226
     227Expression *build_cast( TypeValueNode * arg, ExpressionNode *expr_node );
     228Expression *build_fieldSel( ExpressionNode *expr_node, VarRefNode *member );
     229Expression *build_pfieldSel( ExpressionNode *expr_node, VarRefNode *member );
     230Expression *build_addressOf( ExpressionNode *expr_node );
     231Expression *build_sizeOf( ExpressionNode *expr_node );
     232Expression *build_alignOf( ExpressionNode *expr_node );
     233Expression *build_offsetOf( TypeValueNode * arg, VarRefNode *member );
     234Expression *build_and( ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
     235Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind );
     236Expression *build_opr1( OperatorNode::Type op, ExpressionNode *expr_node );
     237Expression *build_opr2( OperatorNode::Type op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
     238Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 );
     239Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
     240
     241class CompositeExprNode2 : public ExpressionNode {
     242  public:
     243        CompositeExprNode2( Expression *expr );
     244        CompositeExprNode2( const CompositeExprNode2 &other );
     245        virtual ~CompositeExprNode2();
     246
     247        virtual CompositeExprNode2 *clone() const { return new CompositeExprNode2( *this ); }
     248        virtual Expression *build() const { return expr->clone(); }
     249
     250        virtual void print( std::ostream &, int indent = 0) const;
     251        virtual void printOneLine( std::ostream &, int indent = 0) const;
     252  private:
     253        Expression *expr;
    202254};
    203255
     
    263315        virtual void printOneLine( std::ostream &, int indent = 0) const;
    264316
    265         const std::list< std::string > &get_labels() const { return labels; };
     317        const std::list< Label > &get_labels() const { return labels; };
    266318        void append_label( std::string *label ) { labels.push_back( *label ); delete label; }
    267319  private:
    268         std::list< std::string > labels;
    269 };
    270 
    271 class CommaExprNode : public CompositeExprNode {
    272   public:
    273         CommaExprNode();
    274         CommaExprNode( ExpressionNode * );
    275         CommaExprNode( ExpressionNode *, ExpressionNode * );
    276         CommaExprNode( const CommaExprNode &other );
    277 
    278         virtual CommaExprNode *add_to_list( ExpressionNode * );
    279         virtual CommaExprNode *clone() const { return new CommaExprNode( *this ); }
     320        std::list< Label > labels;
    280321};
    281322
     
    307348        ValofExprNode( const ValofExprNode &other );
    308349        ~ValofExprNode();
    309  
     350
    310351        virtual ValofExprNode *clone() const { return new ValofExprNode( *this ); }
    311352
     
    327368        enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary };
    328369        enum Modifier  { Signed, Unsigned, Short, Long };
    329         enum Aggregate { Struct, Union, Context };
     370        enum Aggregate { Struct, Union, Trait };
    330371        enum TypeClass { Type, Dtype, Ftype };
    331 
    332         static const char *storageName[]; 
     372        enum BuiltinType { Valist };
     373
     374        static const char *storageName[];
    333375        static const char *qualifierName[];
    334376        static const char *basicTypeName[];
     
    336378        static const char *aggregateName[];
    337379        static const char *typeClassName[];
     380        static const char *builtinTypeName[];
    338381
    339382        static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle = false );
     
    344387        static DeclarationNode *newForall( DeclarationNode *);
    345388        static DeclarationNode *newFromTypedef( std::string *);
    346         static DeclarationNode *newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields );
     389        static DeclarationNode *newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body );
    347390        static DeclarationNode *newEnum( std::string *name, DeclarationNode *constants );
    348391        static DeclarationNode *newEnumConstant( std::string *name, ExpressionNode *constant );
     
    350393        static DeclarationNode *newFromTypeGen( std::string *, ExpressionNode *params );
    351394        static DeclarationNode *newTypeParam( TypeClass, std::string *);
    352         static DeclarationNode *newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
    353         static DeclarationNode *newContextUse( std::string *name, ExpressionNode *params );
     395        static DeclarationNode *newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
     396        static DeclarationNode *newTraitUse( std::string *name, ExpressionNode *params );
    354397        static DeclarationNode *newTypeDecl( std::string *name, DeclarationNode *typeParams );
    355398        static DeclarationNode *newPointer( DeclarationNode *qualifiers );
     
    361404        static DeclarationNode *newAttr( std::string *, ExpressionNode *expr );
    362405        static DeclarationNode *newAttr( std::string *, DeclarationNode *type );
     406        static DeclarationNode *newBuiltinType( BuiltinType );
    363407
    364408        DeclarationNode *addQualifiers( DeclarationNode *);
     
    399443        LinkageSpec::Type get_linkage() const { return linkage; }
    400444        DeclarationNode *extractAggregate() const;
     445        ExpressionNode *get_enumeratorValue() const { return enumeratorValue; }
     446
     447        bool get_extension() const { return extension; }
     448        DeclarationNode *set_extension( bool exten ) { extension = exten; return this; }
    401449
    402450        DeclarationNode();
     
    411459        std::list< std::string > attributes;
    412460        ExpressionNode *bitfieldWidth;
     461        ExpressionNode *enumeratorValue;
    413462        InitializerNode *initializer;
    414463        bool hasEllipsis;
    415464        LinkageSpec::Type linkage;
     465        bool extension = false;
    416466
    417467        static UniqueName anonymous;
     
    420470class StatementNode : public ParseNode {
    421471  public:
    422         enum Type { Exp,   If,        Switch,  Case,    Default,  Choose,   Fallthru, 
     472        enum Type { Exp,   If,        Switch,  Case,    Default,  Choose,   Fallthru,
    423473                                While, Do,        For,
    424474                                Goto,  Continue,  Break,   Return,  Throw,
     
    453503        std::string get_target() const;
    454504
    455         StatementNode *add_controlexp( ExpressionNode * );
     505        // StatementNode *add_controlexp( ExpressionNode * );
    456506        StatementNode *append_block( StatementNode * );
    457507        StatementNode *append_last_case( StatementNode * );
     
    498548        ExpressionNode *output, *input;
    499549        ConstantNode *clobber;
    500         std::list<std::string> gotolabels;
    501 };
    502 
    503 class NullStmtNode : public CompoundStmtNode {
    504   public:
    505         Statement *build() const;
    506         void print( std::ostream &, int indent = 0 ) const;
     550        std::list< Label > gotolabels;
    507551};
    508552
     
    518562        ExpressionNode *get_designators() const { return designator; }
    519563
     564        InitializerNode *set_maybeConstructed( bool value ) { maybeConstructed = value; return this; }
     565        bool get_maybeConstructed() const { return maybeConstructed; }
     566
    520567        InitializerNode *next_init() const { return kids; }
    521568
     
    528575        bool aggregate;
    529576        ExpressionNode *designator; // may be list
     577        InitializerNode *kids;
     578        bool maybeConstructed;
     579};
     580
     581class CompoundLiteralNode : public ExpressionNode {
     582  public:
     583        CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids );
     584        CompoundLiteralNode( const CompoundLiteralNode &type );
     585        ~CompoundLiteralNode();
     586
     587        virtual CompoundLiteralNode *clone() const;
     588
     589        DeclarationNode *get_type() const { return type; }
     590        CompoundLiteralNode *set_type( DeclarationNode *t ) { type = t; return this; }
     591
     592        InitializerNode *get_initializer() const { return kids; }
     593        CompoundLiteralNode *set_initializer( InitializerNode *k ) { kids = k; return this; }
     594
     595        void print( std::ostream &, int indent = 0 ) const;
     596        void printOneLine( std::ostream &, int indent = 0 ) const;
     597
     598        virtual Expression *build() const;
     599  private:
     600        DeclarationNode *type;
    530601        InitializerNode *kids;
    531602};
     
    539610        while ( cur ) {
    540611                try {
    541                         SynTreeType *result = dynamic_cast< SynTreeType *>( cur->build() );
     612//                      SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::result_of<decltype(&NodeType::build)(NodeType)>::type>( cur ) );
     613                        SynTreeType *result = dynamic_cast< SynTreeType *>( maybeBuild<typename std::pointer_traits<decltype(cur->build())>::element_type>( cur ) );
    542614                        if ( result ) {
    543615                                *out++ = result;
  • src/Parser/Parser.cc

    r679864e1 r242d458  
    1010// Created On       : Sat May 16 14:54:28 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 31 23:45:19 2015
    13 // Update Count     : 4
     12// Last Modified On : Mon Mar 21 18:04:47 2016
     13// Update Count     : 5
    1414//
    1515
    1616#include "Parser.h"
    17 #include "TypedefTable.h"
    1817#include "lex.h"
    1918#include "parser.h"
     19#include "TypedefTable.h"
    2020
    2121// global variables in cfa.y
  • src/Parser/StatementNode.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // StatementNode.cc -- 
     7// StatementNode.cc --
    88//
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 14:59:41 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 30 14:39:39 2015
    13 // Update Count     : 130
     12// Last Modified On : Tue Jul 12 17:21:02 2016
     13// Update Count     : 133
    1414//
    1515
     
    2222#include "SynTree/Expression.h"
    2323#include "parseutility.h"
    24 #include "utility.h"
     24#include "Common/utility.h"
    2525
    2626using namespace std;
    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
     
    107107}
    108108
    109 StatementNode *StatementNode::add_controlexp( ExpressionNode *e ) {
    110         if ( control && e )
    111                 control->add_to_list( e ); // xxx - check this
    112         return this;
    113 }
     109// StatementNode *StatementNode::add_controlexp( ExpressionNode *e ) {
     110//      if ( control && e )
     111//              control->add_to_list( e ); // xxx - check this
     112//      return this;
     113// }
    114114
    115115StatementNode *StatementNode::append_block( StatementNode *stmt ) {
     
    156156                        control->print( os, indent );
    157157                        os << endl;
    158                 } else 
     158                } else
    159159                        os << string( indent, ' ' ) << "Null Statement" << endl;
    160160                break;
     
    177177                if ( block ) {
    178178                        os << string( indent + ParseNode::indent_by, ' ' ) << "Branches of execution: " << endl;
    179                         block->printList( os, indent + 2 * ParseNode::indent_by ); 
     179                        block->printList( os, indent + 2 * ParseNode::indent_by );
    180180                } // if
    181181                if ( target ) {
     
    222222                                branches.pop_front();
    223223                        } // if
    224                         return new IfStmt( labs, notZeroExpr( get_control()->build() ), thenb, elseb );
     224                        return new IfStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), thenb, elseb );
    225225                }
    226226          case While:
    227227                assert( branches.size() == 1 );
    228                 return new WhileStmt( labs, notZeroExpr( get_control()->build() ), branches.front() );
     228                return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() );
    229229          case Do:
    230230                assert( branches.size() == 1 );
    231                 return new WhileStmt( labs, notZeroExpr( get_control()->build() ), branches.front(), true );
     231                return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true );
    232232          case For:
    233233                {
     
    244244                        Expression *cond = 0;
    245245                        if ( ctl->get_condition() != 0 )
    246                                 cond = notZeroExpr( ctl->get_condition()->build() );
     246                                cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) );
    247247
    248248                        Expression *incr = 0;
    249249                        if ( ctl->get_change() != 0 )
    250                                 incr = ctl->get_change()->build();
     250                                incr = maybeBuild<Expression>(ctl->get_change());
    251251
    252252                        return new ForStmt( labs, init, cond, incr, branches.front() );
    253253                }
    254254          case Switch:
    255                 return new SwitchStmt( labs, get_control()->build(), branches );
    256           case Choose:
    257                 return new ChooseStmt( labs, get_control()->build(), branches );
    258           case Fallthru:
    259                 return new FallthruStmt( labs );
    260           case Case:
    261                 return new CaseStmt( labs, get_control()->build(), branches );
     255                return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
     256          case Case:
     257                return new CaseStmt( labs, maybeBuild<Expression>(get_control()), branches );
    262258          case Default:
    263259                return new CaseStmt( labs, 0, branches, true );
     
    266262                        if ( get_target() == "" ) {                                     // computed goto
    267263                                assert( get_control() != 0 );
    268                                 return new BranchStmt( labs, get_control()->build(), BranchStmt::Goto );
     264                                return new BranchStmt( labs, maybeBuild<Expression>(get_control()), BranchStmt::Goto );
    269265                        } // if
    270266
     
    394390                os << string( indent + ParseNode::indent_by, ' ' ) << "Goto Labels:" << endl;
    395391                os << string( indent + 2 * ParseNode::indent_by, ' ' );
    396                 for ( std::list<std::string>::const_iterator i = gotolabels.begin();; ) {
     392                for ( std::list<Label>::const_iterator i = gotolabels.begin();; ) {
    397393                        os << *i;
    398394                        i++;
     
    421417}
    422418
    423 
    424 void NullStmtNode::print( ostream &os, int indent ) const {
    425         os << string( indent, ' ' ) << "Null Statement:" << endl;
    426 }
    427 
    428 Statement *NullStmtNode::build() const {
    429         return new NullStmt;
    430 }
    431 
    432419// Local Variables: //
    433420// tab-width: 4 //
  • src/Parser/TypeData.cc

    r679864e1 r242d458  
    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
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 14 14:57:23 2015
    13 // Update Count     : 32
     12// Last Modified On : Wed Jul 13 18:03:29 2016
     13// Update Count     : 56
    1414//
    1515
     
    1717#include <algorithm>
    1818#include <iterator>
    19 #include "utility.h"
     19#include "Common/utility.h"
    2020#include "TypeData.h"
    2121#include "SynTree/Type.h"
     
    2323#include "SynTree/Expression.h"
    2424#include "SynTree/Statement.h"
     25#include "SynTree/Initializer.h"
    2526
    2627TypeData::TypeData( Kind k ) : kind( k ), base( 0 ), forall( 0 ) {
     
    8485                typeexpr->expr = 0;
    8586                break;
     87          case Builtin:
     88                builtin = new Builtin_t;
     89                break;
    8690          case Attr:
    8791                attr = new Attr_t;
     
    149153                delete typeexpr->expr;
    150154                delete typeexpr;
     155                break;
     156          case Builtin:
     157                delete builtin;
    151158                break;
    152159          case Attr:
     
    193200                newtype->aggregate->name = aggregate->name;
    194201                newtype->aggregate->kind = aggregate->kind;
     202                newtype->aggregate->body = aggregate->body;
    195203                break;
    196204          case AggregateInst:
     
    221229                newtype->typeexpr->expr = maybeClone( typeexpr->expr );
    222230                break;
     231          case Builtin:
     232                newtype->builtin->type = builtin->type;
     233                break;
    223234          case Attr:
    224235                newtype->attr->expr = maybeClone( attr->expr );
     
    317328                        os << string( indent + 2, ' ' ) << "with members " << endl;
    318329                        aggregate->fields->printList( os, indent + 4 );
    319 ///     } else {
    320 ///       os << string( indent + 2, ' ' ) << "with no members " << endl;
     330                } // if
     331                if ( aggregate->body ) {
     332                        os << string( indent + 2, ' ' ) << " with body " << endl;
    321333                } // if
    322334                break;
     
    397409                } // if
    398410                break;
     411          case Builtin:
     412                os << "gcc builtin type";
     413                break;
    399414          default:
    400415                os << "internal error: TypeData::print " << kind  << endl;
     
    436451        for ( std::list< TypeDecl* >::iterator i = outputList.begin(); i != outputList.end(); ++i ) {
    437452                if ( (*i)->get_kind() == TypeDecl::Any ) {
     453                        // add assertion parameters to `type' tyvars in reverse order
     454                        // add dtor:  void ^?{}(T *)
     455                        FunctionType *dtorType = new FunctionType( Type::Qualifiers(), false );
     456                        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 ) );
     457                        (*i)->get_assertions().push_front( new FunctionDecl( "^?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, dtorType, 0, false, false ) );
     458
     459                        // add copy ctor:  void ?{}(T *, T)
     460                        FunctionType *copyCtorType = new FunctionType( Type::Qualifiers(), false );
     461                        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 ) );
     462                        copyCtorType->get_parameters().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new TypeInstType( Type::Qualifiers(), (*i)->get_name(), *i ), 0 ) );
     463                        (*i)->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, copyCtorType, 0, false, false ) );
     464
     465                        // add default ctor:  void ?{}(T *)
     466                        FunctionType *ctorType = new FunctionType( Type::Qualifiers(), false );
     467                        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 ) );
     468                        (*i)->get_assertions().push_front( new FunctionDecl( "?{}", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, ctorType, 0, false, false ) );
     469
     470                        // add assignment operator:  T * ?=?(T *, T)
    438471                        FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    439472                        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 ) );
     
    477510                return buildVariable();
    478511        } else {
    479                 return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init, isInline, isNoreturn );
     512                return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init, std::list< Attribute * >(),  isInline, isNoreturn );
    480513        } // if
    481514        return 0;
     
    506539          case Typeof:
    507540                return buildTypeof();
     541          case Builtin:
     542                return new VarArgsType( buildQualifiers() );
    508543          case Attr:
    509544                return buildAttr();
     
    799834          case DeclarationNode::Struct:
    800835                at = new StructDecl( aggregate->name );
     836                buildForall( aggregate->params, at->get_parameters() );
    801837                break;
    802838          case DeclarationNode::Union:
    803839                at = new UnionDecl( aggregate->name );
    804                 break;
    805           case DeclarationNode::Context:
    806                 at = new ContextDecl( aggregate->name );
     840                buildForall( aggregate->params, at->get_parameters() );
     841                break;
     842          case DeclarationNode::Trait:
     843                at = new TraitDecl( aggregate->name );
     844                buildList( aggregate->params, at->get_parameters() );
    807845                break;
    808846          default:
    809847                assert( false );
    810848        } // switch
    811         buildList( aggregate->params, at->get_parameters() );
     849
    812850        buildList( aggregate->fields, at->get_members() );
     851        at->set_body( aggregate->body );
    813852
    814853        return at;
    815854}
    816 
    817 /// namespace {
    818 /// Type*
    819 /// makeType( Declaration* decl )
    820 /// {
    821 ///   if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType* >( decl ) ) {
    822 ///     return dwt->get_type()->clone();
    823 ///   } else {
    824 ///     return 0;
    825 ///   }
    826 /// }
    827 /// }
    828855
    829856ReferenceToType *TypeData::buildAggInst() const {
     
    842869                        ret = new UnionInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    843870                        break;
    844                   case DeclarationNode::Context:
    845                         ret = new ContextInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
     871                  case DeclarationNode::Trait:
     872                        ret = new TraitInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    846873                        break;
    847874                  default:
     
    880907        EnumDecl *ret = new EnumDecl( enumeration->name );
    881908        buildList( enumeration->constants, ret->get_members() );
     909        std::list< Declaration * >::iterator members = ret->get_members().begin();
     910        for ( const DeclarationNode *cur = enumeration->constants; cur != NULL; cur = dynamic_cast<DeclarationNode *>( cur->get_link() ), ++members ) {
     911                if ( cur->get_enumeratorValue() != NULL ) {
     912                        ObjectDecl *member = dynamic_cast<ObjectDecl *>(*members);
     913                        member->set_init( new SingleInit( maybeBuild< Expression >( cur->get_enumeratorValue() ), std::list< Expression * >() ) );
     914                } // if
     915        } // for
    882916        return ret;
    883917}
  • src/Parser/TypeData.h

    r679864e1 r242d458  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 26 23:39:03 2015
    13 // Update Count     : 16
     12// Last Modified On : Tue Jul 12 20:52:02 2016
     13// Update Count     : 20
    1414//
    1515
     
    2424struct TypeData {
    2525        enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst,
    26                                 Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Attr } kind;
     26                                Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Builtin, Attr } kind;
    2727
    2828        TypeData( Kind k = Unknown );
    2929        ~TypeData();
    3030        void print( std::ostream &, int indent = 0 ) const;
    31         TypeData *clone() const;
     31        TypeData * clone() const;
    3232
    33         Type *build() const;
    34         FunctionType *buildFunction() const;
     33        Type * build() const;
     34        FunctionType * buildFunction() const;
    3535
    36         TypeData *base;
     36        TypeData * base;
    3737        std::list< DeclarationNode::Qualifier > qualifiers;
    38         DeclarationNode *forall;
     38        DeclarationNode * forall;
    3939
    4040        struct Basic_t {
     
    4646                DeclarationNode::Aggregate kind;
    4747                std::string name;
    48                 DeclarationNode *params;
    49                 ExpressionNode  *actuals;                                               // holds actual parameters later applied to AggInst
    50                 DeclarationNode *fields;
     48                DeclarationNode * params;
     49                ExpressionNode  * actuals;                                              // holds actual parameters later applied to AggInst
     50                DeclarationNode * fields;
     51                bool body;
    5152        };
    5253
    5354        struct AggInst_t {
    54                 TypeData *aggregate;
    55                 ExpressionNode *params;
     55                TypeData * aggregate;
     56                ExpressionNode * params;
    5657        };
    5758
    5859        struct Array_t {
    59                 ExpressionNode *dimension;
     60                ExpressionNode * dimension;
    6061                bool isVarLen;
    6162                bool isStatic;
     
    6465        struct Enumeration_t {
    6566                std::string name;
    66                 DeclarationNode *constants;
     67                DeclarationNode * constants;
    6768        };
    6869
    6970        struct Function_t {
    70                 DeclarationNode *params;
    71                 DeclarationNode *idList;                                                // old-style
    72                 DeclarationNode *oldDeclList;
    73                 StatementNode *body;
     71                DeclarationNode * params;
     72                DeclarationNode * idList;                                               // old-style
     73                DeclarationNode * oldDeclList;
     74                StatementNode * body;
    7475                bool hasBody;
    7576                bool newStyle;
     
    7980                std::string name;
    8081                bool isTypedef;                                                                 // false => TYPEGENname, true => TYPEDEFname
    81                 DeclarationNode *params;
    82                 ExpressionNode *actuals;
    83                 DeclarationNode *assertions;
     82                DeclarationNode * params;
     83                ExpressionNode * actuals;
     84                DeclarationNode * assertions;
    8485        };
    8586
     
    8788                DeclarationNode::TypeClass tyClass;
    8889                std::string name;
    89                 DeclarationNode *assertions;
     90                DeclarationNode * assertions;
    9091        };
    9192
    9293        struct Tuple_t {
    93                 DeclarationNode *members;
     94                DeclarationNode * members;
    9495        };
    9596 
    9697        struct Typeof_t {
    97                 ExpressionNode *expr;
     98                ExpressionNode * expr;
     99        };
     100
     101        struct Builtin_t {
     102                DeclarationNode::BuiltinType type;
    98103        };
    99104
    100105        struct Attr_t {
    101106                std::string name;
    102                 ExpressionNode *expr;
    103                 DeclarationNode *type;
     107                ExpressionNode * expr;
     108                DeclarationNode * type;
    104109        };
    105110
    106111        union {
    107                 Basic_t *basic;
    108                 Aggregate_t *aggregate;
    109                 AggInst_t *aggInst;
    110                 Array_t *array;
    111                 Enumeration_t *enumeration;
    112                 Function_t *function;
    113                 Symbolic_t *symbolic;
    114                 Variable_t *variable;
    115                 Tuple_t *tuple;
    116                 Typeof_t *typeexpr;
    117                 Attr_t *attr;
     112                Basic_t * basic;
     113                Aggregate_t * aggregate;
     114                AggInst_t * aggInst;
     115                Array_t * array;
     116                Enumeration_t * enumeration;
     117                Function_t * function;
     118                Symbolic_t * symbolic;
     119                Variable_t * variable;
     120                Tuple_t * tuple;
     121                Typeof_t * typeexpr;
     122                Attr_t * attr;
     123                Builtin_t * builtin;
    118124        };
    119125
    120         TypeData *extractAggregate( bool toplevel = true ) const;
     126        TypeData * extractAggregate( bool toplevel = true ) const;
    121127        // helper function for DeclNodeImpl::build
    122         Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init = 0 ) const;
     128        Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer * init = 0 ) const;
    123129        // helper functions for build()
    124130        Type::Qualifiers buildQualifiers() const;
  • src/Parser/TypedefTable.cc

    r679864e1 r242d458  
    1010// Created On       : Sat May 16 15:20:13 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 26 07:30:16 2015
    13 // Update Count     : 19
     12// Last Modified On : Wed Apr 13 16:57:30 2016
     13// Update Count     : 24
    1414//
    1515
    1616#include <map>
    1717#include <list>
     18#include <cassert>
    1819#include "TypedefTable.h"
    19 #include <cassert>
    2020using namespace std;
    2121
     
    2929TypedefTable::TypedefTable() : currentScope( 0 ) {}
    3030
     31bool TypedefTable::exists( const string &identifier ) {
     32        return table.count( identifier ) > 0;
     33}
     34
     35int TypedefTable::isKind( const string &identifier ) const {
     36        tableType::const_iterator id_pos = table.find( identifier );
     37        // Name lookup defaults to identifier, and then the identifier's kind is set by the parser.
     38        if ( id_pos == table.end() ) return IDENTIFIER;
     39        return id_pos->second.begin()->kind;
     40}
     41
    3142void TypedefTable::changeKind( const string &identifier, kind_t kind ) {
    3243        tableType::iterator id_pos = table.find( identifier );
    33         if ( id_pos == table.end() ) {
    34                 return;
    35         } else {
    36                 (*((*id_pos ).second.begin())).kind = kind;
    37                 return;
     44        if ( id_pos == table.end() ) return;
     45        id_pos->second.begin()->kind = kind;
     46}
     47
     48// SKULLDUGGERY: Generate a typedef for the aggregate name so the aggregate does not have to be qualified by
     49// "struct". Only generate the typedef, if the name is not in use. The typedef is implicitly (silently) removed
     50// if the name is explicitly used.
     51void TypedefTable::makeTypedef( const string &name ) {
     52        if ( ! typedefTable.exists( name ) ) {
     53                typedefTable.addToEnclosingScope( name, TypedefTable::TD );
    3854        } // if
    3955}
    4056
    41 bool TypedefTable::isKind( const string &identifier, kind_t kind ) const {
    42         tableType::const_iterator id_pos = table.find( identifier );
    43         if ( id_pos == table.end() ) {
    44                 return true;
    45         } else {
    46                 return (*((*id_pos ).second.begin())).kind == kind;
    47         } // if
    48 }
    49 
    50 bool TypedefTable::isIdentifier( const string &identifier ) const {
    51         return isKind( identifier, ID );
    52 }
    53 
    54 bool TypedefTable::isTypedef( const string &identifier ) const {
    55         return isKind( identifier, TD );
    56 }
    57 
    58 bool TypedefTable::isTypegen( const string &identifier ) const {
    59         return isKind( identifier, TG );
    60 }
    61 
    6257void TypedefTable::addToScope( const std::string &identifier, kind_t kind, int scope ) {
    63         if ( currentContext != "" && scope == contextScope ) {
     58        if ( currentTrait != "" && scope == contextScope ) {
    6459                DeferredEntry entry = { identifier, kind };
    65                 contexts[currentContext].push_back( entry );
     60                contexts[currentTrait].push_back( entry );
    6661        } else {
    6762                debugPrint( "Adding " << identifier << " as kind " << kind << " scope " << scope << " from scope " << currentScope << endl );
     
    112107}
    113108
    114 void TypedefTable::openContext( const std::string &contextName ) {
     109void TypedefTable::openTrait( const std::string &contextName ) {
    115110        map< string, deferListType >::iterator i = contexts.find( contextName );
    116111        if ( i != contexts.end() ) {
     
    150145}
    151146
    152 void TypedefTable::enterContext( const std::string &contextName ) {
    153         currentContext = contextName;
     147void TypedefTable::enterTrait( const std::string &contextName ) {
     148        currentTrait = contextName;
    154149        contextScope = currentScope;
    155150}
    156151
    157 void TypedefTable::leaveContext() {
    158         currentContext = "";
     152void TypedefTable::leaveTrait() {
     153        currentTrait = "";
    159154}
    160155
  • src/Parser/TypedefTable.h

    r679864e1 r242d458  
    1010// Created On       : Sat May 16 15:24:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun 25 22:52:15 2015
    13 // Update Count     : 11
     12// Last Modified On : Wed Apr 13 16:59:56 2016
     13// Update Count     : 27
    1414//
    1515
     
    2222#include <stack>
    2323
     24#include "lex.h"
     25#include "parser.h"
     26
    2427class TypedefTable {
    2528  public:
    26         enum kind_t { ID, TD, TG };
     29        enum kind_t { ID = IDENTIFIER, TD = TYPEDEFname, TG = TYPEGENname };
    2730  private:
    2831        struct Entry {
     
    4043
    4144        int currentScope;
    42         std::string currentContext;
     45        std::string currentTrait;
    4346        int contextScope;
    4447       
     
    4952        std::stack< std::string > nextIdentifiers;
    5053
    51         bool isKind( const std::string &identifier, kind_t kind ) const;
    5254        void addToScope( const std::string &identifier, kind_t kind, int scope );
    5355  public:
    5456        TypedefTable();
    5557
    56         bool isIdentifier( const std::string &identifier ) const;
    57         bool isTypedef( const std::string &identifier ) const;
    58         bool isTypegen( const std::string &identifier ) const;
     58        bool exists( const std::string &identifier );
     59        int isKind( const std::string &identifier ) const;
     60        void changeKind( const std::string &identifier, kind_t kind );
    5961
    60         void changeKind( const std::string &identifier, kind_t kind );
    61        
     62        void makeTypedef( const std::string &name );
     63
    6264        // "addToCurrentScope" adds the identifier/type pair to the current scope. This does less than you think it does,
    6365        // since each declaration is within its own scope.  Mostly useful for type parameters.
     
    7981       
    8082        // dump the definitions from a pre-defined context into the current scope
    81         void openContext( const std::string &contextName );
     83        void openTrait( const std::string &contextName );
    8284       
    8385        void enterScope();
    8486        void leaveScope();
    85         void enterContext( const std::string &contextName );
    86         void leaveContext();
     87        void enterTrait( const std::string &contextName );
     88        void leaveTrait();
    8789
    8890        void print() const;
  • src/Parser/lex.cc

    r679864e1 r242d458  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 171
    385 #define YY_END_OF_BUFFER 172
     384#define YY_NUM_RULES 181
     385#define YY_END_OF_BUFFER 182
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[826] =
     393static yyconst flex_int16_t yy_accept[892] =
    394394    {   0,
    395         0,    0,    0,    0,    0,    0,  108,  108,  111,  111,
    396       172,  170,    7,    9,    8,  131,  110,   95,  136,  139,
    397       107,  118,  119,  134,  132,  122,  133,  125,  135,  100,
    398       101,  102,  123,  124,  141,  143,  142,  144,  170,   95,
    399       116,  170,  117,  137,   95,   97,   95,   95,   95,   95,
    400        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    401        95,  120,  140,  121,  138,    7,  170,    4,    4,  171,
    402        98,  171,   99,  108,  109,  115,  111,  112,    7,    9,
    403         0,    8,  148,  166,   95,    0,  160,  130,  153,  161,
    404       158,  145,  156,  146,  157,  155,    0,  105,    3,    0,
    405 
    406       159,  105,  103,    0,    0,  103,  103,    0,    0,  103,
    407       102,  102,  102,    0,  102,  128,  129,  127,  149,  151,
    408       147,  152,  150,    0,    0,    0,    0,    0,    0,    0,
    409         0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
    410       110,  107,   95,    0,    0,  163,   95,   95,   95,   95,
    411        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    412        95,   95,   36,   95,   95,   95,   95,   95,   95,   95,
    413        95,   95,   95,   53,   95,   95,   95,   95,   95,   95,
    414        95,   95,   95,   95,   95,   95,   95,   95,   95,  162,
    415       154,    7,    0,    0,    0,    2,    0,    5,   98,    0,
    416 
    417         0,    0,  108,    0,  114,  113,  113,    0,    0,    0,
    418       111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    419         0,    0,    0,    0,    0,    0,  126,  105,    0,  105,
    420         0,    0,    6,    0,  103,    0,    0,    0,  105,    0,
    421       103,  103,  103,  103,    0,  104,    0,    0,  102,  102,
    422       102,  102,    0,  164,  165,    0,  168,  167,    0,    0,
    423         0,   96,    0,    0,    0,    0,    0,    0,    0,   95,
    424        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    425        95,   95,   95,   95,   95,   95,   95,   95,   14,   95,
    426        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    427 
    428        95,   95,   95,   95,   95,   47,   95,   95,   95,   60,
    429        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    430        95,   95,   82,   95,   95,   95,   95,   95,   95,   95,
    431         0,    0,    0,    0,    0,    0,    0,    0,  113,    0,
    432         0,    0,    0,    0,  113,    0,    0,  169,    0,    0,
    433         0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
    434       105,    0,  103,  103,    0,    0,  104,  104,    0,  104,
    435         0,  104,  102,  102,    0,    0,    0,    0,    0,    0,
    436         0,    0,    0,    0,   95,   95,   95,   95,   95,   95,
    437        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    438 
    439        95,   95,   95,   95,   95,   95,   20,   95,   23,   95,
    440        25,   95,   95,   95,   95,   95,   95,   39,   40,   95,
    441        95,   95,   95,   95,   95,   95,   52,   95,   63,   95,
    442        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    443        83,   95,   95,   90,   95,   95,    0,    0,    0,    0,
     395        0,    0,    0,    0,    0,    0,  116,  116,  119,  119,
     396      182,  180,    7,    9,    8,  139,  118,  103,  144,  147,
     397      115,  126,  127,  142,  140,  130,  141,  133,  143,  108,
     398      109,  110,  131,  132,  149,  151,  150,  152,  180,  103,
     399      124,  180,  125,  145,  103,  105,  103,  103,  103,  103,
     400      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     401      103,  103,  128,  148,  129,  146,    7,  180,    4,    4,
     402      181,  106,  181,  107,  116,  117,  123,  119,  120,    7,
     403        9,    0,    8,  156,  175,  103,    0,  168,  138,  161,
     404      169,  166,  153,  164,  154,  165,  163,    0,  113,    3,
     405
     406        0,  167,  113,  111,    0,    0,  111,  111,    0,    0,
     407      111,  110,  110,  110,    0,  110,  136,  137,  135,  157,
     408      159,  155,  160,  158,    0,    0,    0,    0,    0,    0,
     409        0,    0,    0,    0,    0,    0,    0,    0,    0,  104,
     410      174,    0,  118,  115,  103,    0,    0,  171,    0,  103,
     411      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     412      103,  103,  103,  103,  103,  103,   38,  103,  103,  103,
     413      103,  103,  103,  103,  103,  103,  103,   57,  103,  103,
     414      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     415      103,  103,  103,  103,  170,  162,    7,    0,    0,    0,
     416
     417        2,    0,    5,  106,    0,    0,    0,  116,    0,  122,
     418      121,  121,    0,    0,    0,  119,    0,    0,    0,    0,
    444419        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    445       113,    0,    0,    0,    0,    0,  105,    0,    0,    0,
    446         0,    0,    0,  104,  104,    0,  106,    0,  104,  104,
     420        0,  134,  113,  113,    0,  113,  113,    0,    0,    6,
     421        0,  111,    0,    0,    0,  113,    0,  111,  111,  111,
     422      111,    0,  112,    0,    0,  110,  110,  110,  110,    0,
     423      172,  173,    0,  178,  176,    0,    0,    0,  104,    0,
     424        0,    0,    0,    0,    0,    0,    0,  103,   17,  103,
     425      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     426      103,  103,  103,  103,  103,  103,  103,   14,  103,  103,
     427
     428      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     429      103,  103,  103,  103,  103,  103,   51,  103,  103,  103,
     430       64,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     431      103,  103,  103,  103,  103,   90,  103,  103,  103,  103,
     432      103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
     433        0,  121,    0,    0,    0,    0,    0,  121,    0,    0,
     434      179,    0,    0,    0,    0,    0,    0,    0,  113,    0,
     435      113,    0,  113,    0,    0,  113,    0,  111,  111,    0,
     436        0,  112,  112,    0,  112,    0,  112,  110,  110,    0,
     437        0,    0,    0,    0,    0,    0,    0,    0,    0,  177,
     438
     439      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     440      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     441      103,  103,  103,   21,  103,   24,  103,   27,  103,  103,
     442      103,  103,  103,  103,  103,   41,  103,   43,  103,  103,
     443      103,  103,  103,  103,  103,   56,  103,   67,  103,  103,
     444      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     445      103,  103,  103,  103,   98,  103,  103,    0,    0,    0,
    447446        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    448         0,    0,    0,   95,   95,   21,   95,   95,   95,   95,
    449 
    450        95,   95,   95,   15,   95,   95,   95,   95,   95,   95,
    451        95,   95,   95,   95,   95,   95,   95,   22,   24,   95,
    452        30,   95,   95,   95,   95,   38,   95,   95,   95,   45,
    453        95,   95,   50,   95,   95,   95,   95,   95,   71,   95,
    454        95,   95,   95,   95,   81,   95,   95,   88,   95,   95,
    455        94,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     447        0,  121,    0,    0,    0,    0,    0,  113,    0,    0,
     448        0,    0,    0,    0,  112,  112,    0,  114,    0,  112,
     449
     450      112,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     451        0,    0,    0,    0,  103,  103,   22,  103,  103,  103,
     452      103,  103,  103,  103,   15,  103,  103,  103,  103,  103,
     453      103,  103,  103,  103,  103,  103,  103,  103,  103,   23,
     454       25,  103,   32,  103,  103,  103,  103,   40,  103,  103,
     455      103,  103,   49,  103,  103,   54,  103,  103,   71,  103,
     456      103,  103,   77,  103,  103,  103,  103,  103,   87,   89,
     457      103,  103,   95,  103,  103,  102,    0,    0,    0,    0,
    456458        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    457       106,    0,    0,  104,  106,  106,    0,  104,    0,    0,
    458         0,    0,    0,    0,    0,    0,    0,    0,   95,    0,
    459        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    460 
    461        95,   95,   95,   95,   95,   55,   95,   95,   95,   95,
    462        95,   95,   95,   26,   95,   95,   95,   37,   42,   95,
    463        95,   48,   95,   57,   64,   95,   95,   70,   72,   75,
    464        76,   78,   79,   95,   85,   95,   95,    0,    1,    0,
    465         0,    0,    0,    0,    0,   98,    0,    0,    0,  113,
    466         0,    0,    0,    0,  106,    0,    0,    0,    0,    0,
    467         0,    0,    0,    0,    0,   95,   95,   17,   95,   95,
    468        95,   95,   95,   95,   95,   16,   95,   95,   31,   95,
    469        95,   95,   95,   95,   95,   95,   95,   95,   95,   33,
    470        95,   35,   95,   44,   49,   95,   95,   84,   95,   95,
    471 
    472         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    473         0,    0,    0,   10,   11,   27,   51,   95,   95,   95,
    474        95,   95,   95,   95,   95,   95,   95,   56,   58,   61,
    475        95,   95,   73,   86,   95,   34,   43,   66,   67,   89,
    476        91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    477         0,    0,    0,   95,   65,   95,   95,   12,   95,   28,
    478        32,   95,   95,   95,   62,   95,   95,   95,   95,    0,
    479         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    480         0,    0,   54,   95,   95,   95,   95,   95,   95,   46,
    481        59,   68,   74,   87,   92,    0,    0,    0,    0,    0,
    482 
    483         0,    0,    0,   95,   95,   13,   18,   29,   95,   95,
    484        95,    0,    0,   95,   95,   95,   95,   69,   93,   95,
    485        80,   19,   41,   77,    0
     459        0,    0,    0,    0,    0,  114,    0,    0,  112,  114,
     460
     461      114,  114,  114,    0,  112,    0,    0,    0,    0,    0,
     462        0,    0,    0,    0,    0,  103,    0,  103,  103,  103,
     463      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
     464      103,  103,  103,   59,  103,  103,  103,  103,  103,  103,
     465      103,  103,   28,  103,  103,  103,   39,   42,   45,  103,
     466      103,   52,  103,   61,   68,  103,  103,   76,   78,   81,
     467       82,   84,   85,  103,  103,   92,  103,  103,    0,    1,
     468        0,    0,    0,    0,    0,    0,  106,    0,    0,    0,
     469      121,    0,    0,    0,    0,  114,    0,  114,  114,    0,
     470        0,    0,    0,    0,    0,    0,    0,    0,  103,  103,
     471
     472       18,  103,  103,  103,  103,  103,  103,  103,   16,  103,
     473      103,  103,   33,  103,  103,  103,  103,  103,  103,  103,
     474      103,  103,  103,  103,  103,   36,   37,  103,   48,   53,
     475      103,  103,  103,   91,  103,  103,    0,    0,    0,    0,
     476        0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
     477       11,   29,   55,  103,  103,  103,  103,  103,  103,  103,
     478      103,  103,  103,  103,   60,   62,   65,  103,  103,   79,
     479       93,  103,  103,   35,  103,   47,   72,   73,  103,   96,
     480       99,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     481        0,    0,    0,  103,   69,  103,  103,   12,  103,  103,
     482
     483       30,   34,  103,  103,  103,   66,  103,  103,  103,  103,
     484      103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
     485        0,    0,    0,    0,    0,    0,   58,  103,  103,  103,
     486      103,  103,  103,  103,   50,   63,   74,   80,   94,  100,
     487      103,  103,  103,    0,    0,    0,    0,    0,    0,    0,
     488        0,  103,  103,   13,   19,  103,  103,   31,  103,  103,
     489      103,   26,   46,   88,    0,    0,  103,  103,  103,  103,
     490      103,  103,   75,  101,  103,   86,   20,  103,  103,   44,
     491       83,  103,  103,  103,  103,  103,  103,  103,   97,   70,
     492        0
     493
    486494    } ;
    487495
     
    496504       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
    497505       42,   11,   43,   11,   11,   44,   11,   45,   11,   46,
    498        11,   11,   47,   48,   49,   11,   11,   50,   11,   11,
    499        51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
    500 
    501        61,   62,   63,   64,   65,   11,   66,   67,   68,   69,
    502        70,   71,   11,   72,   73,   74,   75,   76,   77,   78,
    503        79,   80,   81,   82,   83,   84,    1,    1,    1,    1,
     506       11,   47,   48,   49,   50,   11,   11,   51,   11,   11,
     507       52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
     508
     509       62,   63,   64,   65,   66,   11,   67,   68,   69,   70,
     510       71,   72,   11,   73,   74,   75,   76,   77,   78,   79,
     511       80,   81,   82,   83,   84,   85,    1,    1,    1,    1,
    504512        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    505513        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    518526    } ;
    519527
    520 static yyconst flex_int32_t yy_meta[85] =
     528static yyconst flex_int32_t yy_meta[86] =
    521529    {   0,
    522530        1,    1,    2,    1,    1,    1,    1,    1,    3,    1,
    523531        4,    1,    1,    5,    1,    1,    1,    1,    1,    1,
    524532        6,    1,    7,    7,    7,    7,    7,    7,    1,    1,
    525         1,    1,    1,    1,    1,    8,    8,    8,    8,    8,
    526         8,    4,    4,    9,    4,   10,    4,    4,    9,    4,
    527         1,   11,    1,    1,   12,    1,    8,    8,    8,    8,
    528         8,    8,    4,    4,    4,    4,    9,    4,    4,    4,
    529        10,    4,    4,    4,    9,    4,    4,    4,    4,    4,
    530         1,    1,    1,    1
     533        1,    8,    1,    1,    1,    9,    9,    9,    9,    9,
     534        9,    4,    4,   10,    4,   11,    4,    4,    4,   10,
     535        4,    1,   12,    1,    1,   13,    1,    9,    9,    9,
     536        9,    9,    9,    4,    4,    4,    4,   10,    4,    4,
     537        4,   11,    4,    4,    4,   10,    4,    4,    4,    4,
     538        4,    1,    1,    1,    1
    531539    } ;
    532540
    533 static yyconst flex_int16_t yy_base[999] =
     541static yyconst flex_int16_t yy_base[1066] =
    534542    {   0,
    535         0,   83, 2266, 2265,   93,    0,  175,  176,  177,  178,
    536      2281, 2568,  189, 2568,  195,   54, 2568, 2223,   59,  171,
    537      2568, 2568, 2568,   55,  186, 2568,  189,  187,  202,  214,
    538       272,    0, 2241, 2568,  214, 2241,  150,  340, 2215,  222,
    539      2568,  157, 2568, 2234,  277, 2568,  192,  133,  196,  198,
    540       204,  271,  155,  218,  181,  200,  266,  238,  337,  224,
    541       227, 2568,  223, 2568, 2231,  372,  400, 2568, 2237, 2568,
    542      2206,  213, 2568,    0, 2568,  427,    0, 2568,  363, 2568,
    543       381,  393, 2568,  498, 2205,  229, 2568, 2568, 2568, 2568,
    544      2568, 2217, 2568, 2216, 2568, 2568, 2228,  558, 2568, 2240,
    545 
    546      2568,  603,  385,  443,  419,  259,  239,  280,  399,  406,
    547         0,  305,  240,  335,  411, 2568, 2568, 2568, 2210, 2568,
    548      2568, 2568, 2209, 2188,  215,  277, 2203,  310,  383,  384,
    549       327,  425,  380,  399, 2180,  448, 2130,  458, 2160,  288,
    550      2568, 2568,  486, 2151, 2150, 2568,  420,  423,  439,  456,
    551       445,  455,  460,  329,  483,  469,  462,  467,  480,  494,
    552       396,  471,  472,  487,  470,  513,  489,  506,  508,  509,
    553       386,  510,  516, 2152,  520,  522,  518,  541,  526,  543,
    554       540,  551,  549,  553,  565,  598,  572,  581,  557, 2568,
    555      2568,  669,  659, 2195,  686, 2568,  692, 2568, 2145,  559,
    556 
    557      2141, 2135,    0,  649, 2568, 2568,  679, 2134, 2133, 2127,
    558         0, 2149,  535,  606,  607,  674,  635,  625,  646,  664,
    559       689, 2146,  692,  693, 2119, 2118, 2568,  712,  723, 2568,
    560      2117, 2165, 2568,  714,    0,  555,  705,  759,  765,  776,
    561       593, 2568, 2123, 2099,    0,  784, 2141,  787,  632, 2568,
    562      2116, 2087,  798, 2568, 2568, 2119, 2568, 2568,  710,  725,
    563      2099, 2094,  720, 2090, 2089, 2085,    0, 2084,    0,  712,
    564       548,  710,  766,  767,  597,  745,  711,  777,  764,  788,
    565       720,  783,  792,  713,  639,  789,  611,  793, 2086,  794,
    566       791,  795,  810,  800,  805,  813,  814,  361,  818,  815,
    567 
    568       816,  821,  825,  822,  826,  828,  829,  836,  838, 2080,
    569       841,  842,  843,  839,  844,  845,  846,  849,  847,  853,
    570       855,  860, 2079,  859,  905,  864,  866,  872,  870,  871,
    571       933,  930, 2075, 2069, 2068,    0, 2067,    0,  920,  924,
    572      2061,    0, 2060,    0, 2059,    0, 2074, 2568,  919,  920,
    573      2054, 2051,    0, 2045,    0,  935,  941,  953,  963,  974,
    574       986,  996, 2568, 2568,  960,  961, 1013,  989, 1047,  926,
    575      1045,  968, 2568, 2568, 2044, 2043, 2037,    0, 2036,    0,
    576      2035,    0, 2014,    0,  874,  873,  987,  903,  931,  932,
    577       984,  920,  994,  995,  974,  976, 1009, 1024, 1017,  992,
    578 
    579      1029, 1027,  952, 1030, 1034, 1040, 2016, 1031, 2011, 1047,
    580      2010, 1049, 1043, 1054, 1038, 1056, 1057, 2009, 2003, 1052,
    581      1058, 1062, 1069, 1073, 1074, 1075, 2002, 1076, 2001, 1078,
    582      1079, 1082, 1083, 1085, 1081, 1086, 1092, 1089, 1099,  583,
    583      1108, 1095, 1087, 1995, 1097, 1109, 1160, 1991,    0, 1990,
    584         0, 1984,    0, 1983,    0, 1149, 1982,    0, 1978,    0,
    585      1977, 1976, 1972,    0, 1971,    0, 1156, 1162, 1207, 1121,
    586      1218, 1149, 1120, 1144, 2568, 1224, 1230, 1241, 1981, 1954,
    587      1959, 1957,    0, 1953,    0, 1951,    0, 1945,    0, 1944,
    588         0, 1943,    0, 1125, 1144, 1940, 1146, 1149, 1147, 1153,
    589 
    590      1150, 1218, 1162, 1110, 1156, 1155, 1164, 1211, 1224, 1225,
    591      1226,  164, 1228, 1208, 1170, 1232, 1238, 1939, 1938, 1235,
    592      1932, 1227, 1231, 1234, 1242, 1931, 1246, 1247, 1250, 1930,
    593      1252, 1255, 1924, 1257, 1261, 1254, 1256, 1258, 1923, 1264,
    594       709, 1271, 1262, 1268, 1922, 1273, 1277, 1916, 1274, 1279,
    595      1915, 1963, 1905,    0, 1904,    0, 1903,    0, 1897,    0,
    596      1896,    0, 1895,    0, 1891,    0, 1890,    0, 1322, 1328,
    597      1334, 1345, 1889, 2568, 1356, 2568, 1380, 2568, 1885,    0,
    598      1884,    0, 1883,    0, 1850,    0,    0,    0, 1852,    0,
    599      1342, 1281, 1315, 1322, 1333, 1289, 1283, 1338, 1340, 1336,
    600 
    601      1361, 1343, 1341, 1362, 1364, 1365, 1367, 1397, 1373, 1314,
    602      1376, 1375, 1377, 1847, 1378, 1380, 1382, 1846, 1845, 1381,
    603      1387, 1839, 1389, 1838, 1837, 1396, 1391, 1833, 1832, 1831,
    604      1827, 1826, 1825, 1392, 1818, 1407, 1394, 1846, 2568, 1793,
    605         0, 1792,    0,    0,    0, 1791,    0,    0,    0, 2568,
    606         0,    0,    0,    0, 1446, 1452, 1497, 1787,    0, 1786,
    607         0,    0,    0,    0, 1782, 1408, 1430, 1784, 1410, 1432,
    608      1437, 1411, 1412, 1443, 1433, 1783, 1447, 1445, 1457, 1413,
    609      1476, 1463, 1450, 1477, 1475, 1474, 1480, 1479, 1481, 1779,
    610      1482, 1778, 1483, 1777, 1773, 1464, 1485, 1772, 1490, 1486,
    611 
    612         0,    0, 1768, 1764, 1763, 1762, 1537,    0, 1758, 1757,
    613      1756, 1752, 1751, 1753, 1749, 1748, 1747, 1496, 1497, 1499,
    614      1502, 1493, 1492, 1501, 1518, 1519, 1547, 1738, 1522, 1737,
    615      1523, 1458, 1528, 1530, 1524, 1734, 1733, 1732, 1715, 1707,
    616      1706, 1700, 1694, 1691, 1683, 1682, 1663, 1662, 1661, 1653,
    617      1652, 1613, 1612, 1529, 1614, 1534, 1535, 1538, 1536, 1542,
    618      1613, 1543, 1562, 1546, 1612, 1544, 1548, 1554, 1550, 1608,
    619      1607, 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1598, 1597,
    620      1567, 1566, 1505, 1552, 1560, 1565, 1563, 1571, 1564, 1286,
    621      1285, 1575, 1188, 1158, 1576, 1001,  997,  950,  901,  753,
    622 
    623       752,  642,  556, 1577, 1580,  519, 1584,  475, 1588, 1589,
    624      1590,  471,  407, 1582, 1583, 1594, 1596,  353,  298, 1595,
    625       274,  234,  233,  165, 2568, 1669, 1681, 1693, 1702, 1711,
    626      1723, 1732, 1744, 1756, 1768, 1775, 1784, 1790, 1796, 1802,
    627      1808, 1814, 1820, 1826, 1832, 1838, 1850, 1856, 1859, 1866,
    628      1868, 1874, 1880, 1886, 1888, 1894, 1899, 1911, 1923, 1929,
    629      1935, 1941, 1947, 1949, 1955, 1957, 1963, 1965, 1971, 1973,
    630      1979, 1981, 1987, 1989, 1995, 1997, 2003, 2010, 2016, 2022,
    631      2028, 2034, 2036, 2042, 2044, 2050, 2052, 2058, 2063, 2075,
    632      2081, 2087, 2089, 2095, 2097, 2103, 2105, 2111, 2113, 2119,
    633 
    634      2121, 2127, 2129, 2135, 2141, 2143, 2149, 2151, 2157, 2163,
    635      2169, 2171, 2177, 2179, 2185, 2187, 2193, 2195, 2201, 2203,
    636      2209, 2214, 2226, 2232, 2238, 2240, 2246, 2248, 2254, 2256,
    637      2262, 2264, 2270, 2272, 2278, 2280, 2286, 2288, 2294, 2296,
    638      2302, 2308, 2310, 2316, 2318, 2324, 2326, 2332, 2334, 2336,
    639      2341, 2347, 2355, 2361, 2367, 2369, 2375, 2377, 2379, 2384,
    640      2390, 2392, 2394, 2396, 2398, 2400, 2402, 2404, 2410, 2412,
    641      2418, 2420, 2422, 2424, 2426, 2435, 2441, 2443, 2445, 2451,
    642      2457, 2463, 2465, 2471, 2477, 2483, 2489, 2495, 2501, 2507,
    643      2513, 2519, 2525, 2531, 2537, 2543, 2549, 2555
    644 
     543        0,   84, 2285, 2282,   94,    0,  177,  178,  179,  180,
     544     2298, 2825,  191, 2825,  197,   55, 2825, 2244,   60,  173,
     545     2825, 2825, 2825,   56,  188, 2825,  191,  189,  204,  216,
     546      275,    0, 2262, 2825,  216, 2260,  152,  344,  155,  220,
     547     2825,  159, 2825,  217,  226, 2825,  185,  154,  212,  251,
     548      237,  270,  235,  257,  241,  205,  193,  305,  314,  333,
     549      238,  228, 2825,  225, 2825, 2255,  402,  390, 2825, 2266,
     550     2825, 2234,  235, 2825,    0, 2825,  426,    0, 2825,  417,
     551     2825,  439,  451, 2825,  498, 2232,  264, 2825, 2825, 2825,
     552     2825, 2825, 2248, 2825, 2245, 2825, 2825, 2257,  559, 2825,
     553
     554     2274, 2825,  438,  444,  511,  534,  289,  253,  197,  380,
     555      305,    0,  319,  280,  198,  322, 2825, 2825, 2825, 2243,
     556     2825, 2825, 2825, 2240, 2237,  218,  255, 2252,  298,  350,
     557      368,  312,  440,  398,  405, 2233,  441, 2181,  446, 2209,
     558     2825,  335, 2825, 2825,  468, 2203, 2202, 2825, 2175,  439,
     559      282,  433,  372,  281,  437,  434,  428,  570,  444,  466,
     560      464,  469,  475,  321,  492,  438,  471,  445,  474,  512,
     561      489,  503,  496,  521,  276,  515,  516, 2202,  526,  510,
     562      519,  525,  543,  522,  560,  553,  523,  561,  551,  544,
     563      599,  582,  593,  584, 2825, 2825,  660,  651, 2249,  666,
     564
     565     2825,  678, 2825, 2196,  607, 2192, 2191,    0,  693, 2825,
     566     2825,  684, 2189, 2186, 2183,    0, 2206,  578,  608,  617,
     567      654,  679,  650,  683,  684,  687, 2203,  690,  691, 2179,
     568     2159, 2825,    0,  683,  710,  686,  700, 2157, 2209, 2825,
     569      714,    0,  427,  746,  764,  786,  808,  621, 2825, 2165,
     570     2138,    0,  794, 2184,  795,  709, 2825, 2160, 2134,  832,
     571     2825, 2825, 2165, 2825, 2825,  711,  714, 2142, 2142,  717,
     572     2138, 2136, 2133,    0, 2130,    0, 2101,  694,  679,  712,
     573      709,  711,  698,  566,  726,  743,  771,  741,  790,  784,
     574      800,  795,  742,  744,  814,  816,  818, 2131,  819,  745,
     575
     576      820,  821,  822,  823,  824,  746,  825,  748,  659,  831,
     577      826,  833,  838,  839,  848,  850,  851,  844,  834,  857,
     578     2129,  858,  859,  860,  862,  861,  864,  865,  867,  868,
     579      866,  871,  876,  872,  878, 2126,  880,  689,  881,  882,
     580      892,  896,  893,  953,  954, 2120, 2119, 2118,    0, 2116,
     581        0,  941,  945, 2113,    0, 2112,    0, 2111,    0, 2131,
     582     2825,  940,  941, 2108, 2105,    0, 2104,    0, 2825,  953,
     583      975,  964, 2825,  981,  997, 1021, 2102, 2825, 2825,  939,
     584      940, 1006,  982, 1041,  310, 1039, 1004, 2825, 2825, 2099,
     585     2095, 2091,    0, 2089,    0, 2087,    0, 2084,    0, 2825,
     586
     587      886,  941,  960,  962,  977,  976,  980,  982, 1017, 1010,
     588     1002,  998, 1022, 1031, 1028, 1033, 1034, 1037, 1040, 1043,
     589     1038, 1041, 1053, 2085, 1055, 2083, 1045, 2080, 1056, 1061,
     590     1063, 1065, 1066, 1067, 1070, 2077, 1071, 2076, 1073, 1074,
     591     1075, 1078, 1080, 1081, 1085, 2075, 1087, 2073, 1084, 1089,
     592     1091, 1097, 1099, 1092, 1102, 1103, 1105, 1106, 1108,  905,
     593     1109, 1116, 1110, 1122, 2070, 1120, 1123, 1179, 2064,    0,
     594     2063,    0, 2062,    0, 2060,    0, 1166, 2057,    0, 2054,
     595        0, 2053, 2052, 2050,    0, 2047,    0, 1173, 2044, 1179,
     596     1137, 1195, 1181, 1178, 1176, 2825, 1219, 1231, 1253, 2055,
     597
     598     2030, 2040, 2037,    0, 2034,    0, 2033,    0, 2032,    0,
     599     2030,    0, 2027,    0, 1141, 1172, 2027, 1180, 1155, 1196,
     600     1157, 1216, 1207, 1231, 1125, 1210, 1232, 1214, 1187, 1236,
     601     1235, 1237, 1238, 1272, 1249, 1252, 1250, 1253, 1254, 2026,
     602     1261, 1256, 2025, 1260, 1263, 1264, 1257, 2023, 1271, 1268,
     603     1269, 1273, 2020, 1275, 1282, 2017, 1283, 1284, 2016, 1276,
     604     1286, 1289, 2015, 1294, 1291, 1296, 1295, 1297, 1310, 2013,
     605     1305, 1308, 2010, 1307, 1300, 2009, 2058, 2003,    0, 2000,
     606        0, 1999,    0, 1998,    0, 1996,    0, 1963,    0, 1961,
     607        0, 1960,    0, 1355, 1361, 1389, 1372, 1957, 2825, 1378,
     608
     609     1325, 1365, 1379, 1954, 2825, 1953,    0, 1952,    0, 1950,
     610        0, 1947,    0,    0,    0, 1947,    0, 1366, 1312, 1311,
     611     1341, 1323, 1368, 1369, 1374, 1356, 1383, 1372, 1388, 1390,
     612     1393, 1395, 1396, 1398, 1400, 1431, 1406, 1407, 1411, 1408,
     613     1413, 1414, 1946, 1409, 1416, 1419, 1945, 1943, 1940, 1422,
     614     1424, 1939, 1429, 1938, 1936, 1425, 1430, 1933, 1932, 1931,
     615     1929, 1926, 1922, 1436, 1433, 1918, 1439, 1440, 1964, 2825,
     616     1895,    0, 1894,    0,    0,    0, 1896,    0,    0,    0,
     617     2825,    0,    0,    0,    0, 1486, 1891, 2825, 2825, 1492,
     618     1888,    0, 1887,    0,    0,    0,    0, 1886, 1447, 1444,
     619
     620     1887, 1449, 1471, 1479, 1450, 1480, 1482, 1469, 1884, 1486,
     621     1490, 1488, 1502, 1452, 1510, 1504, 1491, 1519, 1506, 1498,
     622     1508, 1512, 1513, 1514, 1515, 1883, 1882, 1518, 1880, 1877,
     623     1517, 1520, 1523, 1876, 1521, 1525,    0,    0,    0, 1872,
     624     1870, 1867, 1575,    0, 1866, 1865, 1863, 1860, 1859, 1861,
     625     1859, 1856, 1855, 1531, 1538, 1527, 1528, 1530, 1533, 1552,
     626     1539, 1554, 1553, 1586, 1854, 1559, 1852, 1560, 1561, 1564,
     627     1570, 1572, 1571, 1849, 1574, 1848, 1847, 1845, 1575, 1842,
     628     1841, 1837, 1835, 1828, 1826, 1825, 1822, 1821, 1820, 1818,
     629     1801, 1792, 1791, 1576, 1791, 1579, 1577, 1580, 1582, 1581,
     630
     631     1585, 1784, 1589, 1616, 1593, 1781, 1591, 1599, 1605, 1592,
     632     1606, 1609, 1610, 1771, 1769, 1768, 1747, 1746, 1745, 1738,
     633     1736, 1735, 1693, 1689, 1688, 1687, 1689, 1611, 1612, 1614,
     634     1615, 1618, 1625, 1621, 1686, 1683, 1627, 1682, 1681, 1631,
     635     1635, 1441, 1637, 1677, 1674, 1354, 1319, 1318, 1267, 1212,
     636     1210, 1639, 1640, 1211, 1647, 1623, 1649, 1178, 1652, 1653,
     637     1657, 1177, 1126,  964,  937,  903, 1641, 1643, 1659, 1663,
     638     1664, 1665,  788,  752, 1629,  607,  487, 1666, 1669,  394,
     639      357, 1670, 1672, 1671, 1674, 1676, 1675, 1678,  233,  137,
     640     2825, 1750, 1763, 1776, 1786, 1796, 1809, 1819, 1832, 1845,
     641
     642     1858, 1866, 1876, 1883, 1890, 1897, 1904, 1911, 1918, 1925,
     643     1932, 1939, 1952, 1959, 1963, 1971, 1974, 1981, 1988, 1995,
     644     1998, 2005, 2011, 2024, 2037, 2044, 2051, 2058, 2065, 2068,
     645     2075, 2078, 2085, 2088, 2095, 2098, 2105, 2108, 2115, 2118,
     646     2125, 2128, 2135, 2143, 2150, 2157, 2164, 2171, 2174, 2181,
     647     2184, 2191, 2194, 2201, 2207, 2220, 2227, 2234, 2237, 2244,
     648     2247, 2254, 2257, 2264, 2267, 2274, 2277, 2284, 2287, 2294,
     649     2301, 2304, 2311, 2314, 2321, 2328, 2335, 2338, 2345, 2348,
     650     2355, 2358, 2365, 2368, 2375, 2378, 2385, 2391, 2404, 2411,
     651     2418, 2421, 2428, 2431, 2438, 2441, 2448, 2451, 2458, 2461,
     652
     653     2468, 2471, 2478, 2481, 2488, 2491, 2498, 2505, 2508, 2515,
     654     2518, 2525, 2528, 2535, 2538, 2541, 2547, 2554, 2563, 2570,
     655     2577, 2580, 2587, 2590, 2593, 2599, 2606, 2609, 2612, 2615,
     656     2618, 2621, 2624, 2627, 2634, 2637, 2644, 2647, 2650, 2653,
     657     2656, 2666, 2673, 2676, 2679, 2682, 2689, 2696, 2703, 2706,
     658     2713, 2720, 2727, 2734, 2741, 2748, 2755, 2762, 2769, 2776,
     659     2783, 2790, 2797, 2804, 2811
    645660    } ;
    646661
    647 static yyconst flex_int16_t yy_def[999] =
     662static yyconst flex_int16_t yy_def[1066] =
    648663    {   0,
    649       825,    1,  826,  826,  825,    5,  827,  827,  828,  828,
    650       825,  825,  825,  825,  825,  825,  825,  829,  825,  825,
    651       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    652       825,   31,  825,  825,  825,  825,  825,  825,  830,  829,
    653       825,  825,  825,  825,  829,  825,  829,  829,  829,  829,
    654       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
    655       829,  825,  825,  825,  825,  825,  831,  825,  825,  825,
    656       832,  825,  825,  833,  825,  825,  834,  825,  825,  825,
    657       825,  825,  825,  825,  829,  825,  825,  825,  825,  825,
    658       825,  825,  825,  825,  825,  825,  825,  825,  825,  835,
    659 
    660       825,  825,   30,  825,  825,  825,  825,  836,   30,  825,
    661        31,  825,  825,   31,  825,  825,  825,  825,  825,  825,
    662       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    663       825,  825,  825,  825,  825,  825,  825,  825,  837,  825,
    664       825,  825,  829,  838,  839,  825,  829,  829,  829,  829,
    665       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
    666       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
    667       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
    668       829,  829,  829,  829,  829,  829,  829,  829,  829,  825,
    669       825,  825,  831,  831,  831,  825,  831,  825,  832,  825,
    670 
    671       840,  841,  833,  825,  825,  825,  825,  842,  843,  844,
    672       834,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    673       825,  825,  825,  825,  845,  846,  825,  825,  825,  825,
    674       228,  847,  825,  825,  103,  103,  825,  825,  825,  825,
    675       825,  825,  825,  825,  848,  849,  850,  825,  825,  825,
    676       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    677       825,  837,  825,  851,  852,  853,  854,  855,  856,  857,
    678       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    679       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    680       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    681 
    682       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    683       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    684       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    685       858,  859,  860,  861,  862,  863,  864,  865,  825,  825,
    686       866,  867,  868,  869,  870,  871,  825,  825,  825,  825,
    687       825,  872,  873,  874,  875,  825,  825,  825,  825,  825,
    688       825,  825,  825,  825,  876,  877,  878,  825,  825,  825,
    689       878,  825,  825,  825,  879,  880,  881,  882,  883,  884,
    690       885,  886,  887,  888,  889,  889,  889,  889,  889,  889,
    691       889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
    692 
    693       889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
    694       889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
    695       889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
    696       889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
    697       889,  889,  889,  889,  889,  889,  890,  891,  892,  893,
    698       894,  895,  896,  897,  898,  825,  899,  900,  901,  902,
    699       903,  903,  904,  905,  906,  907,  825,  825,  825,  908,
    700       825,  908,  825,  825,  825,  825,  825,  825,  825,  825,
    701       909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
    702       919,  920,  921,  922,  922,  922,  922,  922,  922,  922,
    703 
    704       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
    705       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
    706       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
    707       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
    708       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
    709       922,  923,  924,  925,  926,  927,  928,  929,  930,  931,
    710       932,  933,  934,  935,  936,  937,  938,  939,  825,  825,
    711       825,  825,  940,  825,  825,  825,  825,  825,  941,  942,
    712       943,  944,  945,  946,  947,  948,  949,  950,  951,  952,
    713       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    714 
    715       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    716       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    717       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    718       951,  951,  951,  951,  951,  951,  951,  953,  825,  954,
    719       955,  956,  957,  958,  959,  960,  961,  962,  963,  825,
    720       964,  965,  966,  967,  825,  825,  825,  968,  969,  970,
    721       971,  972,  973,  974,  975,  976,  976,  976,  976,  976,
    722       976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
    723       976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
    724       976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
    725 
    726       977,  978,  956,  979,  980,  981,  825,  982,  968,  970,
    727       983,  984,  975,  976,  976,  976,  976,  976,  976,  976,
    728       976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
    729       976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
    730       976,  985,  986,  979,  987,  980,  988,  981,  989,  990,
    731       983,  991,  984,  976,  976,  976,  976,  976,  976,  976,
    732       976,  976,  976,  976,  976,  976,  976,  976,  976,  992,
    733       985,  993,  986,  994,  987,  995,  988,  996,  989,  997,
    734       990,  991,  976,  976,  976,  976,  976,  976,  976,  976,
    735       976,  976,  976,  976,  976,  998,  992,  993,  994,  995,
    736 
    737       970,  996,  997,  976,  976,  976,  976,  976,  976,  976,
    738       976,  998,  970,  976,  976,  976,  976,  976,  976,  976,
    739       976,  976,  976,  976,    0,  825,  825,  825,  825,  825,
    740       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    741       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    742       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    743       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    744       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    745       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    746       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    747 
    748       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    749       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    750       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    751       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    752       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    753       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    754       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    755       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    756       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    757       825,  825,  825,  825,  825,  825,  825,  825
    758 
     664      891,    1,  892,  892,  891,    5,  893,  893,  894,  894,
     665      891,  891,  891,  891,  891,  891,  891,  895,  891,  891,
     666      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     667      891,   31,  891,  891,  891,  891,  891,  891,  896,  895,
     668      891,  891,  891,  891,  895,  891,  895,  895,  895,  895,
     669      895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
     670      895,  895,  891,  891,  891,  891,  891,  897,  891,  891,
     671      891,  898,  891,  891,  899,  891,  891,  900,  891,  891,
     672      891,  891,  891,  891,  891,  895,  891,  891,  891,  891,
     673      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     674
     675      901,  891,   99,   30,  891,  891,  891,  891,  902,   30,
     676      891,   31,  891,  891,   31,  891,  891,  891,  891,  891,
     677      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     678      891,  891,  891,  891,  891,  891,  891,  891,  891,  903,
     679      891,  891,  891,  891,  895,  904,  905,  891,  891,  895,
     680      895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
     681      895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
     682      895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
     683      895,  895,  895,  895,  895,  895,  895,  895,  895,  895,
     684      895,  895,  895,  895,  891,  891,  891,  897,  897,  897,
     685
     686      891,  897,  891,  898,  891,  906,  907,  899,  891,  891,
     687      891,  891,  908,  909,  910,  900,  891,  891,  891,  891,
     688      891,  891,  891,  891,  891,  891,  891,  891,  891,  911,
     689      912,  891,   99,  891,  891,  891,  891,   99,  913,  891,
     690      891,  104,  104,  891,  891,  891,  891,  891,  891,  891,
     691      891,  914,  915,  916,  891,  891,  891,  891,  891,  891,
     692      891,  891,  891,  891,  891,  891,  891,  891,  903,  891,
     693      917,  918,  919,  920,  921,  922,  891,  923,  923,  923,
     694      923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
     695      923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
     696
     697      923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
     698      923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
     699      923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
     700      923,  923,  923,  923,  923,  923,  923,  923,  923,  923,
     701      923,  923,  923,  924,  925,  926,  927,  928,  929,  930,
     702      931,  891,  891,  932,  933,  934,  935,  936,  937,  891,
     703      891,  891,  891,  891,  938,  939,  940,  941,  891,  891,
     704      891,  891,  891,  891,  891,  371,  376,  891,  891,  942,
     705      943,  944,  891,  891,  891,  944,  891,  891,  891,  945,
     706      946,  947,  948,  949,  950,  951,  952,  953,  954,  891,
     707
     708      955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
     709      955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
     710      955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
     711      955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
     712      955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
     713      955,  955,  955,  955,  955,  955,  955,  955,  955,  955,
     714      955,  955,  955,  955,  955,  955,  955,  956,  957,  958,
     715      959,  960,  961,  962,  963,  964,  891,  965,  966,  967,
     716      968,  969,  969,  970,  971,  972,  973,  891,  488,  891,
     717      974,  891,  974,  891,  891,  891,  891,  891,  891,  891,
     718
     719      891,  975,  976,  977,  978,  979,  980,  981,  982,  983,
     720      984,  985,  986,  987,  988,  988,  988,  988,  988,  988,
     721      988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
     722      988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
     723      988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
     724      988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
     725      988,  988,  988,  988,  988,  988,  988,  988,  988,  988,
     726      988,  988,  988,  988,  988,  988,  989,  990,  991,  992,
     727      993,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
     728     1003, 1004, 1005,  891,  891,  891,  891, 1006,  891,  596,
     729
     730      891,  891,  891,  600,  891, 1007, 1008, 1009, 1010, 1011,
     731     1012, 1013, 1014, 1015, 1016, 1017, 1018, 1017, 1017, 1017,
     732     1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
     733     1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
     734     1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
     735     1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
     736     1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1019,  891,
     737     1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029,
     738      891, 1030, 1031, 1032, 1033,  891,  686,  891,  891,  891,
     739     1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1042,
     740
     741     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     742     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     743     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     744     1042, 1042, 1042, 1042, 1042, 1042, 1043, 1044, 1045, 1046,
     745     1047, 1048,  891, 1049, 1034, 1036, 1050, 1051, 1041, 1042,
     746     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     747     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     748     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     749     1042, 1052, 1053, 1046, 1054, 1047, 1055, 1048, 1056, 1057,
     750     1050, 1058, 1051, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     751
     752     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     753     1042, 1042, 1042, 1059, 1052, 1060, 1053, 1061, 1054, 1062,
     754     1055, 1063, 1056, 1064, 1057, 1058, 1042, 1042, 1042, 1042,
     755     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     756     1042, 1042, 1042, 1065, 1059, 1060, 1061, 1062, 1036, 1063,
     757     1064, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     758     1042, 1042, 1042, 1042, 1065, 1036, 1042, 1042, 1042, 1042,
     759     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     760     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
     761        0,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     762
     763      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     764      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     765      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     766      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     767      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     768      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     769      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     770      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     771      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     772      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     773
     774      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     775      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     776      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     777      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     778      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     779      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     780      891,  891,  891,  891,  891
    759781    } ;
    760782
    761 static yyconst flex_int16_t yy_nxt[2653] =
     783static yyconst flex_int16_t yy_nxt[2911] =
    762784    {   0,
    763785       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    765787       28,   29,   30,   31,   32,   32,   32,   32,   33,   34,
    766788       35,   36,   37,   38,   39,   18,   18,   18,   18,   18,
    767        18,   18,   18,   40,   18,   18,   18,   18,   40,   18,
    768        41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
    769        51,   52,   53,   18,   54,   18,   55,   18,   18,   18,
    770        18,   56,   57,   58,   59,   60,   61,   18,   18,   18,
    771        62,   63,   64,   65,   66,   83,   91,   84,   84,   66,
    772        87,   88,   67,   70,   70,   70,   70,   70,   70,   70,
    773 
    774        70,   70,   70,   71,   70,   70,   70,   70,   70,   70,
    775        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
    776        70,   70,   70,   70,   70,   70,   70,   70,   71,   71,
     789       18,   18,   18,   40,   18,   18,   18,   18,   18,   40,
     790       18,   41,   42,   43,   44,   45,   46,   47,   48,   49,
     791       50,   51,   52,   53,   18,   54,   18,   55,   18,   18,
     792       56,   18,   57,   58,   59,   60,   61,   62,   18,   18,
     793       18,   63,   64,   65,   66,   67,   84,   92,   85,   85,
     794       67,   88,   89,   68,   71,   71,   71,   71,   71,   71,
     795
     796       71,   71,   71,   71,   72,   71,   71,   71,   71,   71,
    777797       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    778        71,   71,   71,   70,   72,   70,   70,   71,   73,   71,
    779        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    780        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    781        71,   71,   71,   70,   70,   70,   70,   75,   75,   78,
    782        78,  122,  123,   89,   86,   78,   78,  608,   75,   75,
    783        79,   80,   81,   81,   81,   79,   81,   80,   82,   82,
    784 
    785        82,   81,   90,   92,  158,  144,   86,   97,   94,   98,
    786        98,   98,   98,   98,   98,   86,   86,   93,   99,   84,
    787        95,   96,   84,  100,  173,  117,   76,   76,   76,   76,
    788       141,  145,   86,  101,  102,  142,  103,  103,  103,  103,
    789       104,  104,  118,   86,  119,  120,  256,   86,  257,   86,
    790       176,   86,  159,  105,  190,   86,  177,  106,  162,  160,
    791       178,  201,  107,  108,  156,  161,  157,  163,  109,   86,
    792       165,  164,  166,   86,  105,   86,  143,  225,   86,  174,
    793       110,  167,  243,  251,   86,   86,  175,  202,  107,   86,
    794       189,  108,  102,  188,  111,  111,  111,  111,  111,  111,
    795 
    796       245,  183,  241,  226,  191,  244,  252,  242,  256,  184,
    797       257,  105,  147,  148,  149,  112,  185,   86,  150,  151,
    798       113,  152,   86,  153,  154,   86,  114,  168,   86,  179,
    799       180,  155,  105,  242,  247,  169,  264,  170,  115,  181,
    800       171,  256,  182,  257,  172,  141,  113,  124,  249,   86,
    801       142,  125,  126,  250,  127,  825,  128,  129,  256,  130,
    802       257,  131,  265,  186,   79,   80,   81,   81,   81,   79,
    803       132,  133,  134,  192,   80,   81,   81,   81,  192,  250,
    804        86,  193,   81,   80,   81,   81,   81,   81,   86,  253,
    805       135,  143,  278,  136,   81,   80,   82,   82,   82,   81,
    806 
    807       258,  195,  196,  258,   86,  187,  195,  235,  235,  235,
    808       235,  256,   86,  257,  256,  256,  257,  257,  416,  825,
    809       137,  138,  197,  197,  197,  197,  197,  197,  204,  205,
    810       256,  260,  257,  204,  825,  206,  238,   86,  238,  236,
    811       206,  239,  239,  239,  239,  239,  239,   86,  825,  207,
    812       207,  207,  207,  248,  242,  259,  256,  306,  257,  250,
    813       206,  825,  825,  102,  296,  104,  104,  104,  104,  104,
    814       104,   86,  241,  240,   86,  208,  825,  249,  206,  256,
    815       242,  257,  105,  206,  206,  250,  270,  206,  206,  256,
    816        86,  257,  272,  271,  141,  206,   86,  237,  206,  142,
    817 
    818       206,  209,  206,  105,  210,  212,   86,   86,  273,  213,
    819       214,   86,  275,   86,  215,  216,  274,  217,   86,  218,
    820        86,   86,   86,   86,  276,  825,   86,  291,  219,  220,
    821       221,   86,  297,  277,   86,  290,  289,   86,   86,  279,
    822        86,  280,  300,  281,  282,   86,  298,  283,  222,  284,
    823       294,  223,  292,  293,  285,  286,  287,   86,  288,   86,
    824        86,   86,  302,  295,   86,  299,  347,   86,  348,   86,
    825        86,   86,  303,   86,  312,  825,  304,   86,  305,  224,
    826       228,  228,  228,  228,  228,  228,  309,  301,  307,  308,
    827       311,   86,   86,  310,   86,  316,  319,  229,  230,   86,
    828 
    829        86,  230,   86,  313,   86,  317,  141,  333,   86,  360,
    830       825,  320,  231,  314,  315,  321,   86,  386,  229,  230,
    831       322,  330,  318,   86,  230,   98,   98,   98,   98,   98,
    832        98,  323,   86,  334,   86,  324,  326,  347,  347,  348,
    833       348,  363,  229,  230,  327,  328,  230,  329,   86,   86,
    834       204,  205,  325,  390,  348,  204,  347,  234,  348,  545,
    835       195,  196,   86,  229,  230,  195,  347,  363,  348,  230,
    836       192,   80,   81,   81,   81,  192,  349,  347,  193,  348,
    837       373,  197,  197,  197,  197,  197,  197,  195,  196,  405,
    838        86,  348,  195,  331,  196,  347,  825,  348,  331,  403,
    839 
    840       332,  339,  339,  339,  339,  347,  373,  348,  197,  197,
    841       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
    842       347,  350,  348,  347,  347,  348,  348,  104,  104,  104,
    843       104,  104,  104,  340,  228,  228,  228,  228,  228,  228,
    844       356,  256,  356,  257,  105,  357,  357,  357,  357,  357,
    845       357,  229,  230,  229,  230,  230,  256,  230,  257,  248,
    846        86,   86,   86,   86,   86,  105,  231,  392,  375,  402,
    847       630,   86,  229,  230,  229,  230,  385,  358,  230,  387,
    848       230,  239,  239,  239,  239,  239,  239,  361,  361,  361,
    849       361,  361,  361,  238,  376,  238,   86,  398,  239,  239,
    850 
    851       239,  239,  239,  239,  366,  230,  813,  825,  230,  104,
    852       104,  104,  104,  104,  104,   86,  391,   86,   86,  362,
    853       111,  111,  111,  111,  111,  111,  230,  368,   86,  369,
    854       394,  230,  370,  388,   86,  389,  395,  396,  371,   86,
    855        86,  248,   86,   86,   86,   86,   86,  408,  393,  399,
    856       372,   86,  253,  404,  369,  409,   86,  397,  370,  400,
    857       401,   86,  406,  407,   86,   86,   86,   86,  410,   86,
    858       415,  411,   86,   86,  412,  418,   86,   86,  422,   86,
    859        86,  420,  423,  419,  424,  413,  414,   86,  417,   86,
    860        86,  421,   86,   86,   86,   86,   86,   86,   86,  426,
    861 
    862        86,  425,  428,  429,   86,  427,   86,  431,  430,  436,
    863        86,   86,  432,  141,  435,   86,  434,   86,  433,  441,
    864       437,   86,   86,   86,   86,   86,  445,  438,  439,  440,
    865       443,  444,  196,  442,  331,  196,  494,  446,  194,  331,
    866       495,  332,  206,  206,  206,  206,  339,  339,  339,  339,
    867       347,  347,  348,  348,   86,  825,   86,  357,  357,  357,
    868       357,  357,  357,  467,  467,  467,  467,  467,  467,  479,
    869       356,   86,  356,  497,  456,  357,  357,  357,  357,  357,
    870       357,  230,   86,   86,  230,  228,  228,  228,  228,  228,
    871       228,  498,  480,  501,  499,  468,  235,  235,  235,  235,
    872 
    873       104,  104,  230,   86,  825,  471,  471,  230,  361,  361,
    874       361,  361,  361,  361,  472,  473,  475,  359,  361,  361,
    875       361,  361,  361,  361,  514,   86,  230,   86,  360,  230,
    876       471,  471,  474,  366,  474,   86,  230,  475,   86,  230,
    877       362,  504,  475,   86,  500,   86,   86,  230,  510,  505,
    878       469,  825,  230,  496,  502,  812,  368,  230,  369,  503,
    879        86,  370,  230,  475,  476,  825,  476,  371,   86,  477,
    880       477,  477,  477,  477,  477,   86,  506,  507,   86,  372,
    881        86,   86,   86,  369,  513,   86,  509,  370,  368,   86,
    882       369,   86,  515,  370,   86,  511,  518,  508,   86,  481,
    883 
    884        86,  478,  512,   86,  516,   86,  517,   86,   86,   86,
    885       519,  372,  524,   86,  522,  369,  521,  526,  523,  370,
    886        86,  520,  525,  527,   86,   86,   86,   86,  529,   86,
    887        86,  528,   86,   86,   86,  533,   86,   86,   86,  531,
    888        86,  540,  530,   86,  534,  532,   86,  543,   86,  549,
    889        86,  536,  535,  537,  538,  541,  542,  544,  539,   86,
    890        86,   86,  196,  548,  600,  471,  471,  546,  552,  551,
    891       550,  206,  206,  206,  206,  472,   86,  547,  467,  467,
    892       467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
    893       471,  471,  574,  591,  471,   86,  230,   86,   86,  230,
    894 
    895        86,   86,  230,  573,   86,  230,   86,   86,  592,   86,
    896       468,  595,  593,   86,  597,   86,  569,  230,  574,  471,
    897       594,   86,  230,  230,  599,  602,  596,  601,  230,  361,
    898       361,  361,  361,  361,  361,  570,  603,  570,  611,   86,
    899       571,  571,  571,  571,  571,  571,  477,  477,  477,  477,
    900       477,  477,  575,  575,  575,  575,  575,  575,  476,   86,
    901       476,  469,   86,  477,  477,  477,  477,  477,  477,   86,
    902       576,  604,  572,  576,  598,   86,   86,   86,   86,   86,
    903       605,  610,   86,   86,  577,   86,   86,  606,  609,   86,
    904       607,  576,  612,   86,  613,  614,  576,   86,   86,  616,
    905 
    906       617,   86,  618,   86,  615,   86,   86,   86,   86,   86,
    907       620,  623,   86,   86,  619,   86,  621,  624,  622,   86,
    908       627,  625,   86,  629,   86,   86,  628,  626,   86,  631,
    909        86,  633,   86,  634,   86,  632,   86,   86,  635,  668,
    910        86,  673,  636,  637,  467,  467,  467,  467,  467,  467,
    911       571,  571,  571,  571,  571,  571,  655,  655,  655,  655,
    912       655,  655,  570,  672,  570,   86,   86,  571,  571,  571,
    913       571,  571,  571,   86,  576,  669,  569,  576,  575,  575,
    914       575,  575,  575,  575,   86,  686,  670,   86,  656,   86,
    915       676,   86,   86,   86,   86,  576,  576,  674,  666,  576,
    916 
    917       576,  671,  575,  575,  575,  575,  575,  575,  675,  678,
    918       577,  667,   86,   86,  679,   86,   86,  576,   86,  682,
    919       576,  684,  576,  576,   86,  677,   86,   86,   86,   86,
    920       680,   86,   86,   86,  657,  683,  687,  681,   86,  685,
    921        86,  576,   86,   86,  688,   86,  576,   86,   86,  697,
    922       689,  690,  693,  698,  691,  692,  696,  695,   86,   86,
    923       700,   86,   86,   86,   86,  694,  720,  699,  655,  655,
    924       655,  655,  655,  655,  655,  655,  655,  655,  655,  655,
    925       714,   86,  719,   86,   86,  726,  576,  716,   86,  576,
    926       717,  715,  576,  718,   86,  576,   86,  721,   86,  727,
    927 
    928       656,   86,  722,  730,  723,  724,  707,  576,   86,   86,
    929       729,  725,  576,  576,   86,   86,  766,  728,  576,  575,
    930       575,  575,  575,  575,  575,   86,   86,   86,   86,  731,
    931        86,   86,   86,   86,   86,  738,   86,   86,  732,  733,
    932       734,   86,  736,   86,   86,  735,  741,   86,   86,  740,
    933        86,  657,   86,   86,  758,  756,   86,  737,  739,  655,
    934       655,  655,  655,  655,  655,  755,  759,  754,  757,   86,
    935        86,  763,  761,   86,   86,   86,  764,  765,  760,   86,
    936        86,   86,  767,  762,  768,   86,   86,   86,  790,   86,
    937       769,  707,  786,   86,   86,   86,  788,   86,   86,   86,
    938 
    939       791,   86,  793,   86,  785,   86,  784,  783,  794,  787,
    940       795,   86,  789,   86,   86,   86,   86,  792,  805,  806,
    941       825,  825,   86,  807,  804,  808,   86,   86,   86,  810,
    942       811,   86,  809,   86,   86,   86,  815,  814,  816,   86,
    943        86,   86,  817,  818,  819,   86,   86,   86,  822,  821,
    944       823,  803,  825,  820,  802,  825,  800,  825,  799,  825,
    945       798,  825,  797,   86,   86,   86,  825,  782,  824,   68,
    946        68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
    947        68,   74,   74,   74,   74,   74,   74,   74,   74,   74,
    948        74,   74,   74,   77,   77,   77,   77,   77,   77,   77,
    949 
    950        77,   77,   77,   77,   77,   85,  825,  781,   85,   85,
    951        85,   85,   85,   85,  139,  779,  825,  777,  139,  139,
    952       139,  139,  139,  194,  194,  194,  194,  194,  194,  194,
    953       194,  194,  194,  194,  194,  199,  825,  775,  199,  199,
    954       199,  199,  199,  199,  203,  825,  203,  203,  773,  203,
    955       203,  203,  203,  203,  771,  203,  211,   86,   86,  211,
    956       211,  211,  211,  211,  211,  211,   86,  211,  232,  232,
    957       232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
    958       246,  246,  246,   86,   86,   86,  246,  262,   86,   86,
    959       262,  262,  262,  262,  262,  262,  266,  266,   86,   86,
    960 
    961        86,  266,  268,  268,   86,  825,  753,  268,  335,  335,
    962       751,  825,  825,  335,  337,  337,  748,  746,  744,  337,
    963       341,  341,  825,   86,   86,  341,  343,  343,   86,   86,
    964        86,  343,  345,  345,   86,   86,  713,  345,  352,  352,
    965       710,  709,  200,  352,  354,  354,  703,  702,  639,  354,
    966       232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
    967       232,  232,  365,  365,  367,  367,  367,  367,  367,   86,
    968       367,  246,  246,  246,  377,  377,   86,   86,   86,  377,
    969       379,  379,   86,   86,   86,  379,  381,  381,   86,   86,
    970        86,  381,  266,  266,  383,  383,   86,   86,   86,  383,
    971 
    972       268,  268,   85,   86,  664,   85,   85,   85,   85,   85,
    973        85,  194,  194,  194,  194,  194,  194,  194,  194,  194,
    974       194,  194,  194,  447,  447,  447,  447,  447,  447,  447,
    975       447,  447,  447,  447,  447,  448,  448,  663,  661,  659,
    976       448,  450,  450,  573,  654,  653,  450,  452,  452,  651,
    977       649,  647,  452,  335,  335,  454,  454,  645,  643,  641,
    978       454,  337,  337,  457,  457,  639,   86,   86,  457,  341,
    979       341,  459,  459,   86,   86,   86,  459,  343,  343,  461,
    980       461,   86,   86,   86,  461,  345,  345,  463,  463,   86,
    981        86,   86,  463,  352,  352,  465,  465,  590,  588,  586,
    982 
    983       465,  354,  354,  470,  470,  584,  470,  582,  470,  365,
    984       365,  580,  365,  481,  365,  367,  367,  367,  367,  367,
    985       578,  367,  482,  482,  578,  568,  566,  482,  484,  484,
    986       462,  462,  564,  484,  486,  486,  562,  560,  558,  486,
    987       377,  377,  488,  488,  556,  554,   86,  488,  379,  379,
    988       490,  490,   86,   86,   86,  490,  381,  381,  492,  492,
    989        86,   86,   86,  492,  383,  383,   85,   86,  493,   85,
    990        85,   85,   85,   85,   85,  447,  447,  447,  447,  447,
    991       447,  447,  447,  447,  447,  447,  447,  553,  553,  491,
    992       489,  487,  553,  448,  448,  555,  555,  485,  483,  466,
    993 
    994       555,  450,  450,  557,  557,  464,  348,  348,  557,  452,
    995       452,  559,  559,  462,  460,  458,  559,  454,  454,  561,
    996       561,  455,  453,  451,  561,  457,  457,  563,  563,  449,
    997        86,   86,  563,  459,  459,  461,  461,   86,  384,  382,
    998       461,  565,  565,  380,  378,  263,  565,  463,  463,  567,
    999       567,  258,  257,  374,  567,  465,  465,  470,  470,  374,
    1000       470,  245,  470,  367,  367,  364,  364,  233,  367,  579,
    1001       579,  359,  355,  353,  579,  482,  482,  581,  581,  351,
    1002       347,  346,  581,  484,  484,  583,  583,  344,  342,  338,
    1003       583,  486,  486,  585,  585,  336,  200,  196,  585,  488,
    1004 
    1005       488,  587,  587,   86,  269,  267,  587,  490,  490,  589,
    1006       589,  263,  258,  261,  589,  492,  492,   85,  258,  256,
    1007        85,   85,   85,   85,   85,   85,  638,  638,  638,  638,
    1008       638,  638,  638,  638,  638,  638,  638,  638,  640,  640,
    1009       255,  254,  233,  640,  553,  553,  642,  642,  227,   84,
    1010        84,  642,  555,  555,  644,  644,   86,  200,  198,  644,
    1011       557,  557,  646,  646,   84,  146,  140,  646,  559,  559,
    1012       648,  648,  121,  116,   86,  648,  561,  561,  650,  650,
    1013       825,   69,   69,  650,  563,  563,  652,  652,  825,  825,
    1014       825,  652,  565,  565,   85,   85,  825,  825,  825,   85,
    1015 
    1016       567,  567,  470,  470,  825,  825,  825,  470,  658,  658,
    1017       825,  825,  825,  658,  579,  579,  660,  660,  825,  825,
    1018       825,  660,  581,  581,  662,  662,  825,  825,  825,  662,
    1019       583,  583,  139,  139,  825,  825,  825,  139,  585,  585,
    1020       665,  665,  587,  587,   85,  825,  825,   85,   85,   85,
    1021        85,   85,   85,  589,  589,  638,  638,  638,  638,  638,
    1022       638,  638,  638,  638,  638,  638,  638,  701,  701,  825,
    1023       825,  825,  701,  640,  640,  199,  199,  825,  825,  825,
    1024       199,  642,  642,  704,  704,  644,  644,  199,  825,  825,
    1025       199,  199,  199,  199,  199,  199,  646,  646,  705,  705,
    1026 
    1027       648,  648,  650,  650,  706,  706,  652,  652,   85,   85,
    1028       708,  708,  825,  825,  825,  708,  658,  658,  262,  262,
    1029       825,  825,  825,  262,  660,  660,  711,  711,  662,  662,
    1030       139,  139,  712,  712,  825,  825,  825,  712,   85,  825,
    1031       825,   85,   85,   85,   85,   85,   85,  742,  742,  701,
    1032       701,  743,  743,  825,  825,  825,  743,  745,  745,  825,
    1033       825,  825,  745,  747,  747,  825,  825,  825,  747,  749,
    1034       749,  750,  750,  825,  825,  825,  750,  752,  752,  825,
    1035       825,  825,  752,  770,  770,  825,  825,  825,  770,  772,
    1036       772,  825,  825,  825,  772,  774,  774,  825,  825,  825,
    1037 
    1038       774,  776,  776,  825,  825,  825,  776,  778,  778,  825,
    1039       825,  825,  778,  780,  780,  825,  825,  825,  780,  589,
    1040       589,  825,  825,  825,  589,  796,  796,  825,  825,  825,
    1041       796,  646,  646,  825,  825,  825,  646,  650,  650,  825,
    1042       825,  825,  650,   85,   85,  825,  825,  825,   85,  801,
    1043       801,  825,  825,  825,  801,  139,  139,  825,  825,  825,
    1044       139,  199,  199,  825,  825,  825,  199,   11,  825,  825,
    1045       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1046       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1047       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1048 
    1049       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1050       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1051       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1052       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1053       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1054       825,  825
     798       71,   71,   71,   71,   71,   71,   71,   71,   71,   72,
     799       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
     800       72,   72,   72,   72,   72,   71,   73,   71,   71,   72,
     801       74,   72,   72,   72,   72,   72,   72,   72,   72,   72,
     802       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
     803       72,   72,   72,   72,   72,   71,   71,   71,   71,   76,
     804       76,   79,   79,  123,  124,   90,  141,   79,   79,   87,
     805       76,   76,   80,   81,   82,   82,   82,   80,   82,   81,
     806
     807       83,   83,   83,   82,   91,   93,   87,  142,  146,   98,
     808       95,   99,   99,   99,   99,   99,   99,  252,  891,   94,
     809      100,   85,   96,   97,   85,  101,  161,  118,  143,   77,
     810       77,   77,   77,  144,  147,  102,  103,   87,  104,  104,
     811      104,  104,  105,  105,  119,   87,  120,  121,  148,  263,
     812      149,  264,  254,  260,  183,  106,  195,   87,  159,  107,
     813      160,  150,  151,  152,   87,  108,  109,  153,  154,  162,
     814      155,  110,   87,  156,  157,  145,  163,  106,   87,  182,
     815       87,  158,  164,  111,  206,   87,  263,   87,  264,   87,
     816       87,  108,  194,   87,  109,  103,  250,  112,  112,  112,
     817
     818      112,  112,  112,   87,  169,  177,  170,  196,  193,   87,
     819      207,  180,  165,  230,  106,  171,  166,  181,  113,  178,
     820      251,  167,   87,  258,  114,  168,  179,  172,   87,  263,
     821      115,  264,  248,   87,   87,  173,  106,  174,  249,  231,
     822      175,  143,  116,  263,  176,  264,  144,  259,  317,  283,
     823      114,  125,  280,  500,  249,  126,  127,   87,  128,  191,
     824      129,  130,  256,  131,  249,  132,   87,  265,  257,  184,
     825      185,  257,  248,   87,  133,  134,  135,  501,  188,  186,
     826      249,  263,  187,  264,  271,   87,  189,  265,  145,  256,
     827      305,  200,  201,  190,  257,  136,  200,  257,  137,  263,
     828
     829      891,  264,  192,  197,   81,   82,   82,   82,  197,   87,
     830      272,  198,  202,  202,  202,  202,  202,  202,   80,   81,
     831       82,   82,   82,   80,   87,  138,  139,  209,  210,  263,
     832      891,  264,  209,  282,  211,  255,  263,  267,  264,  211,
     833       82,   81,   82,   82,   82,   82,   87,  891,  212,  212,
     834      212,  212,   82,   81,   83,   83,   83,   82,  891,  211,
     835       99,   99,   99,   99,   99,   99,  242,  242,  242,  242,
     836      266,  263,  263,  264,  264,  213,  143,  263,  211,  264,
     837       87,  144,  375,  211,  211,   87,   87,  211,  211,   87,
     838       87,   87,  286,  241,  891,  211,   87,   87,  211,  243,
     839
     840      211,  214,  211,  281,  215,  217,  278,  284,  285,  218,
     841      219,  307,  298,  279,  220,  221,   87,  222,   87,  223,
     842       87,   87,  891,   87,  309,  300,   87,   87,  224,  225,
     843      226,  103,  303,  105,  105,  105,  105,  105,  105,   87,
     844      299,   87,  301,  302,   87,  304,  308,  310,   87,  227,
     845      106,  245,  228,  245,  306,   87,  246,  246,  246,  246,
     846      246,  246,   87,  313,   87,  315,  244,   87,   87,  311,
     847      314,   87,  106,   87,   87,   87,  323,   87,   87,  322,
     848      229,  233,  233,  233,  233,  233,  233,  312,  333,  247,
     849      319,  316,  328,  320,  318,   87,   87,  234,  235,  236,
     850
     851      321,  237,  236,   87,  324,   87,  325,  143,  335,  360,
     852      331,  361,   87,   87,  238,  337,  326,  327,   87,  236,
     853      235,  236,   87,  329,  237,  332,  236,  287,  288,  289,
     854      336,  290,  291,  334,   87,  292,   87,  293,  407,  360,
     855      330,  361,  294,  295,  296,   87,  297,  339,  360,  343,
     856      361,   87,  200,  201,  338,  340,  346,  200,  341,   87,
     857      342,  197,   81,   82,   82,   82,  197,  200,  201,  198,
     858      378,  361,  200,  202,  202,  202,  202,  202,  202,  344,
     859      201,  360,  347,  361,  344,  360,  345,  361,  202,  202,
     860      202,  202,  202,  202,  209,  210,  378,  143,  361,  209,
     861
     862      202,  202,  202,  202,  202,  202,  352,  352,  352,  352,
     863      360,   87,  361,  362,  360,  360,  361,  361,  360,  363,
     864      361,  360,  360,  361,  361,  369,  369,  370,  369,  370,
     865      435,   87,  371,  371,  371,  371,  371,  371,  373,  353,
     866      373,   87,  263,  373,  264,  263,   87,  264,  369,  402,
     867       87,  369,  234,  235,  236,  406,  237,  236,  388,  401,
     868      373,   87,  373,   87,   87,  372,  390,  373,  105,  105,
     869      105,  105,  105,  105,  236,  235,  236,  404,   87,  237,
     870      405,  236,  403,  408,  388,  106,  246,  246,  246,  246,
     871      246,  246,  391,   87,   87,   87,   87,   87,   87,  419,
     872
     873       87,  255,  425,  432,   87,  420,  434,  106,  376,  376,
     874      376,  376,  376,  376,  381,  409,  413,  105,  105,  105,
     875      105,  105,  105,   87,  234,  245,  236,  245,  237,  236,
     876      246,  246,  246,  246,  246,  246,   87,  383,  410,  384,
     877       87,  377,   87,  385,  411,  412,  236,   87,  236,  386,
     878      255,  237,   87,  236,  112,  112,  112,  112,  112,  112,
     879      414,  387,  415,  417,  418,  384,   87,  416,   87,  385,
     880       87,   87,   87,   87,   87,   87,   87,   87,   87,  421,
     881      427,  426,  433,   87,  437,   87,   87,  260,  423,  424,
     882       87,   87,  436,  429,  428,  422,   87,  430,  431,  439,
     883
     884       87,  438,   87,   87,  446,  441,  440,  442,  443,   87,
     885       87,   87,   87,   87,   87,  445,   87,   87,   87,   87,
     886       87,  448,  447,   87,   87,  444,  449,  451,   87,  456,
     887       87,  450,   87,   87,   87,  452,  455,  454,   87,  453,
     888      457,  462,  460,  461,   87,   87,  458,  464,   87,  515,
     889      459,  463,  465,  466,  344,  201,  201,   87,  891,  344,
     890      467,  345,  199,  211,  211,  211,  211,  352,  352,  352,
     891      352,  360,  360,  361,  361,  371,  371,  371,  371,  371,
     892      371,  370,  569,  370,  492,  492,  371,  371,  371,  371,
     893      371,  371,  891,   87,  493,  494,  477,  488,  488,  488,
     894
     895      488,  488,  488,  233,  233,  233,  233,  233,  233,  516,
     896      492,  492,   87,  234,   87,  236,   87,  237,  236,  242,
     897      242,  242,  242,  105,  105,  495,  381,  517,   87,   87,
     898      489,  496,   87,  518,   87,  236,  374,  236,  519,  520,
     899      237,  521,  236,  376,  376,  376,  376,  376,  376,  383,
     900       87,  384,  375,  496,   87,  385,  522,  496,  497,  891,
     901      497,  386,   87,  498,  498,  498,  498,  498,  498,   87,
     902      525,  495,  526,  387,   87,  524,  377,  384,  523,  496,
     903       87,  385,  383,   87,  384,   87,   87,  527,  385,   87,
     904       87,  532,   87,   87,  502,   87,  499,   87,  535,  528,
     905
     906      529,  537,  530,  531,  533,   87,  387,   87,   87,  541,
     907      384,  534,  538,   87,  385,   87,  536,   87,   87,   87,
     908      539,  540,   87,   87,  546,   87,   87,   87,  544,  542,
     909       87,  548,   87,   87,  547,  543,   87,   87,  549,   87,
     910      545,   87,  552,   87,   87,  550,  556,  554,  551,   87,
     911      559,   87,  553,  555,   87,   87,  557,   87,   87,  558,
     912       87,   87,   87,  564,  560,  567,  563,  568,   87,  561,
     913      566,  562,   87,  565,   87,   87,  571,   87,   87,  573,
     914      627,  201,  492,  570,  576,  574,  572,  577,  211,  211,
     915      211,  211,  493,   87,  575,  488,  488,  488,  488,  488,
     916
     917      488,  376,  376,  376,  376,  376,  376,   87,  492,   87,
     918      618,  234,  595,  236,  595,  237,  236,  596,  596,  596,
     919      596,  596,  596,  492,   87,  599,  492,  621,  489,   87,
     920       87,  623,   87,  236,  490,  236,  598,  619,  237,   87,
     921      236,  498,  498,  498,  498,  498,  498,  620,   87,  492,
     922      597,  599,  492,  600,  600,  600,  600,  600,  600,   87,
     923      631,  622,   87,   87,  625,  891,   87,  891,   87,  601,
     924      497,  602,  497,  603,  602,  498,  498,  498,  498,  498,
     925      498,  624,  628,   87,   87,  630,  604,   87,   87,   87,
     926       87,  602,  633,  602,  626,  636,  603,  632,  602,  629,
     927
     928      634,   87,   87,  635,   87,   87,   87,  642,   87,   87,
     929      637,  641,   87,   87,  640,   87,   87,  643,  647,  639,
     930       87,   87,  866,   87,   87,   87,  638,   87,   87,  644,
     931      645,  646,  648,  650,   87,   87,   87,  649,   87,  653,
     932      651,   87,  652,   87,  654,  655,   87,   87,   87,   87,
     933      656,  657,   87,  660,  659,  661,  664,   87,  658,   87,
     934       87,  663,   87,   87,   87,  668,  665,  688,  688,  662,
     935      666,  701,  702,  891,  891,   87,  667,  488,  488,  488,
     936      488,  488,  488,  596,  596,  596,  596,  596,  596,  595,
     937      688,  595,  704,   87,  596,  596,  596,  596,  596,  596,
     938
     939      600,  600,  600,  600,  600,  600,  703,  688,   87,  891,
     940      594,  686,  686,  686,  686,  686,  686,  689,   87,  689,
     941       87,   87,  689,  699,   87,  708,   87,  601,  706,  602,
     942      688,  603,  602,  604,  707,   87,  700,  710,  709,  689,
     943       87,  689,   87,  705,  687,   87,  689,   87,   87,  602,
     944       87,  602,   87,  716,  603,  718,  602,  712,   87,   87,
     945       87,   87,  711,   87,  714,   87,   87,  713,   87,  717,
     946      715,   87,  721,  719,   87,  724,   87,   87,  722,  720,
     947      727,   87,   87,   87,  725,   87,  731,  723,   87,  732,
     948      726,   87,   87,   87,  728,  734,   87,  733,  730,   87,
     949
     950      735,   87,   87,  729,   87,  863,  751,  736,  686,  686,
     951      686,  686,  686,  686,  600,  600,  600,  600,  600,  600,
     952      750,   87,  755,   87,  601,  763,  602,  752,  603,  602,
     953      753,   87,   87,  764,   87,  756,  754,  757,   87,  758,
     954       87,  687,   87,   87,  759,  767,  602,  690,  602,  761,
     955       87,  603,  766,  602,   87,  760,   87,  762,   87,  765,
     956       87,  768,   87,  769,   87,   87,   87,   87,  770,   87,
     957       87,   87,   87,   87,  771,   87,  774,   87,  772,   87,
     958       87,  780,   87,   87,  796,   87,  781,  773,  775,  777,
     959       87,   87,  798,  776,  778,  797,  779,  686,  686,  686,
     960
     961      686,  686,  686,  794,   87,   87,   87,  795,  799,  802,
     962      804,   87,   87,   87,  805,  806,   87,  801,  803,  808,
     963      807,  800,   87,   87,   87,  809,   87,   87,   87,   87,
     964      743,   87,   87,   87,   87,  830,  832,   87,   87,  810,
     965      833,   87,  835,   87,   87,   87,  811,  829,  836,  812,
     966      813,   87,  828,  840,  838,  827,  831,   87,   87,  834,
     967      839,   87,   87,   87,   87,  837,   87,   87,   87,  854,
     968       87,  853,  842,   87,  841,   87,  855,   87,  843,   87,
     969      858,   87,  860,   87,  852,  870,  861,   87,  856,   87,
     970      859,   87,   87,   87,  857,   87,  862,  868,  864,   87,
     971
     972      867,   87,  869,  881,   87,   87,  871,  872,  873,   87,
     973      876,   87,  874,  875,  877,   87,   87,   87,   87,  879,
     974      880,   87,   87,   87,   87,  878,   87,   87,   87,  891,
     975       87,  884,  865,   87,   87,   87,  883,  885,   87,  882,
     976      890,   87,  891,  891,  851,  886,  888,  887,  891,  889,
     977       69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
     978       69,   69,   69,   75,   75,   75,   75,   75,   75,   75,
     979       75,   75,   75,   75,   75,   75,   78,   78,   78,   78,
     980       78,   78,   78,   78,   78,   78,   78,   78,   78,   86,
     981      850,  891,   86,  848,   86,   86,   86,   86,   86,  140,
     982
     983      891,  847,  891,  140,  140,  140,  140,  140,  140,  199,
     984      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
     985      199,  199,  204,  846,  891,  204,  845,  204,  204,  204,
     986      204,  204,  208,   87,  208,  208,   87,  208,  208,  208,
     987      208,  208,  208,   87,  208,  216,  891,  826,  216,  216,
     988      216,  216,  216,  216,  216,  216,  891,  216,  239,  239,
     989      239,  239,  239,  239,  239,  239,  239,  239,  239,  239,
     990      239,  253,  253,  825,  253,  823,  891,  821,  253,  269,
     991      891,  819,  269,  891,  269,  269,  269,  269,  269,  273,
     992      817,  273,  815,   87,   87,  273,  275,   87,  275,   87,
     993
     994       87,   87,  275,  348,   87,  348,   87,   87,   87,  348,
     995      350,   87,  350,   87,  891,  793,  350,  354,  791,  354,
     996      891,  891,  788,  354,  356,  786,  356,  784,   87,   87,
     997      356,  358,   87,  358,   87,   87,   87,  358,  365,   87,
     998      365,  749,  746,  745,  365,  367,  743,  367,  205,  739,
     999      738,  367,  239,  239,  239,  239,  239,  239,  239,  239,
     1000      239,  239,  239,  239,  239,  380,  670,  380,  382,  382,
     1001       87,  382,  382,  382,   87,  382,  253,  253,   87,  253,
     1002      392,   87,  392,   87,   87,   87,  392,  394,   87,  394,
     1003       87,   87,   87,  394,  396,   87,  396,   87,   87,   87,
     1004
     1005      396,  273,  697,  273,  398,  696,  398,  694,  692,  690,
     1006      398,  275,  598,  275,   86,  685,  684,   86,  682,   86,
     1007       86,   86,   86,   86,  199,  199,  199,  199,  199,  199,
     1008      199,  199,  199,  199,  199,  199,  199,  468,  468,  468,
     1009      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
     1010      469,  680,  469,  678,  676,  674,  469,  471,  672,  471,
     1011      670,   87,   87,  471,  473,   87,  473,   87,   87,   87,
     1012      473,  348,   87,  348,  475,   87,  475,   87,   87,   87,
     1013      475,  350,  617,  350,  478,  615,  478,  613,  611,  609,
     1014      478,  354,  607,  354,  480,  502,  480,  605,  605,  594,
     1015
     1016      480,  356,  593,  356,  482,  591,  482,  483,  483,  589,
     1017      482,  358,  587,  358,  484,  585,  484,  583,  581,  579,
     1018      484,  365,   87,  365,  486,   87,  486,   87,   87,   87,
     1019      486,  367,   87,  367,  491,   87,  491,   87,  491,  514,
     1020      491,  380,  512,  380,  510,  380,  508,  380,  382,  382,
     1021      506,  382,  382,  382,  504,  382,  503,  490,  503,  487,
     1022      485,  361,  503,  505,  361,  505,  483,  481,  479,  505,
     1023      507,  476,  507,  474,  472,  470,  507,  392,   87,  392,
     1024      509,   87,  509,   87,  400,  399,  509,  394,  397,  394,
     1025      511,  395,  511,  393,  270,  265,  511,  396,  264,  396,
     1026
     1027      513,  389,  513,  389,  252,  379,  513,  398,  379,  398,
     1028       86,  240,  374,   86,  368,   86,   86,   86,   86,   86,
     1029      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
     1030      468,  468,  468,  578,  366,  578,  364,  360,  359,  578,
     1031      469,  357,  469,  580,  355,  580,  351,  349,  205,  580,
     1032      471,  201,  471,  582,   87,  582,  277,  276,  274,  582,
     1033      473,  270,  473,  584,  265,  584,  268,  265,  263,  584,
     1034      475,  262,  475,  586,  261,  586,  240,  232,   85,  586,
     1035      478,   85,  478,  588,   87,  588,  205,  203,   85,  588,
     1036      480,  122,  480,  482,  117,  482,   87,  891,   70,  482,
     1037
     1038      590,   70,  590,  891,  891,  891,  590,  484,  891,  484,
     1039      592,  891,  592,  891,  891,  891,  592,  486,  891,  486,
     1040      491,  891,  491,  891,  491,  891,  491,  382,  891,  382,
     1041      891,  891,  891,  382,  606,  891,  606,  891,  891,  891,
     1042      606,  503,  891,  503,  608,  891,  608,  891,  891,  891,
     1043      608,  505,  891,  505,  610,  891,  610,  891,  891,  891,
     1044      610,  507,  891,  507,  612,  891,  612,  891,  891,  891,
     1045      612,  509,  891,  509,  614,  891,  614,  891,  891,  891,
     1046      614,  511,  891,  511,  616,  891,  616,  891,  891,  891,
     1047      616,  513,  891,  513,   86,  891,  891,   86,  891,   86,
     1048
     1049       86,   86,   86,   86,  669,  669,  669,  669,  669,  669,
     1050      669,  669,  669,  669,  669,  669,  669,  671,  891,  671,
     1051      891,  891,  891,  671,  578,  891,  578,  673,  891,  673,
     1052      891,  891,  891,  673,  580,  891,  580,  675,  891,  675,
     1053      891,  891,  891,  675,  582,  891,  582,  677,  891,  677,
     1054      891,  891,  891,  677,  584,  891,  584,  679,  891,  679,
     1055      891,  891,  891,  679,  586,  891,  586,  681,  891,  681,
     1056      891,  891,  891,  681,  588,  891,  588,  683,  891,  683,
     1057      891,  891,  891,  683,  590,  891,  590,   86,  891,   86,
     1058      891,  891,  891,   86,  592,  891,  592,  491,  891,  491,
     1059
     1060      891,  891,  891,  491,  691,  891,  691,  891,  891,  891,
     1061      691,  606,  891,  606,  693,  891,  693,  891,  891,  891,
     1062      693,  608,  891,  608,  695,  891,  695,  891,  891,  891,
     1063      695,  610,  891,  610,  140,  891,  140,  891,  891,  891,
     1064      140,  612,  891,  612,  698,  891,  698,  614,  891,  614,
     1065       86,  891,  891,   86,  891,   86,   86,   86,   86,   86,
     1066      616,  891,  616,  669,  669,  669,  669,  669,  669,  669,
     1067      669,  669,  669,  669,  669,  669,  737,  891,  737,  891,
     1068      891,  891,  737,  671,  891,  671,  204,  891,  204,  891,
     1069      891,  891,  204,  673,  891,  673,  740,  891,  740,  675,
     1070
     1071      891,  675,  204,  891,  891,  204,  891,  204,  204,  204,
     1072      204,  204,  677,  891,  677,  741,  891,  741,  679,  891,
     1073      679,  681,  891,  681,  742,  891,  742,  683,  891,  683,
     1074       86,  891,   86,  744,  891,  744,  891,  891,  891,  744,
     1075      691,  891,  691,  269,  891,  269,  891,  891,  891,  269,
     1076      693,  891,  693,  747,  891,  747,  695,  891,  695,  140,
     1077      891,  140,  748,  891,  748,  891,  891,  891,  748,   86,
     1078      891,  891,   86,  891,   86,   86,   86,   86,   86,  782,
     1079      891,  782,  737,  891,  737,  204,  891,  204,  783,  891,
     1080      783,  891,  891,  891,  783,  785,  891,  785,  891,  891,
     1081
     1082      891,  785,  787,  891,  787,  891,  891,  891,  787,  789,
     1083      891,  789,  790,  891,  790,  891,  891,  891,  790,  792,
     1084      891,  792,  891,  891,  891,  792,  814,  891,  814,  891,
     1085      891,  891,  814,  816,  891,  816,  891,  891,  891,  816,
     1086      818,  891,  818,  891,  891,  891,  818,  820,  891,  820,
     1087      891,  891,  891,  820,  822,  891,  822,  891,  891,  891,
     1088      822,  824,  891,  824,  891,  891,  891,  824,  616,  891,
     1089      616,  891,  891,  891,  616,  844,  891,  844,  891,  891,
     1090      891,  844,  677,  891,  677,  891,  891,  891,  677,  681,
     1091      891,  681,  891,  891,  891,  681,   86,  891,   86,  891,
     1092
     1093      891,  891,   86,  849,  891,  849,  891,  891,  891,  849,
     1094      140,  891,  140,  891,  891,  891,  140,  204,  891,  204,
     1095      891,  891,  891,  204,   11,  891,  891,  891,  891,  891,
     1096      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1097      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1098      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1099      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1100      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1101      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1102      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1103
     1104      891,  891,  891,  891,  891,  891,  891,  891,  891,  891
    10551105    } ;
    10561106
    1057 static yyconst flex_int16_t yy_chk[2653] =
     1107static yyconst flex_int16_t yy_chk[2911] =
    10581108    {   0,
    10591109        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    10651115        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    10661116        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1067         1,    1,    1,    1,    2,   16,   24,   16,   24,    2,
    1068        19,   19,    2,    5,    5,    5,    5,    5,    5,    5,
     1117        1,    1,    1,    1,    1,    2,   16,   24,   16,   24,
     1118        2,   19,   19,    2,    5,    5,    5,    5,    5,    5,
    10691119
    10701120        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
     
    10751125        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    10761126        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    1077         5,    5,    5,    5,    5,    5,    5,    7,    8,    9,
    1078        10,   37,   37,   20,   48,    9,   10,  512,    7,    8,
    1079        13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
    1080 
    1081        15,   15,   20,   25,   48,   42,   53,   28,   27,   28,
    1082        28,   28,   28,   28,   28,  512,  824,   25,   29,   25,
    1083        27,   27,   27,   29,   53,   35,    7,    8,    9,   10,
    1084        40,   42,   55,   29,   30,   40,   30,   30,   30,   30,
    1085        30,   30,   35,   47,   35,   35,  125,   49,  125,   50,
    1086        55,   56,   49,   30,   63,   51,   55,   30,   50,   49,
    1087        56,   72,   30,   30,   47,   49,   47,   50,   30,   54,
    1088        51,   50,   51,   40,   30,   60,   40,   86,   61,   54,
    1089        30,   51,  107,  113,  823,  822,   54,   72,   30,   58,
    1090        61,   30,   31,   60,   31,   31,   31,   31,   31,   31,
    1091 
    1092       108,   58,  106,   86,   63,  107,  113,  106,  126,   58,
    1093       126,   31,   45,   45,   45,   31,   58,   57,   45,   45,
    1094        31,   45,   52,   45,   45,  821,   31,   52,   45,   57,
    1095        57,   45,   31,  106,  108,   52,  140,   52,   31,   57,
    1096        52,  128,   57,  128,   52,   59,   31,   38,  112,  819,
    1097        59,   38,   38,  112,   38,  114,   38,   38,  131,   38,
    1098       131,   38,  140,   59,   79,   79,   79,   79,   79,   79,
    1099        38,   38,   38,   66,   66,   66,   66,   66,   66,  112,
    1100       154,   66,   81,   81,   81,   81,   81,   81,   59,  114,
    1101        38,   59,  154,   38,   82,   82,   82,   82,   82,   82,
    1102 
    1103       129,   67,   67,  130,  818,   59,   67,  103,  103,  103,
    1104       103,  133,  298,  133,  129,  130,  129,  130,  298,  109,
    1105        38,   38,   67,   67,   67,   67,   67,   67,   76,   76,
    1106       134,  134,  134,   76,  103,   76,  105,  171,  105,  103,
    1107        76,  105,  105,  105,  105,  105,  105,  161,  109,   76,
    1108        76,   76,   76,  109,  110,  132,  132,  171,  132,  115,
    1109        76,  813,  103,  104,  161,  104,  104,  104,  104,  104,
    1110       104,  147,  110,  105,  148,   76,  109,  115,   76,  136,
    1111       110,  136,  104,   76,   76,  115,  147,   76,   76,  138,
    1112       149,  138,  148,  147,  143,   76,  151,  104,   76,  143,
    1113 
    1114        76,   76,   76,  104,   76,   84,  152,  150,  149,   84,
    1115        84,  153,  151,  157,   84,   84,  150,   84,  158,   84,
    1116       156,  165,  162,  163,  152,  812,  808,  158,   84,   84,
    1117        84,  159,  162,  153,  155,  157,  156,  143,  164,  155,
    1118       167,  155,  165,  155,  155,  160,  163,  155,   84,  155,
    1119       160,   84,  159,  159,  155,  155,  155,  168,  155,  169,
    1120       170,  172,  167,  160,  166,  164,  213,  173,  213,  177,
    1121       806,  175,  168,  176,  177,  236,  169,  179,  170,   84,
    1122        98,   98,   98,   98,   98,   98,  175,  166,  172,  173,
    1123       176,  181,  178,  175,  180,  179,  181,   98,   98,  271,
    1124 
    1125       183,   98,  182,  178,  184,  180,  186,  200,  189,  236,
    1126       803,  181,   98,  178,  178,  182,  185,  271,   98,   98,
    1127       183,  189,  180,  187,   98,  102,  102,  102,  102,  102,
    1128       102,  184,  188,  200,  440,  185,  187,  214,  215,  214,
    1129       215,  241,  102,  102,  187,  188,  102,  188,  275,  186,
    1130       204,  204,  186,  275,  217,  204,  218,  102,  218,  440,
    1131       193,  193,  287,  102,  102,  193,  217,  241,  217,  102,
    1132       192,  192,  192,  192,  192,  192,  219,  219,  192,  219,
    1133       249,  193,  193,  193,  193,  193,  193,  195,  195,  287,
    1134       285,  216,  195,  197,  197,  220,  802,  220,  197,  285,
    1135 
    1136       197,  207,  207,  207,  207,  216,  249,  216,  195,  195,
    1137       195,  195,  195,  195,  197,  197,  197,  197,  197,  197,
    1138       221,  221,  221,  223,  224,  223,  224,  237,  237,  237,
    1139       237,  237,  237,  207,  228,  228,  228,  228,  228,  228,
    1140       229,  259,  229,  259,  237,  229,  229,  229,  229,  229,
    1141       229,  228,  228,  234,  234,  228,  260,  234,  260,  237,
    1142       541,  272,  277,  270,  284,  237,  228,  277,  263,  284,
    1143       541,  281,  228,  228,  234,  234,  270,  229,  228,  272,
    1144       234,  238,  238,  238,  238,  238,  238,  239,  239,  239,
    1145       239,  239,  239,  240,  263,  240,  276,  281,  240,  240,
    1146 
    1147       240,  240,  240,  240,  246,  239,  801,  800,  239,  248,
    1148       248,  248,  248,  248,  248,  279,  276,  273,  274,  239,
    1149       253,  253,  253,  253,  253,  253,  239,  246,  278,  246,
    1150       279,  239,  246,  273,  282,  274,  279,  279,  246,  280,
    1151       286,  248,  291,  283,  288,  290,  292,  291,  278,  282,
    1152       246,  294,  253,  286,  246,  292,  295,  280,  246,  283,
    1153       283,  293,  288,  290,  296,  297,  300,  301,  293,  299,
    1154       297,  294,  302,  304,  295,  300,  303,  305,  304,  306,
    1155       307,  302,  305,  301,  306,  296,  296,  308,  299,  309,
    1156       314,  303,  311,  312,  313,  315,  316,  317,  319,  307,
    1157 
    1158       318,  306,  309,  311,  320,  308,  321,  313,  312,  318,
    1159       324,  322,  314,  325,  317,  326,  316,  327,  315,  324,
    1160       319,  329,  330,  328,  386,  385,  329,  320,  321,  322,
    1161       327,  328,  332,  326,  331,  331,  385,  330,  332,  331,
    1162       386,  331,  339,  339,  339,  339,  340,  340,  340,  340,
    1163       349,  350,  349,  350,  388,  799,  325,  356,  356,  356,
    1164       356,  356,  356,  357,  357,  357,  357,  357,  357,  370,
    1165       358,  392,  358,  388,  339,  358,  358,  358,  358,  358,
    1166       358,  357,  389,  390,  357,  359,  359,  359,  359,  359,
    1167       359,  389,  370,  392,  390,  357,  360,  360,  360,  360,
    1168 
    1169       360,  360,  357,  403,  798,  365,  366,  357,  361,  361,
    1170       361,  361,  361,  361,  365,  366,  372,  359,  362,  362,
    1171       362,  362,  362,  362,  403,  395,  361,  396,  360,  361,
    1172       365,  366,  368,  367,  372,  391,  362,  368,  387,  362,
    1173       361,  395,  372,  400,  391,  393,  394,  361,  400,  396,
    1174       362,  797,  361,  387,  393,  796,  367,  362,  367,  394,
    1175       397,  367,  362,  368,  369,  371,  369,  367,  399,  369,
    1176       369,  369,  369,  369,  369,  398,  397,  397,  402,  367,
    1177       401,  404,  408,  367,  402,  405,  399,  367,  371,  415,
    1178       371,  406,  404,  371,  413,  401,  408,  398,  410,  371,
    1179 
    1180       412,  369,  401,  420,  405,  414,  406,  416,  417,  421,
    1181       410,  371,  415,  422,  414,  371,  413,  417,  414,  371,
    1182       423,  412,  416,  420,  424,  425,  426,  428,  422,  430,
    1183       431,  421,  435,  432,  433,  426,  434,  436,  443,  424,
    1184       438,  435,  423,  437,  428,  425,  442,  438,  445,  443,
    1185       439,  431,  430,  432,  433,  436,  437,  439,  434,  441,
    1186       446,  504,  447,  442,  504,  473,  470,  441,  447,  446,
    1187       445,  456,  456,  456,  456,  470,  494,  441,  467,  467,
    1188       467,  467,  467,  467,  468,  468,  468,  468,  468,  468,
    1189       473,  470,  474,  494,  472,  495,  467,  497,  499,  467,
    1190 
    1191       498,  501,  468,  472,  500,  468,  506,  505,  495,  794,
    1192       467,  499,  497,  503,  501,  507,  468,  467,  474,  472,
    1193       498,  515,  467,  468,  503,  506,  500,  505,  468,  469,
    1194       469,  469,  469,  469,  469,  471,  507,  471,  515,  793,
    1195       471,  471,  471,  471,  471,  471,  476,  476,  476,  476,
    1196       476,  476,  477,  477,  477,  477,  477,  477,  478,  514,
    1197       478,  469,  508,  478,  478,  478,  478,  478,  478,  502,
    1198       477,  508,  471,  477,  502,  509,  510,  511,  522,  513,
    1199       509,  514,  523,  516,  477,  524,  520,  510,  513,  517,
    1200       511,  477,  516,  525,  517,  520,  477,  527,  528,  523,
    1201 
    1202       524,  529,  525,  531,  522,  536,  532,  537,  534,  538,
    1203       528,  532,  535,  543,  527,  540,  529,  534,  531,  544,
    1204       537,  535,  542,  540,  546,  549,  538,  536,  547,  542,
    1205       550,  544,  592,  546,  597,  543,  791,  790,  547,  592,
    1206       596,  597,  549,  550,  569,  569,  569,  569,  569,  569,
    1207       570,  570,  570,  570,  570,  570,  571,  571,  571,  571,
    1208       571,  571,  572,  596,  572,  610,  593,  572,  572,  572,
    1209       572,  572,  572,  594,  571,  593,  569,  571,  575,  575,
    1210       575,  575,  575,  575,  595,  610,  594,  600,  571,  598,
    1211       600,  599,  603,  591,  602,  571,  575,  598,  591,  575,
    1212 
    1213       571,  595,  577,  577,  577,  577,  577,  577,  599,  602,
    1214       575,  591,  601,  604,  603,  605,  606,  575,  607,  606,
    1215       577,  608,  575,  577,  609,  601,  612,  611,  613,  615,
    1216       604,  616,  620,  617,  577,  607,  611,  605,  621,  609,
    1217       623,  577,  627,  634,  612,  637,  577,  626,  608,  627,
    1218       613,  615,  620,  634,  616,  617,  626,  623,  636,  666,
    1219       637,  669,  672,  673,  680,  621,  673,  636,  655,  655,
    1220       655,  655,  655,  655,  656,  656,  656,  656,  656,  656,
    1221       666,  667,  672,  670,  675,  680,  655,  669,  671,  655,
    1222       670,  667,  656,  671,  674,  656,  678,  674,  677,  681,
    1223 
    1224       655,  683,  675,  684,  677,  678,  656,  655,  679,  732,
    1225       683,  679,  655,  656,  682,  696,  732,  682,  656,  657,
    1226       657,  657,  657,  657,  657,  686,  685,  681,  684,  685,
    1227       688,  687,  689,  691,  693,  696,  697,  700,  686,  687,
    1228       688,  699,  691,  723,  722,  689,  700,  718,  719,  699,
    1229       720,  657,  724,  721,  722,  720,  783,  693,  697,  707,
    1230       707,  707,  707,  707,  707,  719,  723,  718,  721,  725,
    1231       726,  727,  725,  729,  731,  735,  729,  731,  724,  733,
    1232       754,  734,  733,  726,  734,  756,  757,  759,  763,  758,
    1233       735,  707,  758,  760,  762,  766,  760,  764,  727,  767,
    1234 
    1235       764,  769,  767,  784,  757,  768,  756,  754,  768,  759,
    1236       769,  785,  762,  763,  787,  789,  786,  766,  785,  786,
    1237       782,  781,  788,  787,  784,  788,  792,  795,  804,  792,
    1238       795,  805,  789,  814,  815,  807,  805,  804,  807,  809,
    1239       810,  811,  809,  810,  811,  816,  820,  817,  816,  815,
    1240       817,  780,  779,  814,  778,  777,  776,  775,  774,  773,
    1241       772,  771,  770,  765,  761,  755,  753,  752,  820,  826,
    1242       826,  826,  826,  826,  826,  826,  826,  826,  826,  826,
    1243       826,  827,  827,  827,  827,  827,  827,  827,  827,  827,
    1244       827,  827,  827,  828,  828,  828,  828,  828,  828,  828,
    1245 
    1246       828,  828,  828,  828,  828,  829,  751,  750,  829,  829,
    1247       829,  829,  829,  829,  830,  749,  748,  747,  830,  830,
    1248       830,  830,  830,  831,  831,  831,  831,  831,  831,  831,
    1249       831,  831,  831,  831,  831,  832,  746,  745,  832,  832,
    1250       832,  832,  832,  832,  833,  744,  833,  833,  743,  833,
    1251       833,  833,  833,  833,  742,  833,  834,  741,  740,  834,
    1252       834,  834,  834,  834,  834,  834,  739,  834,  835,  835,
    1253       835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
    1254       836,  836,  836,  738,  737,  736,  836,  837,  730,  728,
    1255       837,  837,  837,  837,  837,  837,  838,  838,  717,  716,
    1256 
    1257       715,  838,  839,  839,  714,  713,  712,  839,  840,  840,
    1258       711,  710,  709,  840,  841,  841,  706,  705,  704,  841,
    1259       842,  842,  703,  698,  695,  842,  843,  843,  694,  692,
    1260       690,  843,  844,  844,  676,  668,  665,  844,  845,  845,
    1261       660,  658,  646,  845,  846,  846,  642,  640,  638,  846,
    1262       847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
    1263       847,  847,  848,  848,  849,  849,  849,  849,  849,  635,
    1264       849,  850,  850,  850,  851,  851,  633,  632,  631,  851,
    1265       852,  852,  630,  629,  628,  852,  853,  853,  625,  624,
    1266       622,  853,  854,  854,  855,  855,  619,  618,  614,  855,
    1267 
    1268       856,  856,  857,  589,  585,  857,  857,  857,  857,  857,
    1269       857,  858,  858,  858,  858,  858,  858,  858,  858,  858,
    1270       858,  858,  858,  859,  859,  859,  859,  859,  859,  859,
    1271       859,  859,  859,  859,  859,  860,  860,  583,  581,  579,
    1272       860,  861,  861,  573,  567,  565,  861,  862,  862,  563,
    1273       561,  559,  862,  863,  863,  864,  864,  557,  555,  553,
    1274       864,  865,  865,  866,  866,  552,  551,  548,  866,  867,
    1275       867,  868,  868,  545,  539,  533,  868,  869,  869,  870,
    1276       870,  530,  526,  521,  870,  871,  871,  872,  872,  519,
    1277       518,  496,  872,  873,  873,  874,  874,  492,  490,  488,
    1278 
    1279       874,  875,  875,  876,  876,  486,  876,  484,  876,  877,
    1280       877,  482,  877,  481,  877,  878,  878,  878,  878,  878,
    1281       480,  878,  879,  879,  479,  465,  463,  879,  880,  880,
    1282       462,  461,  459,  880,  881,  881,  457,  454,  452,  881,
    1283       882,  882,  883,  883,  450,  448,  444,  883,  884,  884,
    1284       885,  885,  429,  427,  419,  885,  886,  886,  887,  887,
    1285       418,  411,  409,  887,  888,  888,  889,  407,  383,  889,
    1286       889,  889,  889,  889,  889,  890,  890,  890,  890,  890,
    1287       890,  890,  890,  890,  890,  890,  890,  891,  891,  381,
    1288       379,  377,  891,  892,  892,  893,  893,  376,  375,  354,
    1289 
    1290       893,  894,  894,  895,  895,  352,  351,  347,  895,  896,
    1291       896,  897,  897,  345,  343,  341,  897,  898,  898,  899,
    1292       899,  337,  335,  334,  899,  900,  900,  901,  901,  333,
    1293       323,  310,  901,  902,  902,  903,  903,  289,  268,  266,
    1294       903,  904,  904,  265,  264,  262,  904,  905,  905,  906,
    1295       906,  261,  256,  252,  906,  907,  907,  908,  908,  251,
    1296       908,  247,  908,  909,  909,  244,  243,  232,  909,  910,
    1297       910,  231,  226,  225,  910,  911,  911,  912,  912,  222,
    1298       212,  210,  912,  913,  913,  914,  914,  209,  208,  202,
    1299       914,  915,  915,  916,  916,  201,  199,  194,  916,  917,
    1300 
    1301       917,  918,  918,  174,  145,  144,  918,  919,  919,  920,
    1302       920,  139,  137,  135,  920,  921,  921,  922,  127,  124,
    1303       922,  922,  922,  922,  922,  922,  923,  923,  923,  923,
    1304       923,  923,  923,  923,  923,  923,  923,  923,  924,  924,
    1305       123,  119,  100,  924,  925,  925,  926,  926,   97,   94,
    1306        92,  926,  927,  927,  928,  928,   85,   71,   69,  928,
    1307       929,  929,  930,  930,   65,   44,   39,  930,  931,  931,
    1308       932,  932,   36,   33,   18,  932,  933,  933,  934,  934,
    1309        11,    4,    3,  934,  935,  935,  936,  936,    0,    0,
    1310         0,  936,  937,  937,  938,  938,    0,    0,    0,  938,
    1311 
    1312       939,  939,  940,  940,    0,    0,    0,  940,  941,  941,
    1313         0,    0,    0,  941,  942,  942,  943,  943,    0,    0,
    1314         0,  943,  944,  944,  945,  945,    0,    0,    0,  945,
    1315       946,  946,  947,  947,    0,    0,    0,  947,  948,  948,
    1316       949,  949,  950,  950,  951,    0,    0,  951,  951,  951,
    1317       951,  951,  951,  952,  952,  953,  953,  953,  953,  953,
    1318       953,  953,  953,  953,  953,  953,  953,  954,  954,    0,
    1319         0,    0,  954,  955,  955,  956,  956,    0,    0,    0,
    1320       956,  957,  957,  958,  958,  959,  959,  960,    0,    0,
    1321       960,  960,  960,  960,  960,  960,  961,  961,  962,  962,
    1322 
    1323       963,  963,  964,  964,  965,  965,  966,  966,  967,  967,
    1324       968,  968,    0,    0,    0,  968,  969,  969,  970,  970,
    1325         0,    0,    0,  970,  971,  971,  972,  972,  973,  973,
    1326       974,  974,  975,  975,    0,    0,    0,  975,  976,    0,
    1327         0,  976,  976,  976,  976,  976,  976,  977,  977,  978,
    1328       978,  979,  979,    0,    0,    0,  979,  980,  980,    0,
    1329         0,    0,  980,  981,  981,    0,    0,    0,  981,  982,
    1330       982,  983,  983,    0,    0,    0,  983,  984,  984,    0,
    1331         0,    0,  984,  985,  985,    0,    0,    0,  985,  986,
    1332       986,    0,    0,    0,  986,  987,  987,    0,    0,    0,
    1333 
    1334       987,  988,  988,    0,    0,    0,  988,  989,  989,    0,
    1335         0,    0,  989,  990,  990,    0,    0,    0,  990,  991,
    1336       991,    0,    0,    0,  991,  992,  992,    0,    0,    0,
    1337       992,  993,  993,    0,    0,    0,  993,  994,  994,    0,
    1338         0,    0,  994,  995,  995,    0,    0,    0,  995,  996,
    1339       996,    0,    0,    0,  996,  997,  997,    0,    0,    0,
    1340       997,  998,  998,    0,    0,    0,  998,  825,  825,  825,
    1341       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1342       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1343       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1344 
    1345       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1346       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1347       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1348       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1349       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1350       825,  825
     1127        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
     1128        8,    9,   10,   37,   37,   20,   39,    9,   10,  890,
     1129        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
     1130
     1131       15,   15,   15,   15,   20,   25,   48,   39,   42,   28,
     1132       27,   28,   28,   28,   28,   28,   28,  109,  115,   25,
     1133       29,   25,   27,   27,   27,   29,   48,   35,   40,    7,
     1134        8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
     1135       30,   30,   30,   30,   35,   57,   35,   35,   44,  126,
     1136       44,  126,  109,  115,   57,   30,   64,   56,   47,   30,
     1137       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
     1138       45,   30,   40,   45,   45,   40,   49,   30,   45,   56,
     1139       62,   45,   49,   30,   73,  889,  127,   53,  127,   51,
     1140       61,   30,   62,   55,   30,   31,  108,   31,   31,   31,
     1141
     1142       31,   31,   31,   50,   51,   53,   51,   64,   61,   54,
     1143       73,   55,   50,   87,   31,   51,   50,   55,   31,   54,
     1144      108,   50,   52,  114,   31,   50,   54,   52,  175,  129,
     1145       31,  129,  107,  154,  151,   52,   31,   52,  107,   87,
     1146       52,   60,   31,  132,   52,  132,   60,  114,  175,  154,
     1147       31,   38,  151,  385,  111,   38,   38,   58,   38,   60,
     1148       38,   38,  113,   38,  107,   38,   59,  130,  113,   58,
     1149       58,  116,  111,  164,   38,   38,   38,  385,   59,   58,
     1150      111,  130,   58,  130,  142,   60,   59,  131,   60,  116,
     1151      164,   68,   68,   59,  113,   38,   68,  116,   38,  131,
     1152
     1153      110,  131,   60,   67,   67,   67,   67,   67,   67,  881,
     1154      142,   67,   68,   68,   68,   68,   68,   68,   80,   80,
     1155       80,   80,   80,   80,  153,   38,   38,   77,   77,  134,
     1156      110,  134,   77,  153,   77,  110,  135,  135,  135,   77,
     1157       82,   82,   82,   82,   82,   82,  880,  243,   77,   77,
     1158       77,   77,   83,   83,   83,   83,   83,   83,  110,   77,
     1159      103,  103,  103,  103,  103,  103,  104,  104,  104,  104,
     1160      133,  133,  137,  133,  137,   77,  145,  139,   77,  139,
     1161      157,  145,  243,   77,   77,  152,  156,   77,   77,  155,
     1162      166,  150,  157,  103,  104,   77,  159,  168,   77,  104,
     1163
     1164       77,   77,   77,  152,   77,   85,  150,  155,  156,   85,
     1165       85,  166,  159,  150,   85,   85,  161,   85,  160,   85,
     1166      145,  162,  104,  167,  168,  161,  169,  163,   85,   85,
     1167       85,  105,  163,  105,  105,  105,  105,  105,  105,  877,
     1168      160,  171,  162,  162,  165,  163,  167,  169,  173,   85,
     1169      105,  106,   85,  106,  165,  172,  106,  106,  106,  106,
     1170      106,  106,  180,  171,  170,  173,  105,  176,  177,  170,
     1171      172,  181,  105,  174,  184,  187,  181,  182,  179,  180,
     1172       85,   99,   99,   99,   99,   99,   99,  170,  187,  106,
     1173      177,  174,  184,  179,  176,  183,  190,   99,   99,   99,
     1174
     1175      179,   99,   99,  189,  182,  186,  183,  191,  189,  218,
     1176      186,  218,  185,  188,   99,  190,  183,  183,  284,   99,
     1177       99,   99,  158,  185,   99,  186,   99,  158,  158,  158,
     1178      189,  158,  158,  188,  192,  158,  194,  158,  284,  219,
     1179      185,  219,  158,  158,  158,  193,  158,  192,  220,  194,
     1180      220,  191,  198,  198,  191,  192,  205,  198,  193,  876,
     1181      193,  197,  197,  197,  197,  197,  197,  200,  200,  197,
     1182      248,  221,  200,  198,  198,  198,  198,  198,  198,  202,
     1183      202,  223,  205,  223,  202,  221,  202,  221,  200,  200,
     1184      200,  200,  200,  200,  209,  209,  248,  338,  222,  209,
     1185
     1186      202,  202,  202,  202,  202,  202,  212,  212,  212,  212,
     1187      222,  309,  222,  224,  224,  225,  224,  225,  226,  226,
     1188      226,  228,  229,  228,  229,  234,  234,  235,  236,  235,
     1189      309,  279,  235,  235,  235,  235,  235,  235,  237,  212,
     1190      237,  338,  266,  237,  266,  267,  278,  267,  234,  279,
     1191      283,  236,  241,  241,  241,  283,  241,  241,  256,  278,
     1192      237,  281,  237,  282,  280,  235,  270,  237,  244,  244,
     1193      244,  244,  244,  244,  241,  241,  241,  281,  285,  241,
     1194      282,  241,  280,  285,  256,  244,  245,  245,  245,  245,
     1195      245,  245,  270,  288,  293,  286,  294,  300,  306,  293,
     1196
     1197      308,  244,  300,  306,  874,  294,  308,  244,  246,  246,
     1198      246,  246,  246,  246,  253,  286,  288,  255,  255,  255,
     1199      255,  255,  255,  287,  246,  247,  246,  247,  246,  246,
     1200      247,  247,  247,  247,  247,  247,  290,  253,  287,  253,
     1201      873,  246,  289,  253,  287,  287,  246,  292,  246,  253,
     1202      255,  246,  291,  246,  260,  260,  260,  260,  260,  260,
     1203      289,  253,  290,  292,  292,  253,  295,  291,  296,  253,
     1204      297,  299,  301,  302,  303,  304,  305,  307,  311,  295,
     1205      302,  301,  307,  310,  311,  312,  319,  260,  297,  299,
     1206      313,  314,  310,  304,  303,  296,  318,  305,  305,  313,
     1207
     1208      315,  312,  316,  317,  319,  315,  314,  316,  317,  320,
     1209      322,  323,  324,  326,  325,  318,  327,  328,  331,  329,
     1210      330,  322,  320,  332,  334,  317,  323,  325,  333,  330,
     1211      335,  324,  337,  339,  340,  326,  329,  328,  401,  327,
     1212      331,  337,  334,  335,  341,  343,  332,  340,  342,  401,
     1213      333,  339,  341,  342,  344,  344,  345,  460,  866,  344,
     1214      343,  344,  345,  352,  352,  352,  352,  353,  353,  353,
     1215      353,  362,  363,  362,  363,  370,  370,  370,  370,  370,
     1216      370,  372,  460,  372,  380,  381,  372,  372,  372,  372,
     1217      372,  372,  865,  402,  380,  381,  352,  371,  371,  371,
     1218
     1219      371,  371,  371,  374,  374,  374,  374,  374,  374,  402,
     1220      380,  381,  403,  371,  404,  371,  864,  371,  371,  375,
     1221      375,  375,  375,  375,  375,  383,  382,  403,  406,  405,
     1222      371,  383,  407,  404,  408,  371,  374,  371,  405,  406,
     1223      371,  407,  371,  376,  376,  376,  376,  376,  376,  382,
     1224      412,  382,  375,  387,  411,  382,  408,  383,  384,  386,
     1225      384,  382,  410,  384,  384,  384,  384,  384,  384,  409,
     1226      411,  387,  412,  382,  413,  410,  376,  382,  409,  387,
     1227      415,  382,  386,  414,  386,  416,  417,  413,  386,  418,
     1228      421,  417,  419,  422,  386,  420,  384,  427,  419,  414,
     1229
     1230      414,  421,  415,  416,  418,  423,  386,  425,  429,  427,
     1231      386,  418,  422,  430,  386,  431,  420,  432,  433,  434,
     1232      423,  425,  435,  437,  433,  439,  440,  441,  431,  429,
     1233      442,  435,  443,  444,  434,  430,  449,  445,  437,  447,
     1234      432,  450,  441,  451,  454,  439,  445,  443,  440,  452,
     1235      450,  453,  442,  444,  455,  456,  447,  457,  458,  449,
     1236      459,  461,  463,  455,  451,  458,  454,  459,  462,  452,
     1237      457,  453,  466,  456,  464,  467,  462,  525,  863,  463,
     1238      525,  468,  491,  461,  467,  464,  462,  468,  477,  477,
     1239      477,  477,  491,  515,  466,  488,  488,  488,  488,  488,
     1240
     1241      488,  490,  490,  490,  490,  490,  490,  519,  491,  521,
     1242      515,  488,  492,  488,  492,  488,  488,  492,  492,  492,
     1243      492,  492,  492,  494,  516,  495,  493,  519,  488,  862,
     1244      858,  521,  518,  488,  490,  488,  493,  516,  488,  529,
     1245      488,  497,  497,  497,  497,  497,  497,  518,  520,  494,
     1246      492,  495,  493,  498,  498,  498,  498,  498,  498,  523,
     1247      529,  520,  526,  854,  523,  851,  528,  850,  522,  498,
     1248      499,  498,  499,  498,  498,  499,  499,  499,  499,  499,
     1249      499,  522,  526,  524,  527,  528,  498,  531,  530,  532,
     1250      533,  498,  531,  498,  524,  534,  498,  530,  498,  527,
     1251
     1252      532,  535,  537,  533,  536,  538,  539,  541,  542,  547,
     1253      535,  539,  544,  541,  538,  545,  546,  542,  547,  537,
     1254      550,  551,  849,  549,  534,  552,  536,  554,  560,  544,
     1255      545,  546,  549,  551,  555,  557,  558,  550,  561,  555,
     1256      552,  562,  554,  565,  557,  558,  564,  567,  566,  568,
     1257      560,  561,  575,  565,  564,  566,  569,  571,  562,  574,
     1258      572,  568,  569,  620,  619,  575,  571,  601,  601,  567,
     1259      572,  619,  620,  848,  847,  622,  574,  594,  594,  594,
     1260      594,  594,  594,  595,  595,  595,  595,  595,  595,  597,
     1261      601,  597,  622,  621,  597,  597,  597,  597,  597,  597,
     1262
     1263      600,  600,  600,  600,  600,  600,  621,  602,  626,  846,
     1264      594,  596,  596,  596,  596,  596,  596,  603,  618,  603,
     1265      623,  624,  603,  618,  628,  626,  625,  596,  624,  596,
     1266      602,  596,  596,  600,  625,  627,  618,  628,  627,  603,
     1267      629,  603,  630,  623,  596,  631,  603,  632,  633,  596,
     1268      634,  596,  635,  634,  596,  636,  596,  630,  637,  638,
     1269      640,  644,  629,  639,  632,  641,  642,  631,  645,  635,
     1270      633,  646,  639,  637,  650,  642,  651,  656,  640,  638,
     1271      646,  653,  657,  636,  644,  665,  656,  641,  664,  657,
     1272      645,  667,  668,  842,  650,  665,  700,  664,  653,  699,
     1273
     1274      667,  702,  705,  651,  714,  842,  700,  668,  686,  686,
     1275      686,  686,  686,  686,  690,  690,  690,  690,  690,  690,
     1276      699,  708,  705,  703,  686,  714,  686,  702,  686,  686,
     1277      703,  704,  706,  715,  707,  706,  704,  707,  710,  708,
     1278      712,  686,  711,  717,  710,  718,  686,  690,  686,  712,
     1279      720,  686,  717,  686,  713,  711,  716,  713,  719,  716,
     1280      721,  719,  715,  720,  722,  723,  724,  725,  721,  731,
     1281      728,  718,  732,  735,  722,  733,  725,  736,  723,  756,
     1282      757,  735,  758,  754,  756,  759,  736,  724,  728,  731,
     1283      755,  761,  758,  728,  732,  757,  733,  743,  743,  743,
     1284
     1285      743,  743,  743,  754,  760,  763,  762,  755,  759,  762,
     1286      764,  766,  768,  769,  766,  768,  770,  761,  763,  770,
     1287      769,  760,  771,  773,  772,  771,  775,  779,  794,  797,
     1288      743,  796,  798,  800,  799,  798,  800,  801,  764,  772,
     1289      801,  803,  804,  807,  810,  805,  773,  797,  805,  775,
     1290      779,  808,  796,  810,  808,  794,  799,  809,  811,  803,
     1291      809,  812,  813,  828,  829,  807,  830,  831,  804,  830,
     1292      832,  829,  812,  834,  811,  856,  831,  833,  813,  837,
     1293      833,  875,  837,  840,  828,  856,  840,  841,  832,  843,
     1294      834,  852,  853,  867,  832,  868,  841,  853,  843,  855,
     1295
     1296      852,  857,  855,  875,  859,  860,  857,  859,  860,  861,
     1297      868,  869,  861,  867,  869,  870,  871,  872,  878,  871,
     1298      872,  879,  882,  884,  883,  870,  885,  887,  886,  845,
     1299      888,  882,  844,  839,  838,  836,  879,  883,  835,  878,
     1300      888,  827,  826,  825,  824,  884,  886,  885,  823,  887,
     1301      892,  892,  892,  892,  892,  892,  892,  892,  892,  892,
     1302      892,  892,  892,  893,  893,  893,  893,  893,  893,  893,
     1303      893,  893,  893,  893,  893,  893,  894,  894,  894,  894,
     1304      894,  894,  894,  894,  894,  894,  894,  894,  894,  895,
     1305      822,  821,  895,  820,  895,  895,  895,  895,  895,  896,
     1306
     1307      819,  818,  817,  896,  896,  896,  896,  896,  896,  897,
     1308      897,  897,  897,  897,  897,  897,  897,  897,  897,  897,
     1309      897,  897,  898,  816,  815,  898,  814,  898,  898,  898,
     1310      898,  898,  899,  806,  899,  899,  802,  899,  899,  899,
     1311      899,  899,  899,  795,  899,  900,  793,  792,  900,  900,
     1312      900,  900,  900,  900,  900,  900,  791,  900,  901,  901,
     1313      901,  901,  901,  901,  901,  901,  901,  901,  901,  901,
     1314      901,  902,  902,  790,  902,  789,  788,  787,  902,  903,
     1315      786,  785,  903,  784,  903,  903,  903,  903,  903,  904,
     1316      783,  904,  782,  781,  780,  904,  905,  778,  905,  777,
     1317
     1318      776,  774,  905,  906,  767,  906,  765,  753,  752,  906,
     1319      907,  751,  907,  750,  749,  748,  907,  908,  747,  908,
     1320      746,  745,  742,  908,  909,  741,  909,  740,  734,  730,
     1321      909,  910,  729,  910,  727,  726,  709,  910,  911,  701,
     1322      911,  698,  693,  691,  911,  912,  687,  912,  677,  673,
     1323      671,  912,  913,  913,  913,  913,  913,  913,  913,  913,
     1324      913,  913,  913,  913,  913,  914,  669,  914,  915,  915,
     1325      666,  915,  915,  915,  663,  915,  916,  916,  662,  916,
     1326      917,  661,  917,  660,  659,  658,  917,  918,  655,  918,
     1327      654,  652,  649,  918,  919,  648,  919,  647,  643,  616,
     1328
     1329      919,  920,  612,  920,  921,  610,  921,  608,  606,  604,
     1330      921,  922,  598,  922,  923,  592,  590,  923,  588,  923,
     1331      923,  923,  923,  923,  924,  924,  924,  924,  924,  924,
     1332      924,  924,  924,  924,  924,  924,  924,  925,  925,  925,
     1333      925,  925,  925,  925,  925,  925,  925,  925,  925,  925,
     1334      926,  586,  926,  584,  582,  580,  926,  927,  578,  927,
     1335      577,  576,  573,  927,  928,  570,  928,  563,  559,  556,
     1336      928,  929,  553,  929,  930,  548,  930,  543,  540,  517,
     1337      930,  931,  513,  931,  932,  511,  932,  509,  507,  505,
     1338      932,  933,  503,  933,  934,  502,  934,  501,  500,  489,
     1339
     1340      934,  935,  486,  935,  936,  484,  936,  483,  482,  480,
     1341      936,  937,  478,  937,  938,  475,  938,  473,  471,  469,
     1342      938,  939,  465,  939,  940,  448,  940,  446,  438,  436,
     1343      940,  941,  428,  941,  942,  426,  942,  424,  942,  398,
     1344      942,  943,  396,  943,  394,  943,  392,  943,  944,  944,
     1345      391,  944,  944,  944,  390,  944,  945,  377,  945,  367,
     1346      365,  364,  945,  946,  360,  946,  358,  356,  354,  946,
     1347      947,  350,  947,  348,  347,  346,  947,  948,  336,  948,
     1348      949,  321,  949,  298,  277,  275,  949,  950,  273,  950,
     1349      951,  272,  951,  271,  269,  268,  951,  952,  263,  952,
     1350
     1351      953,  259,  953,  258,  254,  251,  953,  954,  250,  954,
     1352      955,  239,  238,  955,  231,  955,  955,  955,  955,  955,
     1353      956,  956,  956,  956,  956,  956,  956,  956,  956,  956,
     1354      956,  956,  956,  957,  230,  957,  227,  217,  215,  957,
     1355      958,  214,  958,  959,  213,  959,  207,  206,  204,  959,
     1356      960,  199,  960,  961,  178,  961,  149,  147,  146,  961,
     1357      962,  140,  962,  963,  138,  963,  136,  128,  125,  963,
     1358      964,  124,  964,  965,  120,  965,  101,   98,   95,  965,
     1359      966,   93,  966,  967,   86,  967,   72,   70,   66,  967,
     1360      968,   36,  968,  969,   33,  969,   18,   11,    4,  969,
     1361
     1362      970,    3,  970,    0,    0,    0,  970,  971,    0,  971,
     1363      972,    0,  972,    0,    0,    0,  972,  973,    0,  973,
     1364      974,    0,  974,    0,  974,    0,  974,  975,    0,  975,
     1365        0,    0,    0,  975,  976,    0,  976,    0,    0,    0,
     1366      976,  977,    0,  977,  978,    0,  978,    0,    0,    0,
     1367      978,  979,    0,  979,  980,    0,  980,    0,    0,    0,
     1368      980,  981,    0,  981,  982,    0,  982,    0,    0,    0,
     1369      982,  983,    0,  983,  984,    0,  984,    0,    0,    0,
     1370      984,  985,    0,  985,  986,    0,  986,    0,    0,    0,
     1371      986,  987,    0,  987,  988,    0,    0,  988,    0,  988,
     1372
     1373      988,  988,  988,  988,  989,  989,  989,  989,  989,  989,
     1374      989,  989,  989,  989,  989,  989,  989,  990,    0,  990,
     1375        0,    0,    0,  990,  991,    0,  991,  992,    0,  992,
     1376        0,    0,    0,  992,  993,    0,  993,  994,    0,  994,
     1377        0,    0,    0,  994,  995,    0,  995,  996,    0,  996,
     1378        0,    0,    0,  996,  997,    0,  997,  998,    0,  998,
     1379        0,    0,    0,  998,  999,    0,  999, 1000,    0, 1000,
     1380        0,    0,    0, 1000, 1001,    0, 1001, 1002,    0, 1002,
     1381        0,    0,    0, 1002, 1003,    0, 1003, 1004,    0, 1004,
     1382        0,    0,    0, 1004, 1005,    0, 1005, 1006,    0, 1006,
     1383
     1384        0,    0,    0, 1006, 1007,    0, 1007,    0,    0,    0,
     1385     1007, 1008,    0, 1008, 1009,    0, 1009,    0,    0,    0,
     1386     1009, 1010,    0, 1010, 1011,    0, 1011,    0,    0,    0,
     1387     1011, 1012,    0, 1012, 1013,    0, 1013,    0,    0,    0,
     1388     1013, 1014,    0, 1014, 1015,    0, 1015, 1016,    0, 1016,
     1389     1017,    0,    0, 1017,    0, 1017, 1017, 1017, 1017, 1017,
     1390     1018,    0, 1018, 1019, 1019, 1019, 1019, 1019, 1019, 1019,
     1391     1019, 1019, 1019, 1019, 1019, 1019, 1020,    0, 1020,    0,
     1392        0,    0, 1020, 1021,    0, 1021, 1022,    0, 1022,    0,
     1393        0,    0, 1022, 1023,    0, 1023, 1024,    0, 1024, 1025,
     1394
     1395        0, 1025, 1026,    0,    0, 1026,    0, 1026, 1026, 1026,
     1396     1026, 1026, 1027,    0, 1027, 1028,    0, 1028, 1029,    0,
     1397     1029, 1030,    0, 1030, 1031,    0, 1031, 1032,    0, 1032,
     1398     1033,    0, 1033, 1034,    0, 1034,    0,    0,    0, 1034,
     1399     1035,    0, 1035, 1036,    0, 1036,    0,    0,    0, 1036,
     1400     1037,    0, 1037, 1038,    0, 1038, 1039,    0, 1039, 1040,
     1401        0, 1040, 1041,    0, 1041,    0,    0,    0, 1041, 1042,
     1402        0,    0, 1042,    0, 1042, 1042, 1042, 1042, 1042, 1043,
     1403        0, 1043, 1044,    0, 1044, 1045,    0, 1045, 1046,    0,
     1404     1046,    0,    0,    0, 1046, 1047,    0, 1047,    0,    0,
     1405
     1406        0, 1047, 1048,    0, 1048,    0,    0,    0, 1048, 1049,
     1407        0, 1049, 1050,    0, 1050,    0,    0,    0, 1050, 1051,
     1408        0, 1051,    0,    0,    0, 1051, 1052,    0, 1052,    0,
     1409        0,    0, 1052, 1053,    0, 1053,    0,    0,    0, 1053,
     1410     1054,    0, 1054,    0,    0,    0, 1054, 1055,    0, 1055,
     1411        0,    0,    0, 1055, 1056,    0, 1056,    0,    0,    0,
     1412     1056, 1057,    0, 1057,    0,    0,    0, 1057, 1058,    0,
     1413     1058,    0,    0,    0, 1058, 1059,    0, 1059,    0,    0,
     1414        0, 1059, 1060,    0, 1060,    0,    0,    0, 1060, 1061,
     1415        0, 1061,    0,    0,    0, 1061, 1062,    0, 1062,    0,
     1416
     1417        0,    0, 1062, 1063,    0, 1063,    0,    0,    0, 1063,
     1418     1064,    0, 1064,    0,    0,    0, 1064, 1065,    0, 1065,
     1419        0,    0,    0, 1065,  891,  891,  891,  891,  891,  891,
     1420      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1421      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1422      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1423      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1424      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1425      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1426      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     1427
     1428      891,  891,  891,  891,  891,  891,  891,  891,  891,  891
    13511429    } ;
    13521430
    13531431/* Table of booleans, true if rule could match eol. */
    1354 static yyconst flex_int32_t yy_rule_can_match_eol[172] =
     1432static yyconst flex_int32_t yy_rule_can_match_eol[182] =
    13551433    {   0,
    135614341, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    13591437    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    13601438    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1361     0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
     1439    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
     1440    1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    13621441    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    13631442    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1364     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
     1443    0, 0,     };
    13651444
    13661445static yy_state_type yy_last_accepting_state;
     
    13891468 * Author           : Peter A. Buhr
    13901469 * Created On       : Sat Sep 22 08:58:10 2001
    1391  * Last Modified By : Peter A. Buhr
    1392  * Last Modified On : Fri Jun 19 11:10:14 2015
    1393  * Update Count     : 392
     1470 * Last Modified By :
     1471 * Last Modified On : Sun Jul 31 07:19:36 2016
     1472 * Update Count     : 459
    13941473 */
    13951474#line 20 "lex.ll"
     
    14031482
    14041483#include "lex.h"
     1484#include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
    14051485#include "ParseNode.h"
    1406 #include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
     1486#include "TypedefTable.h"
    14071487
    14081488char *yyfilename;
     
    14201500#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    14211501#define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
    1422 #define IDENTIFIER_RETURN()     RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) )
     1502#define IDENTIFIER_RETURN()     RETURN_VAL( typedefTable.isKind( yytext ) )
    14231503#define ATTRIBUTE_RETURN()      RETURN_VAL( ATTR_IDENTIFIER )
    14241504
    14251505void rm_underscore() {
    1426         // remove underscores in numeric constant
    1427         int j = 0;
     1506        // Remove underscores in numeric constant by copying the non-underscore characters to the front of the string.
     1507        yyleng = 0;
    14281508        for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
    14291509                if ( yytext[i] != '_' ) {
    1430                         yytext[j] = yytext[i];
    1431                         j += 1;
     1510                        yytext[yyleng] = yytext[i];
     1511                        yyleng += 1;
    14321512                } // if
    14331513        } // for
    1434         yyleng = j;
    14351514        yytext[yyleng] = '\0';
    14361515}
     
    14401519// attribute identifier, GCC: $ in identifier
    14411520// numeric constants, CFA: '_' in constant
     1521// GCC: D (double), DL (long double) and iI (imaginary) suffixes
     1522//floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI]))
    14421523// character escape sequence, GCC: \e => esc character
    14431524// ' stop highlighting
    14441525// display/white-space characters
    1445 // operators
    1446 
    1447 
    1448 
    1449 
    1450 #line 1451 "Parser/lex.cc"
     1526// overloadable operators
     1527// op_binary_not_over "?"|"->"|"."|"&&"|"||"|"@="
     1528// operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
     1529
     1530
     1531
     1532
     1533#line 1534 "Parser/lex.cc"
    14511534
    14521535#define INITIAL 0
     
    16401723        register int yy_act;
    16411724   
    1642 #line 136 "lex.ll"
     1725#line 138 "lex.ll"
    16431726
    16441727                                   /* line directives */
    1645 #line 1646 "Parser/lex.cc"
     1728#line 1729 "Parser/lex.cc"
    16461729
    16471730        if ( !(yy_init) )
     
    16971780                                {
    16981781                                yy_current_state = (int) yy_def[yy_current_state];
    1699                                 if ( yy_current_state >= 826 )
     1782                                if ( yy_current_state >= 892 )
    17001783                                        yy_c = yy_meta[(unsigned int) yy_c];
    17011784                                }
     
    17031786                        ++yy_cp;
    17041787                        }
    1705                 while ( yy_base[yy_current_state] != 2568 );
     1788                while ( yy_base[yy_current_state] != 2825 );
    17061789
    17071790yy_find_action:
     
    17401823/* rule 1 can match eol */
    17411824YY_RULE_SETUP
    1742 #line 138 "lex.ll"
     1825#line 140 "lex.ll"
    17431826{
    17441827        /* " stop highlighting */
     
    17671850/* rule 2 can match eol */
    17681851YY_RULE_SETUP
    1769 #line 161 "lex.ll"
     1852#line 163 "lex.ll"
    17701853;
    17711854        YY_BREAK
     
    17731856case 3:
    17741857YY_RULE_SETUP
    1775 #line 164 "lex.ll"
     1858#line 166 "lex.ll"
    17761859{ BEGIN COMMENT; }
    17771860        YY_BREAK
     
    17791862/* rule 4 can match eol */
    17801863YY_RULE_SETUP
    1781 #line 165 "lex.ll"
     1864#line 167 "lex.ll"
    17821865;
    17831866        YY_BREAK
    17841867case 5:
    17851868YY_RULE_SETUP
    1786 #line 166 "lex.ll"
     1869#line 168 "lex.ll"
    17871870{ BEGIN 0; }
    17881871        YY_BREAK
     
    17911874/* rule 6 can match eol */
    17921875YY_RULE_SETUP
    1793 #line 169 "lex.ll"
     1876#line 171 "lex.ll"
    17941877;
    17951878        YY_BREAK
     
    17971880case 7:
    17981881YY_RULE_SETUP
    1799 #line 172 "lex.ll"
     1882#line 174 "lex.ll"
    18001883{ WHITE_RETURN(' '); }
    18011884        YY_BREAK
    18021885case 8:
    18031886YY_RULE_SETUP
    1804 #line 173 "lex.ll"
     1887#line 175 "lex.ll"
    18051888{ WHITE_RETURN(' '); }
    18061889        YY_BREAK
     
    18081891/* rule 9 can match eol */
    18091892YY_RULE_SETUP
    1810 #line 174 "lex.ll"
     1893#line 176 "lex.ll"
    18111894{ NEWLINE_RETURN(); }
    18121895        YY_BREAK
     
    18141897case 10:
    18151898YY_RULE_SETUP
    1816 #line 177 "lex.ll"
     1899#line 179 "lex.ll"
    18171900{ KEYWORD_RETURN(ALIGNAS); }                    // C11
    18181901        YY_BREAK
    18191902case 11:
    18201903YY_RULE_SETUP
    1821 #line 178 "lex.ll"
     1904#line 180 "lex.ll"
    18221905{ KEYWORD_RETURN(ALIGNOF); }                    // C11
    18231906        YY_BREAK
    18241907case 12:
    18251908YY_RULE_SETUP
    1826 #line 179 "lex.ll"
     1909#line 181 "lex.ll"
    18271910{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    18281911        YY_BREAK
    18291912case 13:
    18301913YY_RULE_SETUP
    1831 #line 180 "lex.ll"
     1914#line 182 "lex.ll"
    18321915{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    18331916        YY_BREAK
    18341917case 14:
    18351918YY_RULE_SETUP
    1836 #line 181 "lex.ll"
     1919#line 183 "lex.ll"
    18371920{ KEYWORD_RETURN(ASM); }
    18381921        YY_BREAK
    18391922case 15:
    18401923YY_RULE_SETUP
    1841 #line 182 "lex.ll"
     1924#line 184 "lex.ll"
    18421925{ KEYWORD_RETURN(ASM); }                                // GCC
    18431926        YY_BREAK
    18441927case 16:
    18451928YY_RULE_SETUP
    1846 #line 183 "lex.ll"
     1929#line 185 "lex.ll"
    18471930{ KEYWORD_RETURN(ASM); }                                // GCC
    18481931        YY_BREAK
    18491932case 17:
    18501933YY_RULE_SETUP
    1851 #line 184 "lex.ll"
     1934#line 186 "lex.ll"
     1935{ KEYWORD_RETURN(AT); }                                 // CFA
     1936        YY_BREAK
     1937case 18:
     1938YY_RULE_SETUP
     1939#line 187 "lex.ll"
    18521940{ KEYWORD_RETURN(ATOMIC); }                             // C11
    18531941        YY_BREAK
    1854 case 18:
    1855 YY_RULE_SETUP
    1856 #line 185 "lex.ll"
     1942case 19:
     1943YY_RULE_SETUP
     1944#line 188 "lex.ll"
    18571945{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    18581946        YY_BREAK
    1859 case 19:
    1860 YY_RULE_SETUP
    1861 #line 186 "lex.ll"
     1947case 20:
     1948YY_RULE_SETUP
     1949#line 189 "lex.ll"
    18621950{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    18631951        YY_BREAK
    1864 case 20:
    1865 YY_RULE_SETUP
    1866 #line 187 "lex.ll"
     1952case 21:
     1953YY_RULE_SETUP
     1954#line 190 "lex.ll"
    18671955{ KEYWORD_RETURN(AUTO); }
    18681956        YY_BREAK
    1869 case 21:
    1870 YY_RULE_SETUP
    1871 #line 188 "lex.ll"
     1957case 22:
     1958YY_RULE_SETUP
     1959#line 191 "lex.ll"
    18721960{ KEYWORD_RETURN(BOOL); }                               // C99
    18731961        YY_BREAK
    1874 case 22:
    1875 YY_RULE_SETUP
    1876 #line 189 "lex.ll"
     1962case 23:
     1963YY_RULE_SETUP
     1964#line 192 "lex.ll"
    18771965{ KEYWORD_RETURN(BREAK); }
    18781966        YY_BREAK
    1879 case 23:
    1880 YY_RULE_SETUP
    1881 #line 190 "lex.ll"
     1967case 24:
     1968YY_RULE_SETUP
     1969#line 193 "lex.ll"
    18821970{ KEYWORD_RETURN(CASE); }
    18831971        YY_BREAK
    1884 case 24:
    1885 YY_RULE_SETUP
    1886 #line 191 "lex.ll"
     1972case 25:
     1973YY_RULE_SETUP
     1974#line 194 "lex.ll"
    18871975{ KEYWORD_RETURN(CATCH); }                              // CFA
    18881976        YY_BREAK
    1889 case 25:
    1890 YY_RULE_SETUP
    1891 #line 192 "lex.ll"
     1977case 26:
     1978YY_RULE_SETUP
     1979#line 195 "lex.ll"
     1980{ KEYWORD_RETURN(CATCHRESUME); }                // CFA
     1981        YY_BREAK
     1982case 27:
     1983YY_RULE_SETUP
     1984#line 196 "lex.ll"
    18921985{ KEYWORD_RETURN(CHAR); }
    18931986        YY_BREAK
    1894 case 26:
    1895 YY_RULE_SETUP
    1896 #line 193 "lex.ll"
     1987case 28:
     1988YY_RULE_SETUP
     1989#line 197 "lex.ll"
    18971990{ KEYWORD_RETURN(CHOOSE); }                             // CFA
    18981991        YY_BREAK
    1899 case 27:
    1900 YY_RULE_SETUP
    1901 #line 194 "lex.ll"
     1992case 29:
     1993YY_RULE_SETUP
     1994#line 198 "lex.ll"
    19021995{ KEYWORD_RETURN(COMPLEX); }                    // C99
    19031996        YY_BREAK
    1904 case 28:
    1905 YY_RULE_SETUP
    1906 #line 195 "lex.ll"
     1997case 30:
     1998YY_RULE_SETUP
     1999#line 199 "lex.ll"
    19072000{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    19082001        YY_BREAK
    1909 case 29:
    1910 YY_RULE_SETUP
    1911 #line 196 "lex.ll"
     2002case 31:
     2003YY_RULE_SETUP
     2004#line 200 "lex.ll"
    19122005{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    19132006        YY_BREAK
    1914 case 30:
    1915 YY_RULE_SETUP
    1916 #line 197 "lex.ll"
     2007case 32:
     2008YY_RULE_SETUP
     2009#line 201 "lex.ll"
    19172010{ KEYWORD_RETURN(CONST); }
    19182011        YY_BREAK
    1919 case 31:
    1920 YY_RULE_SETUP
    1921 #line 198 "lex.ll"
     2012case 33:
     2013YY_RULE_SETUP
     2014#line 202 "lex.ll"
    19222015{ KEYWORD_RETURN(CONST); }                              // GCC
    19232016        YY_BREAK
    1924 case 32:
    1925 YY_RULE_SETUP
    1926 #line 199 "lex.ll"
     2017case 34:
     2018YY_RULE_SETUP
     2019#line 203 "lex.ll"
    19272020{ KEYWORD_RETURN(CONST); }                              // GCC
    19282021        YY_BREAK
    1929 case 33:
    1930 YY_RULE_SETUP
    1931 #line 200 "lex.ll"
    1932 { KEYWORD_RETURN(CONTEXT); }                    // CFA
    1933         YY_BREAK
    1934 case 34:
    1935 YY_RULE_SETUP
    1936 #line 201 "lex.ll"
     2022case 35:
     2023YY_RULE_SETUP
     2024#line 204 "lex.ll"
    19372025{ KEYWORD_RETURN(CONTINUE); }
    19382026        YY_BREAK
    1939 case 35:
    1940 YY_RULE_SETUP
    1941 #line 202 "lex.ll"
     2027case 36:
     2028YY_RULE_SETUP
     2029#line 205 "lex.ll"
    19422030{ KEYWORD_RETURN(DEFAULT); }
    19432031        YY_BREAK
    1944 case 36:
    1945 YY_RULE_SETUP
    1946 #line 203 "lex.ll"
     2032case 37:
     2033YY_RULE_SETUP
     2034#line 206 "lex.ll"
     2035{ KEYWORD_RETURN(DISABLE); }                    // CFA
     2036        YY_BREAK
     2037case 38:
     2038YY_RULE_SETUP
     2039#line 207 "lex.ll"
    19472040{ KEYWORD_RETURN(DO); }
    19482041        YY_BREAK
    1949 case 37:
    1950 YY_RULE_SETUP
    1951 #line 204 "lex.ll"
     2042case 39:
     2043YY_RULE_SETUP
     2044#line 208 "lex.ll"
    19522045{ KEYWORD_RETURN(DOUBLE); }
    19532046        YY_BREAK
    1954 case 38:
    1955 YY_RULE_SETUP
    1956 #line 205 "lex.ll"
     2047case 40:
     2048YY_RULE_SETUP
     2049#line 209 "lex.ll"
    19572050{ KEYWORD_RETURN(DTYPE); }                              // CFA
    19582051        YY_BREAK
    1959 case 39:
    1960 YY_RULE_SETUP
    1961 #line 206 "lex.ll"
     2052case 41:
     2053YY_RULE_SETUP
     2054#line 210 "lex.ll"
    19622055{ KEYWORD_RETURN(ELSE); }
    19632056        YY_BREAK
    1964 case 40:
    1965 YY_RULE_SETUP
    1966 #line 207 "lex.ll"
     2057case 42:
     2058YY_RULE_SETUP
     2059#line 211 "lex.ll"
     2060{ KEYWORD_RETURN(ENABLE); }                             // CFA
     2061        YY_BREAK
     2062case 43:
     2063YY_RULE_SETUP
     2064#line 212 "lex.ll"
    19672065{ KEYWORD_RETURN(ENUM); }
    19682066        YY_BREAK
    1969 case 41:
    1970 YY_RULE_SETUP
    1971 #line 208 "lex.ll"
     2067case 44:
     2068YY_RULE_SETUP
     2069#line 213 "lex.ll"
    19722070{ KEYWORD_RETURN(EXTENSION); }                  // GCC
    19732071        YY_BREAK
    1974 case 42:
    1975 YY_RULE_SETUP
    1976 #line 209 "lex.ll"
     2072case 45:
     2073YY_RULE_SETUP
     2074#line 214 "lex.ll"
    19772075{ KEYWORD_RETURN(EXTERN); }
    19782076        YY_BREAK
    1979 case 43:
    1980 YY_RULE_SETUP
    1981 #line 210 "lex.ll"
     2077case 46:
     2078YY_RULE_SETUP
     2079#line 215 "lex.ll"
    19822080{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
    19832081        YY_BREAK
    1984 case 44:
    1985 YY_RULE_SETUP
    1986 #line 211 "lex.ll"
     2082case 47:
     2083YY_RULE_SETUP
     2084#line 216 "lex.ll"
     2085{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
     2086        YY_BREAK
     2087case 48:
     2088YY_RULE_SETUP
     2089#line 217 "lex.ll"
    19872090{ KEYWORD_RETURN(FINALLY); }                    // CFA
    19882091        YY_BREAK
    1989 case 45:
    1990 YY_RULE_SETUP
    1991 #line 212 "lex.ll"
     2092case 49:
     2093YY_RULE_SETUP
     2094#line 218 "lex.ll"
    19922095{ KEYWORD_RETURN(FLOAT); }
    19932096        YY_BREAK
    1994 case 46:
    1995 YY_RULE_SETUP
    1996 #line 213 "lex.ll"
     2097case 50:
     2098YY_RULE_SETUP
     2099#line 219 "lex.ll"
    19972100{ KEYWORD_RETURN(FLOAT); }                              // GCC
    19982101        YY_BREAK
    1999 case 47:
    2000 YY_RULE_SETUP
    2001 #line 214 "lex.ll"
     2102case 51:
     2103YY_RULE_SETUP
     2104#line 220 "lex.ll"
    20022105{ KEYWORD_RETURN(FOR); }
    20032106        YY_BREAK
    2004 case 48:
    2005 YY_RULE_SETUP
    2006 #line 215 "lex.ll"
     2107case 52:
     2108YY_RULE_SETUP
     2109#line 221 "lex.ll"
    20072110{ KEYWORD_RETURN(FORALL); }                             // CFA
    20082111        YY_BREAK
    2009 case 49:
    2010 YY_RULE_SETUP
    2011 #line 216 "lex.ll"
     2112case 53:
     2113YY_RULE_SETUP
     2114#line 222 "lex.ll"
    20122115{ KEYWORD_RETURN(FORTRAN); }
    20132116        YY_BREAK
    2014 case 50:
    2015 YY_RULE_SETUP
    2016 #line 217 "lex.ll"
     2117case 54:
     2118YY_RULE_SETUP
     2119#line 223 "lex.ll"
    20172120{ KEYWORD_RETURN(FTYPE); }                              // CFA
    20182121        YY_BREAK
    2019 case 51:
    2020 YY_RULE_SETUP
    2021 #line 218 "lex.ll"
     2122case 55:
     2123YY_RULE_SETUP
     2124#line 224 "lex.ll"
    20222125{ KEYWORD_RETURN(GENERIC); }                    // C11
    20232126        YY_BREAK
    2024 case 52:
    2025 YY_RULE_SETUP
    2026 #line 219 "lex.ll"
     2127case 56:
     2128YY_RULE_SETUP
     2129#line 225 "lex.ll"
    20272130{ KEYWORD_RETURN(GOTO); }
    20282131        YY_BREAK
    2029 case 53:
    2030 YY_RULE_SETUP
    2031 #line 220 "lex.ll"
     2132case 57:
     2133YY_RULE_SETUP
     2134#line 226 "lex.ll"
    20322135{ KEYWORD_RETURN(IF); }
    20332136        YY_BREAK
    2034 case 54:
    2035 YY_RULE_SETUP
    2036 #line 221 "lex.ll"
     2137case 58:
     2138YY_RULE_SETUP
     2139#line 227 "lex.ll"
    20372140{ KEYWORD_RETURN(IMAGINARY); }                  // C99
    20382141        YY_BREAK
    2039 case 55:
    2040 YY_RULE_SETUP
    2041 #line 222 "lex.ll"
     2142case 59:
     2143YY_RULE_SETUP
     2144#line 228 "lex.ll"
    20422145{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    20432146        YY_BREAK
    2044 case 56:
    2045 YY_RULE_SETUP
    2046 #line 223 "lex.ll"
     2147case 60:
     2148YY_RULE_SETUP
     2149#line 229 "lex.ll"
    20472150{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    20482151        YY_BREAK
    2049 case 57:
    2050 YY_RULE_SETUP
    2051 #line 224 "lex.ll"
     2152case 61:
     2153YY_RULE_SETUP
     2154#line 230 "lex.ll"
    20522155{ KEYWORD_RETURN(INLINE); }                             // C99
    20532156        YY_BREAK
    2054 case 58:
    2055 YY_RULE_SETUP
    2056 #line 225 "lex.ll"
     2157case 62:
     2158YY_RULE_SETUP
     2159#line 231 "lex.ll"
    20572160{ KEYWORD_RETURN(INLINE); }                             // GCC
    20582161        YY_BREAK
    2059 case 59:
    2060 YY_RULE_SETUP
    2061 #line 226 "lex.ll"
     2162case 63:
     2163YY_RULE_SETUP
     2164#line 232 "lex.ll"
    20622165{ KEYWORD_RETURN(INLINE); }                             // GCC
    20632166        YY_BREAK
    2064 case 60:
    2065 YY_RULE_SETUP
    2066 #line 227 "lex.ll"
     2167case 64:
     2168YY_RULE_SETUP
     2169#line 233 "lex.ll"
    20672170{ KEYWORD_RETURN(INT); }
    20682171        YY_BREAK
    2069 case 61:
    2070 YY_RULE_SETUP
    2071 #line 228 "lex.ll"
     2172case 65:
     2173YY_RULE_SETUP
     2174#line 234 "lex.ll"
    20722175{ KEYWORD_RETURN(INT); }                                // GCC
    20732176        YY_BREAK
    2074 case 62:
    2075 YY_RULE_SETUP
    2076 #line 229 "lex.ll"
     2177case 66:
     2178YY_RULE_SETUP
     2179#line 235 "lex.ll"
    20772180{ KEYWORD_RETURN(LABEL); }                              // GCC
    20782181        YY_BREAK
    2079 case 63:
    2080 YY_RULE_SETUP
    2081 #line 230 "lex.ll"
     2182case 67:
     2183YY_RULE_SETUP
     2184#line 236 "lex.ll"
    20822185{ KEYWORD_RETURN(LONG); }
    20832186        YY_BREAK
    2084 case 64:
    2085 YY_RULE_SETUP
    2086 #line 231 "lex.ll"
     2187case 68:
     2188YY_RULE_SETUP
     2189#line 237 "lex.ll"
    20872190{ KEYWORD_RETURN(LVALUE); }                             // CFA
    20882191        YY_BREAK
    2089 case 65:
    2090 YY_RULE_SETUP
    2091 #line 232 "lex.ll"
     2192case 69:
     2193YY_RULE_SETUP
     2194#line 238 "lex.ll"
    20922195{ KEYWORD_RETURN(NORETURN); }                   // C11
    20932196        YY_BREAK
    2094 case 66:
    2095 YY_RULE_SETUP
    2096 #line 233 "lex.ll"
     2197case 70:
     2198YY_RULE_SETUP
     2199#line 239 "lex.ll"
     2200{ KEYWORD_RETURN(OFFSETOF); }           // GCC
     2201        YY_BREAK
     2202case 71:
     2203YY_RULE_SETUP
     2204#line 240 "lex.ll"
     2205{ KEYWORD_RETURN(OTYPE); }                              // CFA
     2206        YY_BREAK
     2207case 72:
     2208YY_RULE_SETUP
     2209#line 241 "lex.ll"
    20972210{ KEYWORD_RETURN(REGISTER); }
    20982211        YY_BREAK
    2099 case 67:
    2100 YY_RULE_SETUP
    2101 #line 234 "lex.ll"
     2212case 73:
     2213YY_RULE_SETUP
     2214#line 242 "lex.ll"
    21022215{ KEYWORD_RETURN(RESTRICT); }                   // C99
    21032216        YY_BREAK
    2104 case 68:
    2105 YY_RULE_SETUP
    2106 #line 235 "lex.ll"
     2217case 74:
     2218YY_RULE_SETUP
     2219#line 243 "lex.ll"
    21072220{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    21082221        YY_BREAK
    2109 case 69:
    2110 YY_RULE_SETUP
    2111 #line 236 "lex.ll"
     2222case 75:
     2223YY_RULE_SETUP
     2224#line 244 "lex.ll"
    21122225{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    21132226        YY_BREAK
    2114 case 70:
    2115 YY_RULE_SETUP
    2116 #line 237 "lex.ll"
     2227case 76:
     2228YY_RULE_SETUP
     2229#line 245 "lex.ll"
    21172230{ KEYWORD_RETURN(RETURN); }
    21182231        YY_BREAK
    2119 case 71:
    2120 YY_RULE_SETUP
    2121 #line 238 "lex.ll"
     2232case 77:
     2233YY_RULE_SETUP
     2234#line 246 "lex.ll"
    21222235{ KEYWORD_RETURN(SHORT); }
    21232236        YY_BREAK
    2124 case 72:
    2125 YY_RULE_SETUP
    2126 #line 239 "lex.ll"
     2237case 78:
     2238YY_RULE_SETUP
     2239#line 247 "lex.ll"
    21272240{ KEYWORD_RETURN(SIGNED); }
    21282241        YY_BREAK
    2129 case 73:
    2130 YY_RULE_SETUP
    2131 #line 240 "lex.ll"
     2242case 79:
     2243YY_RULE_SETUP
     2244#line 248 "lex.ll"
    21322245{ KEYWORD_RETURN(SIGNED); }                             // GCC
    21332246        YY_BREAK
    2134 case 74:
    2135 YY_RULE_SETUP
    2136 #line 241 "lex.ll"
     2247case 80:
     2248YY_RULE_SETUP
     2249#line 249 "lex.ll"
    21372250{ KEYWORD_RETURN(SIGNED); }                             // GCC
    21382251        YY_BREAK
    2139 case 75:
    2140 YY_RULE_SETUP
    2141 #line 242 "lex.ll"
     2252case 81:
     2253YY_RULE_SETUP
     2254#line 250 "lex.ll"
    21422255{ KEYWORD_RETURN(SIZEOF); }
    21432256        YY_BREAK
    2144 case 76:
    2145 YY_RULE_SETUP
    2146 #line 243 "lex.ll"
     2257case 82:
     2258YY_RULE_SETUP
     2259#line 251 "lex.ll"
    21472260{ KEYWORD_RETURN(STATIC); }
    21482261        YY_BREAK
    2149 case 77:
    2150 YY_RULE_SETUP
    2151 #line 244 "lex.ll"
     2262case 83:
     2263YY_RULE_SETUP
     2264#line 252 "lex.ll"
    21522265{ KEYWORD_RETURN(STATICASSERT); }               // C11
    21532266        YY_BREAK
    2154 case 78:
    2155 YY_RULE_SETUP
    2156 #line 245 "lex.ll"
     2267case 84:
     2268YY_RULE_SETUP
     2269#line 253 "lex.ll"
    21572270{ KEYWORD_RETURN(STRUCT); }
    21582271        YY_BREAK
    2159 case 79:
    2160 YY_RULE_SETUP
    2161 #line 246 "lex.ll"
     2272case 85:
     2273YY_RULE_SETUP
     2274#line 254 "lex.ll"
    21622275{ KEYWORD_RETURN(SWITCH); }
    21632276        YY_BREAK
    2164 case 80:
    2165 YY_RULE_SETUP
    2166 #line 247 "lex.ll"
     2277case 86:
     2278YY_RULE_SETUP
     2279#line 255 "lex.ll"
    21672280{ KEYWORD_RETURN(THREADLOCAL); }                // C11
    21682281        YY_BREAK
    2169 case 81:
    2170 YY_RULE_SETUP
    2171 #line 248 "lex.ll"
     2282case 87:
     2283YY_RULE_SETUP
     2284#line 256 "lex.ll"
    21722285{ KEYWORD_RETURN(THROW); }                              // CFA
    21732286        YY_BREAK
    2174 case 82:
    2175 YY_RULE_SETUP
    2176 #line 249 "lex.ll"
     2287case 88:
     2288YY_RULE_SETUP
     2289#line 257 "lex.ll"
     2290{ KEYWORD_RETURN(THROWRESUME); }                // CFA
     2291        YY_BREAK
     2292case 89:
     2293YY_RULE_SETUP
     2294#line 258 "lex.ll"
     2295{ KEYWORD_RETURN(TRAIT); }                              // CFA
     2296        YY_BREAK
     2297case 90:
     2298YY_RULE_SETUP
     2299#line 259 "lex.ll"
    21772300{ KEYWORD_RETURN(TRY); }                                // CFA
    21782301        YY_BREAK
    2179 case 83:
    2180 YY_RULE_SETUP
    2181 #line 250 "lex.ll"
    2182 { KEYWORD_RETURN(TYPE); }                               // CFA
    2183         YY_BREAK
    2184 case 84:
    2185 YY_RULE_SETUP
    2186 #line 251 "lex.ll"
     2302case 91:
     2303YY_RULE_SETUP
     2304#line 260 "lex.ll"
    21872305{ KEYWORD_RETURN(TYPEDEF); }
    21882306        YY_BREAK
    2189 case 85:
    2190 YY_RULE_SETUP
    2191 #line 252 "lex.ll"
     2307case 92:
     2308YY_RULE_SETUP
     2309#line 261 "lex.ll"
    21922310{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    21932311        YY_BREAK
    2194 case 86:
    2195 YY_RULE_SETUP
    2196 #line 253 "lex.ll"
     2312case 93:
     2313YY_RULE_SETUP
     2314#line 262 "lex.ll"
    21972315{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    21982316        YY_BREAK
    2199 case 87:
    2200 YY_RULE_SETUP
    2201 #line 254 "lex.ll"
     2317case 94:
     2318YY_RULE_SETUP
     2319#line 263 "lex.ll"
    22022320{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    22032321        YY_BREAK
    2204 case 88:
    2205 YY_RULE_SETUP
    2206 #line 255 "lex.ll"
     2322case 95:
     2323YY_RULE_SETUP
     2324#line 264 "lex.ll"
    22072325{ KEYWORD_RETURN(UNION); }
    22082326        YY_BREAK
    2209 case 89:
    2210 YY_RULE_SETUP
    2211 #line 256 "lex.ll"
     2327case 96:
     2328YY_RULE_SETUP
     2329#line 265 "lex.ll"
    22122330{ KEYWORD_RETURN(UNSIGNED); }
    22132331        YY_BREAK
    2214 case 90:
    2215 YY_RULE_SETUP
    2216 #line 257 "lex.ll"
     2332case 97:
     2333YY_RULE_SETUP
     2334#line 266 "lex.ll"
     2335{ KEYWORD_RETURN(VALIST); }                     // GCC
     2336        YY_BREAK
     2337case 98:
     2338YY_RULE_SETUP
     2339#line 267 "lex.ll"
    22172340{ KEYWORD_RETURN(VOID); }
    22182341        YY_BREAK
    2219 case 91:
    2220 YY_RULE_SETUP
    2221 #line 258 "lex.ll"
     2342case 99:
     2343YY_RULE_SETUP
     2344#line 268 "lex.ll"
    22222345{ KEYWORD_RETURN(VOLATILE); }
    22232346        YY_BREAK
    2224 case 92:
    2225 YY_RULE_SETUP
    2226 #line 259 "lex.ll"
     2347case 100:
     2348YY_RULE_SETUP
     2349#line 269 "lex.ll"
    22272350{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    22282351        YY_BREAK
    2229 case 93:
    2230 YY_RULE_SETUP
    2231 #line 260 "lex.ll"
     2352case 101:
     2353YY_RULE_SETUP
     2354#line 270 "lex.ll"
    22322355{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    22332356        YY_BREAK
    2234 case 94:
    2235 YY_RULE_SETUP
    2236 #line 261 "lex.ll"
     2357case 102:
     2358YY_RULE_SETUP
     2359#line 271 "lex.ll"
    22372360{ KEYWORD_RETURN(WHILE); }
    22382361        YY_BREAK
    22392362/* identifier */
    2240 case 95:
    2241 YY_RULE_SETUP
    2242 #line 264 "lex.ll"
     2363case 103:
     2364YY_RULE_SETUP
     2365#line 274 "lex.ll"
    22432366{ IDENTIFIER_RETURN(); }
    22442367        YY_BREAK
    2245 case 96:
    2246 YY_RULE_SETUP
    2247 #line 265 "lex.ll"
     2368case 104:
     2369YY_RULE_SETUP
     2370#line 275 "lex.ll"
    22482371{ ATTRIBUTE_RETURN(); }
    22492372        YY_BREAK
    2250 case 97:
    2251 YY_RULE_SETUP
    2252 #line 266 "lex.ll"
     2373case 105:
     2374YY_RULE_SETUP
     2375#line 276 "lex.ll"
    22532376{ BEGIN BKQUOTE; }
    22542377        YY_BREAK
    2255 case 98:
    2256 YY_RULE_SETUP
    2257 #line 267 "lex.ll"
     2378case 106:
     2379YY_RULE_SETUP
     2380#line 277 "lex.ll"
    22582381{ IDENTIFIER_RETURN(); }
    22592382        YY_BREAK
    2260 case 99:
    2261 YY_RULE_SETUP
    2262 #line 268 "lex.ll"
     2383case 107:
     2384YY_RULE_SETUP
     2385#line 278 "lex.ll"
    22632386{ BEGIN 0; }
    22642387        YY_BREAK
    22652388/* numeric constants */
    2266 case 100:
    2267 YY_RULE_SETUP
    2268 #line 271 "lex.ll"
     2389case 108:
     2390YY_RULE_SETUP
     2391#line 281 "lex.ll"
    22692392{ NUMERIC_RETURN(ZERO); }                               // CFA
    22702393        YY_BREAK
    2271 case 101:
    2272 YY_RULE_SETUP
    2273 #line 272 "lex.ll"
     2394case 109:
     2395YY_RULE_SETUP
     2396#line 282 "lex.ll"
    22742397{ NUMERIC_RETURN(ONE); }                                // CFA
    22752398        YY_BREAK
    2276 case 102:
    2277 YY_RULE_SETUP
    2278 #line 273 "lex.ll"
     2399case 110:
     2400YY_RULE_SETUP
     2401#line 283 "lex.ll"
    22792402{ NUMERIC_RETURN(INTEGERconstant); }
    22802403        YY_BREAK
    2281 case 103:
    2282 YY_RULE_SETUP
    2283 #line 274 "lex.ll"
     2404case 111:
     2405YY_RULE_SETUP
     2406#line 284 "lex.ll"
    22842407{ NUMERIC_RETURN(INTEGERconstant); }
    22852408        YY_BREAK
    2286 case 104:
    2287 YY_RULE_SETUP
    2288 #line 275 "lex.ll"
     2409case 112:
     2410YY_RULE_SETUP
     2411#line 285 "lex.ll"
    22892412{ NUMERIC_RETURN(INTEGERconstant); }
    22902413        YY_BREAK
    2291 case 105:
    2292 YY_RULE_SETUP
    2293 #line 276 "lex.ll"
     2414case 113:
     2415YY_RULE_SETUP
     2416#line 286 "lex.ll"
    22942417{ NUMERIC_RETURN(FLOATINGconstant); }
    22952418        YY_BREAK
    2296 case 106:
    2297 YY_RULE_SETUP
    2298 #line 277 "lex.ll"
     2419case 114:
     2420YY_RULE_SETUP
     2421#line 287 "lex.ll"
    22992422{ NUMERIC_RETURN(FLOATINGconstant); }
    23002423        YY_BREAK
    23012424/* character constant, allows empty value */
    2302 case 107:
    2303 YY_RULE_SETUP
    2304 #line 280 "lex.ll"
     2425case 115:
     2426YY_RULE_SETUP
     2427#line 290 "lex.ll"
    23052428{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    23062429        YY_BREAK
    2307 case 108:
    2308 YY_RULE_SETUP
    2309 #line 281 "lex.ll"
     2430case 116:
     2431YY_RULE_SETUP
     2432#line 291 "lex.ll"
    23102433{ *strtext += std::string( yytext ); }
    23112434        YY_BREAK
    2312 case 109:
    2313 /* rule 109 can match eol */
    2314 YY_RULE_SETUP
    2315 #line 282 "lex.ll"
     2435case 117:
     2436/* rule 117 can match eol */
     2437YY_RULE_SETUP
     2438#line 292 "lex.ll"
    23162439{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
    23172440        YY_BREAK
    23182441/* ' stop highlighting */
    23192442/* string constant */
    2320 case 110:
    2321 YY_RULE_SETUP
    2322 #line 286 "lex.ll"
     2443case 118:
     2444YY_RULE_SETUP
     2445#line 296 "lex.ll"
    23232446{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    23242447        YY_BREAK
    2325 case 111:
    2326 YY_RULE_SETUP
    2327 #line 287 "lex.ll"
     2448case 119:
     2449YY_RULE_SETUP
     2450#line 297 "lex.ll"
    23282451{ *strtext += std::string( yytext ); }
    23292452        YY_BREAK
    2330 case 112:
    2331 /* rule 112 can match eol */
    2332 YY_RULE_SETUP
    2333 #line 288 "lex.ll"
     2453case 120:
     2454/* rule 120 can match eol */
     2455YY_RULE_SETUP
     2456#line 298 "lex.ll"
    23342457{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    23352458        YY_BREAK
    23362459/* " stop highlighting */
    23372460/* common character/string constant */
    2338 case 113:
    2339 YY_RULE_SETUP
    2340 #line 292 "lex.ll"
     2461case 121:
     2462YY_RULE_SETUP
     2463#line 302 "lex.ll"
    23412464{ rm_underscore(); *strtext += std::string( yytext ); }
    23422465        YY_BREAK
    2343 case 114:
    2344 /* rule 114 can match eol */
    2345 YY_RULE_SETUP
    2346 #line 293 "lex.ll"
     2466case 122:
     2467/* rule 122 can match eol */
     2468YY_RULE_SETUP
     2469#line 303 "lex.ll"
    23472470{}                                              // continuation (ALSO HANDLED BY CPP)
    23482471        YY_BREAK
    2349 case 115:
    2350 YY_RULE_SETUP
    2351 #line 294 "lex.ll"
     2472case 123:
     2473YY_RULE_SETUP
     2474#line 304 "lex.ll"
    23522475{ *strtext += std::string( yytext ); } // unknown escape character
    23532476        YY_BREAK
    23542477/* punctuation */
    2355 case 116:
    2356 YY_RULE_SETUP
    2357 #line 297 "lex.ll"
     2478case 124:
     2479YY_RULE_SETUP
     2480#line 307 "lex.ll"
    23582481{ ASCIIOP_RETURN(); }
    23592482        YY_BREAK
    2360 case 117:
    2361 YY_RULE_SETUP
    2362 #line 298 "lex.ll"
     2483case 125:
     2484YY_RULE_SETUP
     2485#line 308 "lex.ll"
    23632486{ ASCIIOP_RETURN(); }
    23642487        YY_BREAK
    2365 case 118:
    2366 YY_RULE_SETUP
    2367 #line 299 "lex.ll"
     2488case 126:
     2489YY_RULE_SETUP
     2490#line 309 "lex.ll"
    23682491{ ASCIIOP_RETURN(); }
    23692492        YY_BREAK
    2370 case 119:
    2371 YY_RULE_SETUP
    2372 #line 300 "lex.ll"
     2493case 127:
     2494YY_RULE_SETUP
     2495#line 310 "lex.ll"
    23732496{ ASCIIOP_RETURN(); }
    23742497        YY_BREAK
    2375 case 120:
    2376 YY_RULE_SETUP
    2377 #line 301 "lex.ll"
     2498case 128:
     2499YY_RULE_SETUP
     2500#line 311 "lex.ll"
    23782501{ ASCIIOP_RETURN(); }
    23792502        YY_BREAK
    2380 case 121:
    2381 YY_RULE_SETUP
    2382 #line 302 "lex.ll"
     2503case 129:
     2504YY_RULE_SETUP
     2505#line 312 "lex.ll"
    23832506{ ASCIIOP_RETURN(); }
    23842507        YY_BREAK
    2385 case 122:
    2386 YY_RULE_SETUP
    2387 #line 303 "lex.ll"
     2508case 130:
     2509YY_RULE_SETUP
     2510#line 313 "lex.ll"
    23882511{ ASCIIOP_RETURN(); }                                   // also operator
    23892512        YY_BREAK
    2390 case 123:
    2391 YY_RULE_SETUP
    2392 #line 304 "lex.ll"
     2513case 131:
     2514YY_RULE_SETUP
     2515#line 314 "lex.ll"
    23932516{ ASCIIOP_RETURN(); }
    23942517        YY_BREAK
    2395 case 124:
    2396 YY_RULE_SETUP
    2397 #line 305 "lex.ll"
     2518case 132:
     2519YY_RULE_SETUP
     2520#line 315 "lex.ll"
    23982521{ ASCIIOP_RETURN(); }
    23992522        YY_BREAK
    2400 case 125:
    2401 YY_RULE_SETUP
    2402 #line 306 "lex.ll"
     2523case 133:
     2524YY_RULE_SETUP
     2525#line 316 "lex.ll"
    24032526{ ASCIIOP_RETURN(); }                                   // also operator
    24042527        YY_BREAK
    2405 case 126:
    2406 YY_RULE_SETUP
    2407 #line 307 "lex.ll"
     2528case 134:
     2529YY_RULE_SETUP
     2530#line 317 "lex.ll"
    24082531{ NAMEDOP_RETURN(ELLIPSIS); }
    24092532        YY_BREAK
    24102533/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2411 case 127:
    2412 YY_RULE_SETUP
    2413 #line 310 "lex.ll"
     2534case 135:
     2535YY_RULE_SETUP
     2536#line 320 "lex.ll"
    24142537{ RETURN_VAL('['); }
    24152538        YY_BREAK
    2416 case 128:
    2417 YY_RULE_SETUP
    2418 #line 311 "lex.ll"
     2539case 136:
     2540YY_RULE_SETUP
     2541#line 321 "lex.ll"
    24192542{ RETURN_VAL(']'); }
    24202543        YY_BREAK
    2421 case 129:
    2422 YY_RULE_SETUP
    2423 #line 312 "lex.ll"
     2544case 137:
     2545YY_RULE_SETUP
     2546#line 322 "lex.ll"
    24242547{ RETURN_VAL('{'); }
    24252548        YY_BREAK
    2426 case 130:
    2427 YY_RULE_SETUP
    2428 #line 313 "lex.ll"
     2549case 138:
     2550YY_RULE_SETUP
     2551#line 323 "lex.ll"
    24292552{ RETURN_VAL('}'); }
    24302553        YY_BREAK
    24312554/* operators */
    2432 case 131:
    2433 YY_RULE_SETUP
    2434 #line 316 "lex.ll"
    2435 { ASCIIOP_RETURN(); }
    2436         YY_BREAK
    2437 case 132:
    2438 YY_RULE_SETUP
    2439 #line 317 "lex.ll"
    2440 { ASCIIOP_RETURN(); }
    2441         YY_BREAK
    2442 case 133:
    2443 YY_RULE_SETUP
    2444 #line 318 "lex.ll"
    2445 { ASCIIOP_RETURN(); }
    2446         YY_BREAK
    2447 case 134:
    2448 YY_RULE_SETUP
    2449 #line 319 "lex.ll"
    2450 { ASCIIOP_RETURN(); }
    2451         YY_BREAK
    2452 case 135:
    2453 YY_RULE_SETUP
    2454 #line 320 "lex.ll"
    2455 { ASCIIOP_RETURN(); }
    2456         YY_BREAK
    2457 case 136:
    2458 YY_RULE_SETUP
    2459 #line 321 "lex.ll"
    2460 { ASCIIOP_RETURN(); }
    2461         YY_BREAK
    2462 case 137:
    2463 YY_RULE_SETUP
    2464 #line 322 "lex.ll"
    2465 { ASCIIOP_RETURN(); }
    2466         YY_BREAK
    2467 case 138:
    2468 YY_RULE_SETUP
    2469 #line 323 "lex.ll"
    2470 { ASCIIOP_RETURN(); }
    2471         YY_BREAK
    24722555case 139:
    2473 YY_RULE_SETUP
    2474 #line 324 "lex.ll"
    2475 { ASCIIOP_RETURN(); }
    2476         YY_BREAK
    2477 case 140:
    2478 YY_RULE_SETUP
    2479 #line 325 "lex.ll"
    2480 { ASCIIOP_RETURN(); }
    2481         YY_BREAK
    2482 case 141:
    24832556YY_RULE_SETUP
    24842557#line 326 "lex.ll"
    24852558{ ASCIIOP_RETURN(); }
    24862559        YY_BREAK
    2487 case 142:
     2560case 140:
    24882561YY_RULE_SETUP
    24892562#line 327 "lex.ll"
    24902563{ ASCIIOP_RETURN(); }
    24912564        YY_BREAK
    2492 case 143:
     2565case 141:
    24932566YY_RULE_SETUP
    24942567#line 328 "lex.ll"
    24952568{ ASCIIOP_RETURN(); }
    24962569        YY_BREAK
    2497 case 144:
     2570case 142:
    24982571YY_RULE_SETUP
    24992572#line 329 "lex.ll"
    25002573{ ASCIIOP_RETURN(); }
    25012574        YY_BREAK
     2575case 143:
     2576YY_RULE_SETUP
     2577#line 330 "lex.ll"
     2578{ ASCIIOP_RETURN(); }
     2579        YY_BREAK
     2580case 144:
     2581YY_RULE_SETUP
     2582#line 331 "lex.ll"
     2583{ ASCIIOP_RETURN(); }
     2584        YY_BREAK
    25022585case 145:
    25032586YY_RULE_SETUP
    2504 #line 331 "lex.ll"
     2587#line 332 "lex.ll"
     2588{ ASCIIOP_RETURN(); }
     2589        YY_BREAK
     2590case 146:
     2591YY_RULE_SETUP
     2592#line 333 "lex.ll"
     2593{ ASCIIOP_RETURN(); }
     2594        YY_BREAK
     2595case 147:
     2596YY_RULE_SETUP
     2597#line 334 "lex.ll"
     2598{ ASCIIOP_RETURN(); }
     2599        YY_BREAK
     2600case 148:
     2601YY_RULE_SETUP
     2602#line 335 "lex.ll"
     2603{ ASCIIOP_RETURN(); }
     2604        YY_BREAK
     2605case 149:
     2606YY_RULE_SETUP
     2607#line 336 "lex.ll"
     2608{ ASCIIOP_RETURN(); }
     2609        YY_BREAK
     2610case 150:
     2611YY_RULE_SETUP
     2612#line 337 "lex.ll"
     2613{ ASCIIOP_RETURN(); }
     2614        YY_BREAK
     2615case 151:
     2616YY_RULE_SETUP
     2617#line 338 "lex.ll"
     2618{ ASCIIOP_RETURN(); }
     2619        YY_BREAK
     2620case 152:
     2621YY_RULE_SETUP
     2622#line 339 "lex.ll"
     2623{ ASCIIOP_RETURN(); }
     2624        YY_BREAK
     2625case 153:
     2626YY_RULE_SETUP
     2627#line 341 "lex.ll"
    25052628{ NAMEDOP_RETURN(ICR); }
    25062629        YY_BREAK
    2507 case 146:
    2508 YY_RULE_SETUP
    2509 #line 332 "lex.ll"
     2630case 154:
     2631YY_RULE_SETUP
     2632#line 342 "lex.ll"
    25102633{ NAMEDOP_RETURN(DECR); }
    25112634        YY_BREAK
    2512 case 147:
    2513 YY_RULE_SETUP
    2514 #line 333 "lex.ll"
     2635case 155:
     2636YY_RULE_SETUP
     2637#line 343 "lex.ll"
    25152638{ NAMEDOP_RETURN(EQ); }
    25162639        YY_BREAK
    2517 case 148:
    2518 YY_RULE_SETUP
    2519 #line 334 "lex.ll"
     2640case 156:
     2641YY_RULE_SETUP
     2642#line 344 "lex.ll"
    25202643{ NAMEDOP_RETURN(NE); }
    25212644        YY_BREAK
    2522 case 149:
    2523 YY_RULE_SETUP
    2524 #line 335 "lex.ll"
     2645case 157:
     2646YY_RULE_SETUP
     2647#line 345 "lex.ll"
    25252648{ NAMEDOP_RETURN(LS); }
    25262649        YY_BREAK
    2527 case 150:
    2528 YY_RULE_SETUP
    2529 #line 336 "lex.ll"
     2650case 158:
     2651YY_RULE_SETUP
     2652#line 346 "lex.ll"
    25302653{ NAMEDOP_RETURN(RS); }
    25312654        YY_BREAK
    2532 case 151:
    2533 YY_RULE_SETUP
    2534 #line 337 "lex.ll"
     2655case 159:
     2656YY_RULE_SETUP
     2657#line 347 "lex.ll"
    25352658{ NAMEDOP_RETURN(LE); }
    25362659        YY_BREAK
    2537 case 152:
    2538 YY_RULE_SETUP
    2539 #line 338 "lex.ll"
     2660case 160:
     2661YY_RULE_SETUP
     2662#line 348 "lex.ll"
    25402663{ NAMEDOP_RETURN(GE); }
    25412664        YY_BREAK
    2542 case 153:
    2543 YY_RULE_SETUP
    2544 #line 339 "lex.ll"
     2665case 161:
     2666YY_RULE_SETUP
     2667#line 349 "lex.ll"
    25452668{ NAMEDOP_RETURN(ANDAND); }
    25462669        YY_BREAK
    2547 case 154:
    2548 YY_RULE_SETUP
    2549 #line 340 "lex.ll"
     2670case 162:
     2671YY_RULE_SETUP
     2672#line 350 "lex.ll"
    25502673{ NAMEDOP_RETURN(OROR); }
    25512674        YY_BREAK
    2552 case 155:
    2553 YY_RULE_SETUP
    2554 #line 341 "lex.ll"
     2675case 163:
     2676YY_RULE_SETUP
     2677#line 351 "lex.ll"
    25552678{ NAMEDOP_RETURN(ARROW); }
    25562679        YY_BREAK
    2557 case 156:
    2558 YY_RULE_SETUP
    2559 #line 342 "lex.ll"
     2680case 164:
     2681YY_RULE_SETUP
     2682#line 352 "lex.ll"
    25602683{ NAMEDOP_RETURN(PLUSassign); }
    25612684        YY_BREAK
    2562 case 157:
    2563 YY_RULE_SETUP
    2564 #line 343 "lex.ll"
     2685case 165:
     2686YY_RULE_SETUP
     2687#line 353 "lex.ll"
    25652688{ NAMEDOP_RETURN(MINUSassign); }
    25662689        YY_BREAK
    2567 case 158:
    2568 YY_RULE_SETUP
    2569 #line 344 "lex.ll"
     2690case 166:
     2691YY_RULE_SETUP
     2692#line 354 "lex.ll"
    25702693{ NAMEDOP_RETURN(MULTassign); }
    25712694        YY_BREAK
    2572 case 159:
    2573 YY_RULE_SETUP
    2574 #line 345 "lex.ll"
     2695case 167:
     2696YY_RULE_SETUP
     2697#line 355 "lex.ll"
    25752698{ NAMEDOP_RETURN(DIVassign); }
    25762699        YY_BREAK
    2577 case 160:
    2578 YY_RULE_SETUP
    2579 #line 346 "lex.ll"
     2700case 168:
     2701YY_RULE_SETUP
     2702#line 356 "lex.ll"
    25802703{ NAMEDOP_RETURN(MODassign); }
    25812704        YY_BREAK
    2582 case 161:
    2583 YY_RULE_SETUP
    2584 #line 347 "lex.ll"
     2705case 169:
     2706YY_RULE_SETUP
     2707#line 357 "lex.ll"
    25852708{ NAMEDOP_RETURN(ANDassign); }
    25862709        YY_BREAK
    2587 case 162:
    2588 YY_RULE_SETUP
    2589 #line 348 "lex.ll"
     2710case 170:
     2711YY_RULE_SETUP
     2712#line 358 "lex.ll"
    25902713{ NAMEDOP_RETURN(ORassign); }
    25912714        YY_BREAK
    2592 case 163:
    2593 YY_RULE_SETUP
    2594 #line 349 "lex.ll"
     2715case 171:
     2716YY_RULE_SETUP
     2717#line 359 "lex.ll"
    25952718{ NAMEDOP_RETURN(ERassign); }
    25962719        YY_BREAK
    2597 case 164:
    2598 YY_RULE_SETUP
    2599 #line 350 "lex.ll"
     2720case 172:
     2721YY_RULE_SETUP
     2722#line 360 "lex.ll"
    26002723{ NAMEDOP_RETURN(LSassign); }
    26012724        YY_BREAK
    2602 case 165:
    2603 YY_RULE_SETUP
    2604 #line 351 "lex.ll"
     2725case 173:
     2726YY_RULE_SETUP
     2727#line 361 "lex.ll"
    26052728{ NAMEDOP_RETURN(RSassign); }
    26062729        YY_BREAK
     2730case 174:
     2731YY_RULE_SETUP
     2732#line 363 "lex.ll"
     2733{ NAMEDOP_RETURN(ATassign); }                   // CFA
     2734        YY_BREAK
    26072735/* CFA, operator identifier */
    2608 case 166:
    2609 YY_RULE_SETUP
    2610 #line 354 "lex.ll"
     2736case 175:
     2737YY_RULE_SETUP
     2738#line 366 "lex.ll"
    26112739{ IDENTIFIER_RETURN(); }                                // unary
    26122740        YY_BREAK
    2613 case 167:
    2614 YY_RULE_SETUP
    2615 #line 355 "lex.ll"
     2741case 176:
     2742YY_RULE_SETUP
     2743#line 367 "lex.ll"
    26162744{ IDENTIFIER_RETURN(); }
    26172745        YY_BREAK
    2618 case 168:
    2619 YY_RULE_SETUP
    2620 #line 356 "lex.ll"
     2746case 177:
     2747YY_RULE_SETUP
     2748#line 368 "lex.ll"
     2749{ IDENTIFIER_RETURN(); }
     2750        YY_BREAK
     2751case 178:
     2752YY_RULE_SETUP
     2753#line 369 "lex.ll"
    26212754{ IDENTIFIER_RETURN(); }                // binary
    26222755        YY_BREAK
     
    26472780          an argument list.
    26482781        */
    2649 case 169:
    2650 YY_RULE_SETUP
    2651 #line 383 "lex.ll"
     2782case 179:
     2783YY_RULE_SETUP
     2784#line 396 "lex.ll"
    26522785{
    26532786        // 1 or 2 character unary operator ?
     
    26622795        YY_BREAK
    26632796/* unknown characters */
    2664 case 170:
    2665 YY_RULE_SETUP
    2666 #line 395 "lex.ll"
     2797case 180:
     2798YY_RULE_SETUP
     2799#line 408 "lex.ll"
    26672800{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    26682801        YY_BREAK
    2669 case 171:
    2670 YY_RULE_SETUP
    2671 #line 397 "lex.ll"
     2802case 181:
     2803YY_RULE_SETUP
     2804#line 410 "lex.ll"
    26722805ECHO;
    26732806        YY_BREAK
    2674 #line 2675 "Parser/lex.cc"
     2807#line 2808 "Parser/lex.cc"
    26752808case YY_STATE_EOF(INITIAL):
    26762809case YY_STATE_EOF(COMMENT):
     
    29693102                        {
    29703103                        yy_current_state = (int) yy_def[yy_current_state];
    2971                         if ( yy_current_state >= 826 )
     3104                        if ( yy_current_state >= 892 )
    29723105                                yy_c = yy_meta[(unsigned int) yy_c];
    29733106                        }
     
    29973130                {
    29983131                yy_current_state = (int) yy_def[yy_current_state];
    2999                 if ( yy_current_state >= 826 )
     3132                if ( yy_current_state >= 892 )
    30003133                        yy_c = yy_meta[(unsigned int) yy_c];
    30013134                }
    30023135        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3003         yy_is_jam = (yy_current_state == 825);
     3136        yy_is_jam = (yy_current_state == 891);
    30043137
    30053138        return yy_is_jam ? 0 : yy_current_state;
     
    36473780#define YYTABLES_NAME "yytables"
    36483781
    3649 #line 397 "lex.ll"
     3782#line 410 "lex.ll"
    36503783
    36513784
  • src/Parser/lex.h

    r679864e1 r242d458  
    1010// Created On       : Sat Sep 22 08:58:10 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  8 20:28:48 2015
    13 // Update Count     : 341
     12// Last Modified On : Mon Mar 21 18:18:06 2016
     13// Update Count     : 346
    1414//
    1515
     
    2020void yyerror( const char * );
    2121
     22#include <string>
     23#include "ParseNode.h"
    2224// External declarations for information sharing between lexer and scanner
    23 #include "TypedefTable.h"
     25class TypedefTable;
    2426extern TypedefTable typedefTable;
    2527
  • src/Parser/lex.ll

    r679864e1 r242d458  
    99 * Author           : Peter A. Buhr
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    11  * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Fri Jun 19 11:10:14 2015
    13  * Update Count     : 392
     11 * Last Modified By :
     12 * Last Modified On : Sun Jul 31 07:19:36 2016
     13 * Update Count     : 459
    1414 */
    1515
     
    2727
    2828#include "lex.h"
     29#include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
    2930#include "ParseNode.h"
    30 #include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
     31#include "TypedefTable.h"
    3132
    3233char *yyfilename;
     
    4445#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    4546#define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
    46 #define IDENTIFIER_RETURN()     RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) )
     47#define IDENTIFIER_RETURN()     RETURN_VAL( typedefTable.isKind( yytext ) )
    4748#define ATTRIBUTE_RETURN()      RETURN_VAL( ATTR_IDENTIFIER )
    4849
    4950void rm_underscore() {
    50         // remove underscores in numeric constant
    51         int j = 0;
     51        // Remove underscores in numeric constant by copying the non-underscore characters to the front of the string.
     52        yyleng = 0;
    5253        for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
    5354                if ( yytext[i] != '_' ) {
    54                         yytext[j] = yytext[i];
    55                         j += 1;
     55                        yytext[yyleng] = yytext[i];
     56                        yyleng += 1;
    5657                } // if
    5758        } // for
    58         yyleng = j;
    5959        yytext[yyleng] = '\0';
    6060}
     
    9595fractional_constant ({decimal_digits}?"."{decimal_digits})|({decimal_digits}".")
    9696exponent "_"?[eE]"_"?[+-]?{decimal_digits}
    97 floating_suffix "_"?[flFL]
     97                                // GCC: D (double), DL (long double) and iI (imaginary) suffixes
     98floating_suffix "_"?([fFdDlL][iI]?|"DL"|[iI][lLfFdD]?)
     99                                //floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI]))
    98100floating_constant (({fractional_constant}{exponent}?)|({decimal_digits}{exponent})){floating_suffix}?
    99101
     
    118120h_white [ ]|{h_tab}
    119121
    120                                 // operators
     122                                // overloadable operators
    121123op_unary_only "~"|"!"
    122124op_unary_binary "+"|"-"|"*"
     
    126128op_binary_only "/"|"%"|"^"|"&"|"|"|"<"|">"|"="|"=="|"!="|"<<"|">>"|"<="|">="|"+="|"-="|"*="|"/="|"%="|"&="|"|="|"^="|"<<="|">>="
    127129op_binary_over {op_unary_binary}|{op_binary_only}
    128 op_binary_not_over "?"|"->"|"&&"|"||"
    129 operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
     130                                // op_binary_not_over "?"|"->"|"."|"&&"|"||"|"@="
     131                                // operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
    130132
    131133%x COMMENT
     
    136138%%
    137139                                   /* line directives */
    138 ^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["][^\n]*"\n" {
     140^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" {
    139141        /* " stop highlighting */
    140142        char *end_num;
     
    182184__asm                   { KEYWORD_RETURN(ASM); }                                // GCC
    183185__asm__                 { KEYWORD_RETURN(ASM); }                                // GCC
     186_At                             { KEYWORD_RETURN(AT); }                                 // CFA
    184187_Atomic                 { KEYWORD_RETURN(ATOMIC); }                             // C11
    185188__attribute             { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     
    190193case                    { KEYWORD_RETURN(CASE); }
    191194catch                   { KEYWORD_RETURN(CATCH); }                              // CFA
     195catchResume             { KEYWORD_RETURN(CATCHRESUME); }                // CFA
    192196char                    { KEYWORD_RETURN(CHAR); }
    193197choose                  { KEYWORD_RETURN(CHOOSE); }                             // CFA
     
    198202__const                 { KEYWORD_RETURN(CONST); }                              // GCC
    199203__const__               { KEYWORD_RETURN(CONST); }                              // GCC
    200 context                 { KEYWORD_RETURN(CONTEXT); }                    // CFA
    201204continue                { KEYWORD_RETURN(CONTINUE); }
    202205default                 { KEYWORD_RETURN(DEFAULT); }
     206disable                 { KEYWORD_RETURN(DISABLE); }                    // CFA
    203207do                              { KEYWORD_RETURN(DO); }
    204208double                  { KEYWORD_RETURN(DOUBLE); }
    205209dtype                   { KEYWORD_RETURN(DTYPE); }                              // CFA
    206210else                    { KEYWORD_RETURN(ELSE); }
     211enable                  { KEYWORD_RETURN(ENABLE); }                             // CFA
    207212enum                    { KEYWORD_RETURN(ENUM); }
    208213__extension__   { KEYWORD_RETURN(EXTENSION); }                  // GCC
    209214extern                  { KEYWORD_RETURN(EXTERN); }
     215fallthrough             { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    210216fallthru                { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    211217finally                 { KEYWORD_RETURN(FINALLY); }                    // CFA
     
    231237lvalue                  { KEYWORD_RETURN(LVALUE); }                             // CFA
    232238_Noreturn               { KEYWORD_RETURN(NORETURN); }                   // C11
     239__builtin_offsetof { KEYWORD_RETURN(OFFSETOF); }                // GCC
     240otype                   { KEYWORD_RETURN(OTYPE); }                              // CFA
    233241register                { KEYWORD_RETURN(REGISTER); }
    234242restrict                { KEYWORD_RETURN(RESTRICT); }                   // C99
     
    247255_Thread_local   { KEYWORD_RETURN(THREADLOCAL); }                // C11
    248256throw                   { KEYWORD_RETURN(THROW); }                              // CFA
     257throwResume             { KEYWORD_RETURN(THROWRESUME); }                // CFA
     258trait                   { KEYWORD_RETURN(TRAIT); }                              // CFA
    249259try                             { KEYWORD_RETURN(TRY); }                                // CFA
    250 type                    { KEYWORD_RETURN(TYPE); }                               // CFA
    251260typedef                 { KEYWORD_RETURN(TYPEDEF); }
    252261typeof                  { KEYWORD_RETURN(TYPEOF); }                             // GCC
     
    255264union                   { KEYWORD_RETURN(UNION); }
    256265unsigned                { KEYWORD_RETURN(UNSIGNED); }
     266__builtin_va_list { KEYWORD_RETURN(VALIST); }                   // GCC
    257267void                    { KEYWORD_RETURN(VOID); }
    258268volatile                { KEYWORD_RETURN(VOLATILE); }
     
    264274{identifier}    { IDENTIFIER_RETURN(); }
    265275{attr_identifier} { ATTRIBUTE_RETURN(); }
    266 "`"                     { BEGIN BKQUOTE; }
     276"`"                             { BEGIN BKQUOTE; }
    267277<BKQUOTE>{identifier} { IDENTIFIER_RETURN(); }
    268278<BKQUOTE>"`"    { BEGIN 0; }
     
    351361">>="                   { NAMEDOP_RETURN(RSassign); }
    352362
     363"@="                    { NAMEDOP_RETURN(ATassign); }                   // CFA
     364
    353365                                /* CFA, operator identifier */
    354366{op_unary}"?"   { IDENTIFIER_RETURN(); }                                // unary
    355367"?"({op_unary_pre_post}|"()"|"[?]"|"{}") { IDENTIFIER_RETURN(); }
     368"^?{}" { IDENTIFIER_RETURN(); }
    356369"?"{op_binary_over}"?"  { IDENTIFIER_RETURN(); }                // binary
    357370        /*
     
    381394          an argument list.
    382395        */
    383 {op_unary}"?"(({op_unary_pre_post}|"[?]")|({op_binary_over}"?")) {
     396{op_unary}"?"({op_unary_pre_post}|"[?]"|{op_binary_over}"?") {
    384397        // 1 or 2 character unary operator ?
    385398        int i = yytext[1] == '?' ? 1 : 2;
  • src/Parser/module.mk

    r679864e1 r242d458  
    1111## Created On       : Sat May 16 15:29:09 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Mon Jun  8 20:23:47 2015
    14 ## Update Count     : 87
     13## Last Modified On : Thu Jan 28 11:57:23 2016
     14## Update Count     : 100
    1515###############################################################################
    1616
     
    1818
    1919AM_YFLAGS = -d -t -v
    20 cfa_cpp_LDADD = ${LEXLIB}       # yywrap
    21 MAINTAINERCLEANFILES = Parser/parser.output
    2220
    2321SRC += Parser/parser.yy \
     
    3331       Parser/parseutility.cc \
    3432       Parser/Parser.cc
     33
     34MAINTAINERCLEANFILES += Parser/parser.output
  • src/Parser/parser.cc

    r679864e1 r242d458  
    6767
    6868/* Line 268 of yacc.c  */
    69 #line 44 "parser.yy"
     69#line 42 "parser.yy"
    7070
    7171#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
     
    7777#include <cstdio>
    7878#include <stack>
     79#include "lex.h"
     80#include "parser.h"
     81#include "ParseNode.h"
    7982#include "TypedefTable.h"
    80 #include "lex.h"
    81 #include "ParseNode.h"
    8283#include "TypeData.h"
    8384#include "LinkageSpec.h"
     
    9091
    9192/* Line 268 of yacc.c  */
    92 #line 93 "Parser/parser.cc"
     93#line 94 "Parser/parser.cc"
    9394
    9495/* Enabling traces.  */
     
    138139     SIGNED = 277,
    139140     UNSIGNED = 278,
    140      BOOL = 279,
    141      COMPLEX = 280,
    142      IMAGINARY = 281,
    143      TYPEOF = 282,
    144      LABEL = 283,
    145      ENUM = 284,
    146      STRUCT = 285,
    147      UNION = 286,
    148      TYPE = 287,
    149      FTYPE = 288,
    150      DTYPE = 289,
    151      CONTEXT = 290,
    152      SIZEOF = 291,
    153      ATTRIBUTE = 292,
    154      EXTENSION = 293,
    155      IF = 294,
    156      ELSE = 295,
    157      SWITCH = 296,
    158      CASE = 297,
    159      DEFAULT = 298,
    160      DO = 299,
    161      WHILE = 300,
    162      FOR = 301,
    163      BREAK = 302,
    164      CONTINUE = 303,
    165      GOTO = 304,
    166      RETURN = 305,
    167      CHOOSE = 306,
    168      FALLTHRU = 307,
    169      TRY = 308,
    170      CATCH = 309,
    171      FINALLY = 310,
    172      THROW = 311,
    173      ASM = 312,
    174      ALIGNAS = 313,
    175      ALIGNOF = 314,
    176      ATOMIC = 315,
    177      GENERIC = 316,
    178      NORETURN = 317,
    179      STATICASSERT = 318,
    180      THREADLOCAL = 319,
    181      IDENTIFIER = 320,
    182      QUOTED_IDENTIFIER = 321,
    183      TYPEDEFname = 322,
    184      TYPEGENname = 323,
    185      ATTR_IDENTIFIER = 324,
    186      ATTR_TYPEDEFname = 325,
    187      ATTR_TYPEGENname = 326,
    188      INTEGERconstant = 327,
    189      FLOATINGconstant = 328,
    190      CHARACTERconstant = 329,
    191      STRINGliteral = 330,
    192      ZERO = 331,
    193      ONE = 332,
    194      ARROW = 333,
    195      ICR = 334,
    196      DECR = 335,
    197      LS = 336,
    198      RS = 337,
    199      LE = 338,
    200      GE = 339,
    201      EQ = 340,
    202      NE = 341,
    203      ANDAND = 342,
    204      OROR = 343,
    205      ELLIPSIS = 344,
    206      MULTassign = 345,
    207      DIVassign = 346,
    208      MODassign = 347,
    209      PLUSassign = 348,
    210      MINUSassign = 349,
    211      LSassign = 350,
    212      RSassign = 351,
    213      ANDassign = 352,
    214      ERassign = 353,
    215      ORassign = 354,
    216      THEN = 355
     141     VALIST = 279,
     142     BOOL = 280,
     143     COMPLEX = 281,
     144     IMAGINARY = 282,
     145     TYPEOF = 283,
     146     LABEL = 284,
     147     ENUM = 285,
     148     STRUCT = 286,
     149     UNION = 287,
     150     OTYPE = 288,
     151     FTYPE = 289,
     152     DTYPE = 290,
     153     TRAIT = 291,
     154     SIZEOF = 292,
     155     OFFSETOF = 293,
     156     ATTRIBUTE = 294,
     157     EXTENSION = 295,
     158     IF = 296,
     159     ELSE = 297,
     160     SWITCH = 298,
     161     CASE = 299,
     162     DEFAULT = 300,
     163     DO = 301,
     164     WHILE = 302,
     165     FOR = 303,
     166     BREAK = 304,
     167     CONTINUE = 305,
     168     GOTO = 306,
     169     RETURN = 307,
     170     CHOOSE = 308,
     171     DISABLE = 309,
     172     ENABLE = 310,
     173     FALLTHRU = 311,
     174     TRY = 312,
     175     CATCH = 313,
     176     CATCHRESUME = 314,
     177     FINALLY = 315,
     178     THROW = 316,
     179     THROWRESUME = 317,
     180     AT = 318,
     181     ASM = 319,
     182     ALIGNAS = 320,
     183     ALIGNOF = 321,
     184     ATOMIC = 322,
     185     GENERIC = 323,
     186     NORETURN = 324,
     187     STATICASSERT = 325,
     188     THREADLOCAL = 326,
     189     IDENTIFIER = 327,
     190     QUOTED_IDENTIFIER = 328,
     191     TYPEDEFname = 329,
     192     TYPEGENname = 330,
     193     ATTR_IDENTIFIER = 331,
     194     ATTR_TYPEDEFname = 332,
     195     ATTR_TYPEGENname = 333,
     196     INTEGERconstant = 334,
     197     FLOATINGconstant = 335,
     198     CHARACTERconstant = 336,
     199     STRINGliteral = 337,
     200     ZERO = 338,
     201     ONE = 339,
     202     ARROW = 340,
     203     ICR = 341,
     204     DECR = 342,
     205     LS = 343,
     206     RS = 344,
     207     LE = 345,
     208     GE = 346,
     209     EQ = 347,
     210     NE = 348,
     211     ANDAND = 349,
     212     OROR = 350,
     213     ELLIPSIS = 351,
     214     MULTassign = 352,
     215     DIVassign = 353,
     216     MODassign = 354,
     217     PLUSassign = 355,
     218     MINUSassign = 356,
     219     LSassign = 357,
     220     RSassign = 358,
     221     ANDassign = 359,
     222     ERassign = 360,
     223     ORassign = 361,
     224     ATassign = 362,
     225     THEN = 363
    217226   };
    218227#endif
     
    239248#define SIGNED 277
    240249#define UNSIGNED 278
    241 #define BOOL 279
    242 #define COMPLEX 280
    243 #define IMAGINARY 281
    244 #define TYPEOF 282
    245 #define LABEL 283
    246 #define ENUM 284
    247 #define STRUCT 285
    248 #define UNION 286
    249 #define TYPE 287
    250 #define FTYPE 288
    251 #define DTYPE 289
    252 #define CONTEXT 290
    253 #define SIZEOF 291
    254 #define ATTRIBUTE 292
    255 #define EXTENSION 293
    256 #define IF 294
    257 #define ELSE 295
    258 #define SWITCH 296
    259 #define CASE 297
    260 #define DEFAULT 298
    261 #define DO 299
    262 #define WHILE 300
    263 #define FOR 301
    264 #define BREAK 302
    265 #define CONTINUE 303
    266 #define GOTO 304
    267 #define RETURN 305
    268 #define CHOOSE 306
    269 #define FALLTHRU 307
    270 #define TRY 308
    271 #define CATCH 309
    272 #define FINALLY 310
    273 #define THROW 311
    274 #define ASM 312
    275 #define ALIGNAS 313
    276 #define ALIGNOF 314
    277 #define ATOMIC 315
    278 #define GENERIC 316
    279 #define NORETURN 317
    280 #define STATICASSERT 318
    281 #define THREADLOCAL 319
    282 #define IDENTIFIER 320
    283 #define QUOTED_IDENTIFIER 321
    284 #define TYPEDEFname 322
    285 #define TYPEGENname 323
    286 #define ATTR_IDENTIFIER 324
    287 #define ATTR_TYPEDEFname 325
    288 #define ATTR_TYPEGENname 326
    289 #define INTEGERconstant 327
    290 #define FLOATINGconstant 328
    291 #define CHARACTERconstant 329
    292 #define STRINGliteral 330
    293 #define ZERO 331
    294 #define ONE 332
    295 #define ARROW 333
    296 #define ICR 334
    297 #define DECR 335
    298 #define LS 336
    299 #define RS 337
    300 #define LE 338
    301 #define GE 339
    302 #define EQ 340
    303 #define NE 341
    304 #define ANDAND 342
    305 #define OROR 343
    306 #define ELLIPSIS 344
    307 #define MULTassign 345
    308 #define DIVassign 346
    309 #define MODassign 347
    310 #define PLUSassign 348
    311 #define MINUSassign 349
    312 #define LSassign 350
    313 #define RSassign 351
    314 #define ANDassign 352
    315 #define ERassign 353
    316 #define ORassign 354
    317 #define THEN 355
     250#define VALIST 279
     251#define BOOL 280
     252#define COMPLEX 281
     253#define IMAGINARY 282
     254#define TYPEOF 283
     255#define LABEL 284
     256#define ENUM 285
     257#define STRUCT 286
     258#define UNION 287
     259#define OTYPE 288
     260#define FTYPE 289
     261#define DTYPE 290
     262#define TRAIT 291
     263#define SIZEOF 292
     264#define OFFSETOF 293
     265#define ATTRIBUTE 294
     266#define EXTENSION 295
     267#define IF 296
     268#define ELSE 297
     269#define SWITCH 298
     270#define CASE 299
     271#define DEFAULT 300
     272#define DO 301
     273#define WHILE 302
     274#define FOR 303
     275#define BREAK 304
     276#define CONTINUE 305
     277#define GOTO 306
     278#define RETURN 307
     279#define CHOOSE 308
     280#define DISABLE 309
     281#define ENABLE 310
     282#define FALLTHRU 311
     283#define TRY 312
     284#define CATCH 313
     285#define CATCHRESUME 314
     286#define FINALLY 315
     287#define THROW 316
     288#define THROWRESUME 317
     289#define AT 318
     290#define ASM 319
     291#define ALIGNAS 320
     292#define ALIGNOF 321
     293#define ATOMIC 322
     294#define GENERIC 323
     295#define NORETURN 324
     296#define STATICASSERT 325
     297#define THREADLOCAL 326
     298#define IDENTIFIER 327
     299#define QUOTED_IDENTIFIER 328
     300#define TYPEDEFname 329
     301#define TYPEGENname 330
     302#define ATTR_IDENTIFIER 331
     303#define ATTR_TYPEDEFname 332
     304#define ATTR_TYPEGENname 333
     305#define INTEGERconstant 334
     306#define FLOATINGconstant 335
     307#define CHARACTERconstant 336
     308#define STRINGliteral 337
     309#define ZERO 338
     310#define ONE 339
     311#define ARROW 340
     312#define ICR 341
     313#define DECR 342
     314#define LS 343
     315#define RS 344
     316#define LE 345
     317#define GE 346
     318#define EQ 347
     319#define NE 348
     320#define ANDAND 349
     321#define OROR 350
     322#define ELLIPSIS 351
     323#define MULTassign 352
     324#define DIVassign 353
     325#define MODassign 354
     326#define PLUSassign 355
     327#define MINUSassign 356
     328#define LSassign 357
     329#define RSassign 358
     330#define ANDassign 359
     331#define ERassign 360
     332#define ORassign 361
     333#define ATassign 362
     334#define THEN 363
    318335
    319336
     
    325342
    326343/* Line 293 of yacc.c  */
    327 #line 108 "parser.yy"
     344#line 110 "parser.yy"
    328345
    329346        Token tok;
     
    337354        LabelNode *label;
    338355        InitializerNode *in;
     356        OperatorNode::Type op;
    339357        bool flag;
    340358
     
    342360
    343361/* Line 293 of yacc.c  */
    344 #line 345 "Parser/parser.cc"
     362#line 363 "Parser/parser.cc"
    345363} YYSTYPE;
    346364# define YYSTYPE_IS_TRIVIAL 1
     
    354372
    355373/* Line 343 of yacc.c  */
    356 #line 357 "Parser/parser.cc"
     374#line 375 "Parser/parser.cc"
    357375
    358376#ifdef short
     
    571589
    572590/* YYFINAL -- State number of the termination state.  */
    573 #define YYFINAL  246
     591#define YYFINAL  252
    574592/* YYLAST -- Last index in YYTABLE.  */
    575 #define YYLAST   11329
     593#define YYLAST   12080
    576594
    577595/* YYNTOKENS -- Number of terminals.  */
    578 #define YYNTOKENS  125
     596#define YYNTOKENS  133
    579597/* YYNNTS -- Number of nonterminals.  */
    580 #define YYNNTS  238
     598#define YYNNTS  241
    581599/* YYNRULES -- Number of rules.  */
    582 #define YYNRULES  740
     600#define YYNRULES  755
    583601/* YYNRULES -- Number of states.  */
    584 #define YYNSTATES  1530
     602#define YYNSTATES  1579
    585603
    586604/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    587605#define YYUNDEFTOK  2
    588 #define YYMAXUTOK   355
     606#define YYMAXUTOK   363
    589607
    590608#define YYTRANSLATE(YYX)                                                \
     
    597615       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    598616       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    599        2,     2,     2,   110,     2,     2,     2,   117,   112,     2,
    600      101,   102,   111,   113,   108,   114,   105,   116,     2,     2,
    601        2,     2,     2,     2,     2,     2,     2,     2,   109,   124,
    602      118,   123,   119,   122,     2,     2,     2,     2,     2,     2,
     617       2,     2,     2,   122,     2,     2,     2,   125,   119,     2,
     618     109,   110,   118,   120,   116,   121,   113,   124,     2,     2,
     619       2,     2,     2,     2,     2,     2,     2,     2,   117,   132,
     620     126,   131,   127,   130,     2,     2,     2,     2,     2,     2,
    603621       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    604622       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    605        2,   103,     2,   104,   120,     2,     2,     2,     2,     2,
     623       2,   111,     2,   112,   128,     2,     2,     2,     2,     2,
    606624       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    607625       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    608        2,     2,     2,   106,   121,   107,   115,     2,     2,     2,
     626       2,     2,     2,   114,   129,   115,   123,     2,     2,     2,
    609627       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    610628       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    629647      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
    630648      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    631       95,    96,    97,    98,    99,   100
     649      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
     650     105,   106,   107,   108
    632651};
    633652
     
    638657{
    639658       0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
    640       17,    19,    21,    23,    25,    27,    29,    32,    34,    36,
    641       40,    44,    46,    53,    58,    62,    70,    74,    82,    85,
    642       88,    96,    98,   102,   103,   105,   109,   117,   127,   129,
    643      133,   135,   139,   147,   151,   159,   161,   163,   165,   168,
    644      171,   174,   177,   180,   183,   186,   191,   193,   198,   203,
    645      206,   211,   214,   216,   218,   220,   222,   224,   229,   234,
    646      236,   240,   244,   248,   250,   254,   258,   260,   264,   268,
    647      270,   274,   278,   282,   286,   288,   292,   296,   298,   302,
    648      304,   308,   310,   314,   316,   320,   322,   326,   328,   334,
    649      339,   345,   347,   349,   353,   357,   360,   361,   363,   366,
    650      372,   379,   387,   389,   393,   395,   397,   399,   401,   403,
    651      405,   407,   409,   411,   413,   415,   419,   420,   422,   424,
    652      426,   428,   430,   432,   434,   436,   438,   443,   446,   454,
    653      456,   460,   462,   465,   467,   470,   472,   475,   478,   484,
    654      492,   498,   508,   514,   524,   526,   530,   532,   534,   538,
    655      542,   545,   547,   550,   553,   554,   556,   559,   563,   564,
    656      566,   569,   573,   577,   582,   583,   585,   587,   590,   596,
    657      604,   611,   618,   623,   627,   632,   635,   639,   642,   646,
    658      650,   654,   657,   661,   665,   670,   672,   678,   685,   695,
    659      706,   709,   711,   714,   717,   720,   722,   729,   738,   749,
    660      762,   777,   778,   780,   781,   783,   785,   789,   794,   802,
    661      803,   805,   809,   811,   815,   817,   819,   821,   825,   827,
    662      829,   831,   835,   836,   838,   842,   847,   849,   853,   855,
    663      857,   861,   865,   869,   873,   877,   880,   884,   891,   895,
    664      899,   904,   906,   909,   912,   916,   922,   931,   939,   947,
    665      953,   963,   966,   969,   975,   979,   985,   990,   994,   999,
    666     1004,  1012,  1016,  1020,  1024,  1028,  1033,  1040,  1042,  1044,
    667     1046,  1048,  1050,  1052,  1054,  1056,  1057,  1059,  1061,  1064,
    668     1066,  1068,  1070,  1072,  1074,  1076,  1078,  1079,  1085,  1087,
    669     1090,  1094,  1096,  1099,  1101,  1103,  1105,  1107,  1109,  1111,
    670     1113,  1115,  1117,  1119,  1121,  1123,  1125,  1127,  1129,  1131,
    671     1133,  1135,  1137,  1139,  1141,  1143,  1146,  1149,  1153,  1157,
    672     1159,  1163,  1165,  1168,  1171,  1174,  1179,  1184,  1189,  1194,
    673     1196,  1199,  1202,  1206,  1208,  1211,  1214,  1216,  1219,  1222,
    674     1226,  1228,  1231,  1234,  1236,  1238,  1243,  1246,  1252,  1260,
    675     1263,  1266,  1269,  1271,  1274,  1277,  1281,  1284,  1288,  1290,
    676     1293,  1297,  1300,  1303,  1308,  1309,  1311,  1314,  1317,  1319,
    677     1320,  1322,  1325,  1328,  1334,  1341,  1344,  1347,  1352,  1353,
    678     1356,  1357,  1359,  1361,  1363,  1369,  1375,  1381,  1383,  1389,
    679     1395,  1405,  1407,  1413,  1414,  1416,  1418,  1424,  1426,  1428,
    680     1434,  1440,  1442,  1446,  1450,  1455,  1457,  1459,  1461,  1463,
    681     1466,  1468,  1472,  1476,  1478,  1481,  1483,  1487,  1489,  1491,
    682     1493,  1495,  1497,  1499,  1501,  1503,  1505,  1507,  1509,  1512,
    683     1514,  1516,  1518,  1521,  1522,  1525,  1527,  1532,  1534,  1537,
    684     1541,  1546,  1549,  1552,  1554,  1557,  1559,  1562,  1568,  1574,
    685     1582,  1589,  1591,  1594,  1597,  1601,  1603,  1606,  1609,  1614,
    686     1617,  1622,  1623,  1628,  1631,  1633,  1635,  1637,  1638,  1641,
    687     1647,  1653,  1667,  1669,  1671,  1675,  1679,  1682,  1686,  1690,
    688     1693,  1698,  1700,  1707,  1717,  1718,  1730,  1732,  1736,  1740,
    689     1744,  1746,  1748,  1754,  1757,  1763,  1764,  1766,  1768,  1772,
    690     1773,  1775,  1777,  1779,  1781,  1782,  1789,  1792,  1794,  1797,
    691     1802,  1805,  1809,  1813,  1817,  1822,  1828,  1834,  1840,  1847,
    692     1849,  1851,  1853,  1857,  1858,  1864,  1865,  1867,  1869,  1872,
    693     1879,  1881,  1885,  1886,  1888,  1893,  1895,  1897,  1899,  1901,
    694     1904,  1906,  1909,  1912,  1914,  1918,  1921,  1925,  1929,  1932,
    695     1937,  1942,  1946,  1955,  1959,  1962,  1964,  1967,  1974,  1983,
    696     1987,  1990,  1994,  1998,  2003,  2008,  2012,  2014,  2016,  2018,
    697     2023,  2030,  2034,  2037,  2041,  2045,  2050,  2055,  2059,  2062,
    698     2064,  2067,  2070,  2072,  2076,  2079,  2083,  2087,  2090,  2095,
    699     2100,  2104,  2111,  2120,  2124,  2127,  2129,  2132,  2135,  2138,
    700     2142,  2146,  2149,  2154,  2159,  2163,  2170,  2179,  2183,  2186,
    701     2188,  2191,  2194,  2196,  2198,  2201,  2205,  2209,  2212,  2217,
    702     2224,  2233,  2235,  2238,  2241,  2243,  2246,  2249,  2253,  2257,
    703     2259,  2264,  2269,  2273,  2279,  2288,  2292,  2295,  2299,  2301,
    704     2307,  2313,  2320,  2327,  2329,  2332,  2335,  2337,  2340,  2343,
    705     2347,  2351,  2353,  2358,  2363,  2367,  2373,  2382,  2386,  2388,
    706     2391,  2393,  2396,  2403,  2409,  2416,  2424,  2432,  2434,  2437,
    707     2440,  2442,  2445,  2448,  2452,  2456,  2458,  2463,  2468,  2472,
    708     2481,  2485,  2487,  2489,  2492,  2494,  2496,  2499,  2503,  2506,
    709     2510,  2513,  2517,  2521,  2524,  2529,  2533,  2536,  2540,  2543,
    710     2548,  2552,  2555,  2562,  2569,  2576,  2584,  2586,  2589,  2591,
    711     2593,  2595,  2598,  2602,  2605,  2609,  2612,  2616,  2620,  2625,
    712     2628,  2632,  2637,  2640,  2646,  2652,  2659,  2666,  2667,  2669,
    713     2670
     659      17,    19,    21,    23,    25,    27,    29,    31,    34,    36,
     660      38,    42,    46,    48,    55,    60,    64,    72,    76,    84,
     661      87,    90,    98,   103,   105,   109,   110,   112,   116,   124,
     662     134,   136,   140,   142,   146,   154,   158,   166,   168,   170,
     663     172,   175,   178,   181,   184,   187,   190,   195,   202,   204,
     664     209,   214,   217,   222,   224,   226,   228,   230,   232,   234,
     665     236,   238,   243,   248,   250,   254,   258,   262,   264,   268,
     666     272,   274,   278,   282,   284,   288,   292,   296,   300,   302,
     667     306,   310,   312,   316,   318,   322,   324,   328,   330,   334,
     668     336,   340,   342,   348,   353,   359,   361,   363,   367,   371,
     669     374,   375,   377,   380,   386,   393,   401,   403,   407,   409,
     670     411,   413,   415,   417,   419,   421,   423,   425,   427,   429,
     671     433,   434,   436,   438,   440,   442,   444,   446,   448,   450,
     672     452,   459,   464,   467,   475,   477,   481,   483,   486,   488,
     673     491,   493,   496,   499,   505,   513,   519,   529,   535,   545,
     674     547,   551,   553,   555,   559,   563,   566,   568,   571,   574,
     675     575,   577,   580,   584,   585,   587,   590,   594,   598,   603,
     676     604,   606,   608,   611,   617,   625,   632,   639,   644,   648,
     677     653,   656,   660,   663,   667,   671,   675,   679,   685,   689,
     678     693,   698,   700,   706,   713,   719,   726,   736,   747,   757,
     679     768,   771,   773,   776,   779,   782,   784,   791,   800,   811,
     680     824,   839,   840,   842,   843,   845,   847,   851,   856,   864,
     681     865,   867,   871,   873,   877,   879,   881,   883,   887,   889,
     682     891,   893,   897,   898,   900,   904,   909,   911,   915,   917,
     683     919,   923,   927,   931,   935,   939,   942,   946,   953,   957,
     684     961,   966,   968,   971,   974,   978,   984,   993,  1001,  1009,
     685    1015,  1025,  1028,  1031,  1037,  1041,  1047,  1052,  1056,  1061,
     686    1066,  1074,  1078,  1082,  1086,  1090,  1095,  1102,  1104,  1106,
     687    1108,  1110,  1112,  1114,  1116,  1118,  1119,  1121,  1123,  1126,
     688    1128,  1130,  1132,  1134,  1136,  1138,  1140,  1141,  1147,  1149,
     689    1152,  1156,  1158,  1161,  1163,  1165,  1167,  1169,  1171,  1173,
     690    1175,  1177,  1179,  1181,  1183,  1185,  1187,  1189,  1191,  1193,
     691    1195,  1197,  1199,  1201,  1203,  1205,  1207,  1210,  1213,  1217,
     692    1221,  1223,  1227,  1229,  1232,  1235,  1238,  1243,  1248,  1253,
     693    1258,  1260,  1263,  1266,  1270,  1272,  1275,  1278,  1280,  1283,
     694    1286,  1290,  1292,  1295,  1298,  1300,  1302,  1307,  1310,  1311,
     695    1318,  1326,  1329,  1332,  1335,  1336,  1339,  1342,  1346,  1349,
     696    1353,  1355,  1358,  1362,  1365,  1368,  1373,  1374,  1376,  1379,
     697    1382,  1384,  1385,  1387,  1390,  1393,  1399,  1402,  1403,  1411,
     698    1414,  1419,  1420,  1423,  1424,  1426,  1428,  1430,  1436,  1442,
     699    1448,  1450,  1456,  1462,  1472,  1474,  1480,  1481,  1483,  1485,
     700    1491,  1493,  1495,  1501,  1507,  1509,  1513,  1517,  1522,  1524,
     701    1526,  1528,  1530,  1533,  1535,  1539,  1543,  1545,  1548,  1550,
     702    1554,  1556,  1558,  1560,  1562,  1564,  1566,  1568,  1570,  1572,
     703    1574,  1576,  1579,  1581,  1583,  1585,  1588,  1589,  1592,  1595,
     704    1597,  1602,  1603,  1605,  1608,  1612,  1617,  1620,  1623,  1625,
     705    1628,  1630,  1633,  1639,  1645,  1653,  1660,  1662,  1665,  1668,
     706    1672,  1674,  1677,  1680,  1685,  1688,  1693,  1694,  1699,  1702,
     707    1704,  1706,  1708,  1709,  1712,  1718,  1724,  1738,  1740,  1742,
     708    1746,  1750,  1753,  1757,  1761,  1764,  1769,  1771,  1778,  1788,
     709    1789,  1801,  1803,  1807,  1811,  1815,  1817,  1819,  1825,  1828,
     710    1834,  1835,  1837,  1839,  1843,  1844,  1846,  1848,  1850,  1852,
     711    1853,  1860,  1863,  1865,  1868,  1873,  1876,  1880,  1884,  1888,
     712    1893,  1899,  1905,  1911,  1918,  1920,  1922,  1924,  1928,  1929,
     713    1935,  1936,  1938,  1940,  1943,  1950,  1952,  1956,  1957,  1959,
     714    1964,  1966,  1968,  1970,  1972,  1975,  1977,  1980,  1983,  1985,
     715    1989,  1992,  1996,  2000,  2003,  2008,  2013,  2017,  2026,  2030,
     716    2033,  2035,  2038,  2045,  2054,  2058,  2061,  2065,  2069,  2074,
     717    2079,  2083,  2085,  2087,  2089,  2094,  2101,  2105,  2108,  2112,
     718    2116,  2121,  2126,  2130,  2133,  2135,  2138,  2141,  2143,  2147,
     719    2150,  2154,  2158,  2161,  2166,  2171,  2175,  2182,  2191,  2195,
     720    2198,  2200,  2203,  2206,  2209,  2213,  2217,  2220,  2225,  2230,
     721    2234,  2241,  2250,  2254,  2257,  2259,  2262,  2265,  2267,  2269,
     722    2272,  2276,  2280,  2283,  2288,  2295,  2304,  2306,  2309,  2312,
     723    2314,  2317,  2320,  2324,  2328,  2330,  2335,  2340,  2344,  2350,
     724    2359,  2363,  2366,  2370,  2372,  2378,  2384,  2391,  2398,  2400,
     725    2403,  2406,  2408,  2411,  2414,  2418,  2422,  2424,  2429,  2434,
     726    2438,  2444,  2453,  2457,  2459,  2462,  2464,  2467,  2474,  2480,
     727    2487,  2495,  2503,  2505,  2508,  2511,  2513,  2516,  2519,  2523,
     728    2527,  2529,  2534,  2539,  2543,  2552,  2556,  2558,  2560,  2563,
     729    2565,  2567,  2570,  2574,  2577,  2581,  2584,  2588,  2592,  2595,
     730    2600,  2604,  2607,  2611,  2614,  2619,  2623,  2626,  2633,  2640,
     731    2647,  2655,  2657,  2660,  2662,  2664,  2666,  2669,  2673,  2676,
     732    2680,  2683,  2687,  2691,  2696,  2699,  2703,  2708,  2711,  2717,
     733    2723,  2730,  2737,  2738,  2740,  2741
    714734};
    715735
     
    717737static const yytype_int16 yyrhs[] =
    718738{
    719      291,     0,    -1,    -1,    -1,    72,    -1,    73,    -1,    74,
    720       -1,    65,    -1,    69,    -1,   132,    -1,    65,    -1,    69,
    721       -1,    65,    -1,    76,    -1,    77,    -1,    75,    -1,   133,
    722       75,    -1,    65,    -1,   132,    -1,   101,   160,   102,    -1,
    723      101,   164,   102,    -1,   134,    -1,   135,   103,   126,   155,
    724      127,   104,    -1,   135,   101,   136,   102,    -1,   135,   105,
    725      131,    -1,   135,   105,   103,   126,   138,   127,   104,    -1,
    726      135,    78,   131,    -1,   135,    78,   103,   126,   138,   127,
    727      104,    -1,   135,    79,    -1,   135,    80,    -1,   101,   264,
    728      102,   106,   268,   361,   107,    -1,   137,    -1,   136,   108,
    729      137,    -1,    -1,   155,    -1,   131,   109,   155,    -1,   103,
    730      126,   155,   127,   104,   109,   155,    -1,   103,   126,   155,
    731      108,   158,   127,   104,   109,   155,    -1,   139,    -1,   138,
    732      108,   139,    -1,   131,    -1,   131,   105,   139,    -1,   131,
    733      105,   103,   126,   138,   127,   104,    -1,   131,    78,   139,
    734       -1,   131,    78,   103,   126,   138,   127,   104,    -1,   135,
    735       -1,   128,    -1,   133,    -1,    79,   140,    -1,    80,   140,
    736       -1,    38,   142,    -1,   141,   142,    -1,   110,   142,    -1,
    737      111,   142,    -1,    36,   140,    -1,    36,   101,   264,   102,
    738       -1,    69,    -1,    69,   101,   265,   102,    -1,    69,   101,
    739      137,   102,    -1,    59,   140,    -1,    59,   101,   264,   102,
    740       -1,    87,   131,    -1,   112,    -1,   113,    -1,   114,    -1,
    741      115,    -1,   140,    -1,   101,   264,   102,   142,    -1,   101,
    742      264,   102,   157,    -1,   142,    -1,   143,   111,   142,    -1,
    743      143,   116,   142,    -1,   143,   117,   142,    -1,   143,    -1,
    744      144,   113,   143,    -1,   144,   114,   143,    -1,   144,    -1,
    745      145,    81,   144,    -1,   145,    82,   144,    -1,   145,    -1,
    746      146,   118,   145,    -1,   146,   119,   145,    -1,   146,    83,
    747      145,    -1,   146,    84,   145,    -1,   146,    -1,   147,    85,
    748      146,    -1,   147,    86,   146,    -1,   147,    -1,   148,   112,
    749      147,    -1,   148,    -1,   149,   120,   148,    -1,   149,    -1,
    750      150,   121,   149,    -1,   150,    -1,   151,    87,   150,    -1,
    751      151,    -1,   152,    88,   151,    -1,   152,    -1,   152,   122,
    752      160,   109,   153,    -1,   152,   122,   109,   153,    -1,   152,
    753      122,   160,   109,   157,    -1,   153,    -1,   153,    -1,   140,
    754      123,   155,    -1,   140,   159,   155,    -1,   157,   362,    -1,
    755       -1,   155,    -1,   103,   104,    -1,   103,   126,   155,   127,
    756      104,    -1,   103,   126,   108,   158,   127,   104,    -1,   103,
    757      126,   155,   108,   158,   127,   104,    -1,   156,    -1,   158,
    758      108,   156,    -1,    90,    -1,    91,    -1,    92,    -1,    93,
    759       -1,    94,    -1,    95,    -1,    96,    -1,    97,    -1,    98,
    760       -1,    99,    -1,   155,    -1,   160,   108,   155,    -1,    -1,
    761      160,    -1,   163,    -1,   164,    -1,   168,    -1,   169,    -1,
    762      181,    -1,   183,    -1,   184,    -1,   189,    -1,   131,   109,
    763      301,   162,    -1,   106,   107,    -1,   106,   126,   126,   200,
    764      165,   127,   107,    -1,   166,    -1,   165,   126,   166,    -1,
    765      203,    -1,    38,   203,    -1,   297,    -1,   162,   127,    -1,
    766      162,    -1,   167,   162,    -1,   161,   124,    -1,    39,   101,
    767      160,   102,   162,    -1,    39,   101,   160,   102,   162,    40,
    768      162,    -1,    41,   101,   160,   102,   174,    -1,    41,   101,
    769      160,   102,   106,   126,   196,   175,   107,    -1,    51,   101,
    770      160,   102,   174,    -1,    51,   101,   160,   102,   106,   126,
    771      196,   177,   107,    -1,   154,    -1,   154,    89,   154,    -1,
    772      299,    -1,   170,    -1,   171,   108,   170,    -1,    42,   171,
    773      109,    -1,    43,   109,    -1,   172,    -1,   173,   172,    -1,
    774      173,   162,    -1,    -1,   176,    -1,   173,   167,    -1,   176,
    775      173,   167,    -1,    -1,   178,    -1,   173,   180,    -1,   173,
    776      167,   179,    -1,   178,   173,   180,    -1,   178,   173,   167,
    777      179,    -1,    -1,   180,    -1,    52,    -1,    52,   124,    -1,
    778       45,   101,   160,   102,   162,    -1,    44,   162,    45,   101,
    779      160,   102,   124,    -1,    46,   101,   126,   182,   102,   162,
    780       -1,   161,   127,   124,   161,   124,   161,    -1,   203,   161,
    781      124,   161,    -1,    49,   131,   124,    -1,    49,   111,   160,
    782      124,    -1,    48,   124,    -1,    48,   131,   124,    -1,    47,
    783      124,    -1,    47,   131,   124,    -1,    50,   161,   124,    -1,
    784       56,   155,   124,    -1,    56,   124,    -1,    53,   164,   185,
    785       -1,    53,   164,   187,    -1,    53,   164,   185,   187,    -1,
    786      186,    -1,    54,   101,    89,   102,   164,    -1,   186,    54,
    787      101,    89,   102,   164,    -1,    54,   101,   126,   126,   188,
    788      127,   102,   164,   127,    -1,   186,    54,   101,   126,   126,
    789      188,   127,   102,   164,   127,    -1,    55,   164,    -1,   216,
    790       -1,   216,   298,    -1,   216,   346,    -1,   355,   131,    -1,
    791      355,    -1,    57,   190,   101,   133,   102,   124,    -1,    57,
    792      190,   101,   133,   109,   191,   102,   124,    -1,    57,   190,
    793      101,   133,   109,   191,   109,   191,   102,   124,    -1,    57,
    794      190,   101,   133,   109,   191,   109,   191,   109,   194,   102,
    795      124,    -1,    57,   190,    49,   101,   133,   109,   109,   191,
    796      109,   194,   109,   195,   102,   124,    -1,    -1,    11,    -1,
    797       -1,   192,    -1,   193,    -1,   192,   108,   193,    -1,   133,
    798      101,   154,   102,    -1,   103,   154,   104,   133,   101,   154,
    799      102,    -1,    -1,   133,    -1,   194,   108,   133,    -1,   131,
    800       -1,   195,   108,   131,    -1,   127,    -1,   197,    -1,   203,
    801       -1,   197,   126,   203,    -1,   127,    -1,   199,    -1,   213,
    802       -1,   199,   126,   213,    -1,    -1,   201,    -1,    28,   202,
    803      124,    -1,   201,    28,   202,   124,    -1,   263,    -1,   202,
    804      108,   263,    -1,   204,    -1,   213,    -1,   205,   127,   124,
    805       -1,   210,   127,   124,    -1,   207,   127,   124,    -1,   282,
    806      127,   124,    -1,   285,   127,   124,    -1,   206,   266,    -1,
    807      222,   206,   266,    -1,   205,   127,   108,   126,   261,   266,
    808       -1,   356,   261,   300,    -1,   359,   261,   300,    -1,   218,
    809      359,   261,   300,    -1,   208,    -1,   218,   208,    -1,   222,
    810      208,    -1,   222,   218,   208,    -1,   207,   127,   108,   126,
    811      261,    -1,   103,   104,   261,   101,   126,   249,   127,   102,
    812       -1,   359,   261,   101,   126,   249,   127,   102,    -1,   209,
    813      261,   101,   126,   249,   127,   102,    -1,   103,   126,   251,
    814      127,   104,    -1,   103,   126,   251,   127,   108,   126,   252,
    815      127,   104,    -1,     3,   206,    -1,     3,   208,    -1,   210,
    816      127,   108,   126,   131,    -1,     3,   216,   298,    -1,   211,
    817      127,   108,   126,   298,    -1,   218,     3,   216,   298,    -1,
    818      216,     3,   298,    -1,   216,     3,   218,   298,    -1,     3,
    819      131,   123,   155,    -1,   212,   127,   108,   126,   131,   123,
    820      155,    -1,   214,   127,   124,    -1,   211,   127,   124,    -1,
    821      212,   127,   124,    -1,   231,   127,   124,    -1,   215,   298,
    822      300,   266,    -1,   214,   108,   301,   298,   300,   266,    -1,
    823      227,    -1,   231,    -1,   233,    -1,   272,    -1,   228,    -1,
    824      232,    -1,   234,    -1,   273,    -1,    -1,   218,    -1,   219,
    825       -1,   218,   219,    -1,   220,    -1,   303,    -1,    10,    -1,
    826       12,    -1,    11,    -1,    14,    -1,    60,    -1,    -1,    13,
    827      101,   221,   275,   102,    -1,   223,    -1,   218,   223,    -1,
    828      222,   218,   223,    -1,   224,    -1,   223,   224,    -1,   225,
    829       -1,     5,    -1,     7,    -1,     4,    -1,     6,    -1,     8,
    830       -1,     9,    -1,    62,    -1,    64,    -1,    16,    -1,    21,
    831       -1,    20,    -1,    18,    -1,    19,    -1,    17,    -1,    22,
    832       -1,    23,    -1,    15,    -1,    24,    -1,    25,    -1,    26,
    833       -1,   228,    -1,   222,   228,    -1,   227,   224,    -1,   227,
    834      224,   218,    -1,   227,   224,   228,    -1,   229,    -1,   217,
    835      230,   217,    -1,   226,    -1,   218,   226,    -1,   229,   219,
    836       -1,   229,   226,    -1,    27,   101,   265,   102,    -1,    27,
    837      101,   160,   102,    -1,    71,   101,   265,   102,    -1,    71,
    838      101,   160,   102,    -1,   232,    -1,   222,   232,    -1,   231,
    839      224,    -1,   231,   224,   218,    -1,   235,    -1,   218,   235,
    840       -1,   232,   219,    -1,   234,    -1,   222,   234,    -1,   233,
    841      224,    -1,   233,   224,   218,    -1,    67,    -1,   218,    67,
    842       -1,   234,   219,    -1,   236,    -1,   246,    -1,   237,   106,
    843      238,   107,    -1,   237,   263,    -1,   237,   263,   106,   238,
    844      107,    -1,   237,   101,   281,   102,   106,   238,   107,    -1,
    845      237,   274,    -1,    30,   301,    -1,    31,   301,    -1,   239,
    846       -1,   238,   239,    -1,   240,   124,    -1,    38,   240,   124,
    847       -1,   241,   124,    -1,    38,   241,   124,    -1,   355,    -1,
    848      355,   263,    -1,   240,   108,   263,    -1,   240,   108,    -1,
    849      216,   242,    -1,   241,   108,   301,   242,    -1,    -1,   244,
    850       -1,   307,   243,    -1,   320,   243,    -1,   346,    -1,    -1,
    851      244,    -1,   109,   154,    -1,    29,   301,    -1,   245,   106,
    852      247,   361,   107,    -1,   245,   263,   106,   247,   361,   107,
    853       -1,   245,   263,    -1,   263,   248,    -1,   247,   108,   263,
    854      248,    -1,    -1,   123,   154,    -1,    -1,   250,    -1,   252,
    855       -1,   251,    -1,   251,   127,   108,   126,   252,    -1,   252,
    856      127,   108,   126,    89,    -1,   251,   127,   108,   126,    89,
    857       -1,   256,    -1,   252,   127,   108,   126,   256,    -1,   251,
    858      127,   108,   126,   256,    -1,   251,   127,   108,   126,   252,
    859      127,   108,   126,   256,    -1,   257,    -1,   252,   127,   108,
    860      126,   257,    -1,    -1,   254,    -1,   255,    -1,   255,   127,
    861      108,   126,    89,    -1,   259,    -1,   258,    -1,   255,   127,
    862      108,   126,   259,    -1,   255,   127,   108,   126,   258,    -1,
    863      258,    -1,   351,   261,   362,    -1,   359,   261,   362,    -1,
    864      218,   359,   261,   362,    -1,   208,    -1,   259,    -1,   351,
    865       -1,   359,    -1,   218,   359,    -1,   360,    -1,   215,   325,
    866      362,    -1,   215,   329,   362,    -1,   215,    -1,   215,   340,
    867       -1,   131,    -1,   260,   108,   131,    -1,   129,    -1,    67,
    868       -1,    68,    -1,   130,    -1,    67,    -1,    68,    -1,   131,
    869       -1,    67,    -1,    68,    -1,   355,    -1,   216,    -1,   216,
    870      346,    -1,   355,    -1,   360,    -1,   216,    -1,   216,   334,
    871       -1,    -1,   123,   267,    -1,   155,    -1,   106,   268,   361,
    872      107,    -1,   267,    -1,   269,   267,    -1,   268,   108,   267,
    873       -1,   268,   108,   269,   267,    -1,   270,   109,    -1,   263,
    874      109,    -1,   271,    -1,   270,   271,    -1,    73,    -1,   105,
    875      263,    -1,   103,   126,   155,   127,   104,    -1,   103,   126,
    876      299,   127,   104,    -1,   103,   126,   154,    89,   154,   127,
    877      104,    -1,   105,   103,   126,   138,   127,   104,    -1,   273,
    878       -1,   222,   273,    -1,   272,   224,    -1,   272,   224,   218,
    879       -1,   274,    -1,   218,   274,    -1,   273,   219,    -1,    68,
    880      101,   281,   102,    -1,   276,   362,    -1,   275,   108,   276,
    881      362,    -1,    -1,   278,   263,   277,   279,    -1,   216,   325,
    882       -1,    32,    -1,    34,    -1,    33,    -1,    -1,   279,   280,
    883       -1,   121,   263,   101,   281,   102,    -1,   121,   106,   126,
    884      287,   107,    -1,   121,   101,   126,   275,   127,   102,   106,
    885      126,   287,   107,   101,   281,   102,    -1,   265,    -1,   155,
    886       -1,   281,   108,   265,    -1,   281,   108,   155,    -1,    32,
    887      283,    -1,   223,    32,   283,    -1,   282,   108,   283,    -1,
    888      284,   279,    -1,   284,   279,   123,   265,    -1,   263,    -1,
    889      262,   101,   126,   275,   127,   102,    -1,    35,   263,   101,
    890      126,   275,   127,   102,   106,   107,    -1,    -1,    35,   263,
    891      101,   126,   275,   127,   102,   106,   286,   287,   107,    -1,
    892      288,    -1,   287,   126,   288,    -1,   289,   127,   124,    -1,
    893      290,   127,   124,    -1,   206,    -1,   208,    -1,   289,   127,
    894      108,   126,   261,    -1,   216,   298,    -1,   290,   127,   108,
    895      126,   298,    -1,    -1,   292,    -1,   294,    -1,   292,   126,
    896      294,    -1,    -1,   292,    -1,   203,    -1,   296,    -1,   189,
    897       -1,    -1,     5,    75,   295,   106,   293,   107,    -1,    38,
    898      294,    -1,   297,    -1,   312,   164,    -1,   316,   126,   198,
    899      164,    -1,   207,   164,    -1,   215,   312,   164,    -1,   218,
    900      312,   164,    -1,   222,   312,   164,    -1,   222,   218,   312,
    901      164,    -1,   215,   316,   126,   198,   164,    -1,   218,   316,
    902      126,   198,   164,    -1,   222,   316,   126,   198,   164,    -1,
    903      222,   218,   316,   126,   198,   164,    -1,   307,    -1,   312,
    904       -1,   320,    -1,   154,   115,   154,    -1,    -1,    57,   101,
    905      133,   102,   301,    -1,    -1,   302,    -1,   303,    -1,   302,
    906      303,    -1,    37,   101,   101,   304,   102,   102,    -1,   305,
    907       -1,   304,   108,   305,    -1,    -1,   306,    -1,   306,   101,
    908      161,   102,    -1,   261,    -1,   225,    -1,   226,    -1,   219,
    909       -1,   308,   301,    -1,   309,    -1,   310,   301,    -1,   311,
    910      301,    -1,   129,    -1,   101,   308,   102,    -1,   111,   307,
    911       -1,   111,   218,   307,    -1,   101,   309,   102,    -1,   308,
    912      338,    -1,   101,   309,   102,   338,    -1,   101,   310,   102,
    913      339,    -1,   101,   310,   102,    -1,   101,   309,   102,   101,
    914      126,   253,   127,   102,    -1,   101,   311,   102,    -1,   313,
    915      301,    -1,   314,    -1,   315,   301,    -1,   308,   101,   126,
    916      253,   127,   102,    -1,   101,   314,   102,   101,   126,   253,
    917      127,   102,    -1,   101,   313,   102,    -1,   111,   312,    -1,
    918      111,   218,   312,    -1,   101,   314,   102,    -1,   101,   314,
    919      102,   338,    -1,   101,   315,   102,   339,    -1,   101,   315,
    920      102,    -1,   317,    -1,   318,    -1,   319,    -1,   308,   101,
    921      260,   102,    -1,   101,   318,   102,   101,   260,   102,    -1,
    922      101,   317,   102,    -1,   111,   316,    -1,   111,   218,   316,
    923       -1,   101,   318,   102,    -1,   101,   318,   102,   338,    -1,
    924      101,   319,   102,   339,    -1,   101,   319,   102,    -1,   321,
    925      301,    -1,   322,    -1,   323,   301,    -1,   324,   301,    -1,
    926      330,    -1,   101,   321,   102,    -1,   111,   320,    -1,   111,
    927      218,   320,    -1,   101,   322,   102,    -1,   321,   338,    -1,
    928      101,   322,   102,   338,    -1,   101,   323,   102,   339,    -1,
    929      101,   323,   102,    -1,   321,   101,   126,   253,   127,   102,
    930       -1,   101,   322,   102,   101,   126,   253,   127,   102,    -1,
    931      101,   324,   102,    -1,   308,   301,    -1,   326,    -1,   327,
    932      301,    -1,   328,   301,    -1,   111,   325,    -1,   111,   218,
    933      325,    -1,   101,   326,   102,    -1,   308,   344,    -1,   101,
    934      326,   102,   338,    -1,   101,   327,   102,   339,    -1,   101,
    935      327,   102,    -1,   308,   101,   126,   253,   127,   102,    -1,
    936      101,   326,   102,   101,   126,   253,   127,   102,    -1,   101,
    937      328,   102,    -1,   330,   301,    -1,   331,    -1,   332,   301,
    938       -1,   333,   301,    -1,    67,    -1,    68,    -1,   111,   329,
    939       -1,   111,   218,   329,    -1,   101,   331,   102,    -1,   330,
    940      344,    -1,   101,   331,   102,   344,    -1,   330,   101,   126,
    941      253,   127,   102,    -1,   101,   331,   102,   101,   126,   253,
    942      127,   102,    -1,   335,    -1,   336,   301,    -1,   337,   301,
    943       -1,   111,    -1,   111,   218,    -1,   111,   334,    -1,   111,
    944      218,   334,    -1,   101,   335,   102,    -1,   338,    -1,   101,
    945      335,   102,   338,    -1,   101,   336,   102,   339,    -1,   101,
    946      336,   102,    -1,   101,   126,   253,   127,   102,    -1,   101,
    947      335,   102,   101,   126,   253,   127,   102,    -1,   101,   337,
    948      102,    -1,   103,   104,    -1,   103,   104,   339,    -1,   339,
    949       -1,   103,   126,   155,   127,   104,    -1,   103,   126,   111,
    950      127,   104,    -1,   339,   103,   126,   155,   127,   104,    -1,
    951      339,   103,   126,   111,   127,   104,    -1,   341,    -1,   342,
    952      301,    -1,   343,   301,    -1,   111,    -1,   111,   218,    -1,
    953      111,   340,    -1,   111,   218,   340,    -1,   101,   341,   102,
    954       -1,   344,    -1,   101,   341,   102,   344,    -1,   101,   342,
    955      102,   339,    -1,   101,   342,   102,    -1,   101,   126,   253,
    956      127,   102,    -1,   101,   341,   102,   101,   126,   253,   127,
    957      102,    -1,   101,   343,   102,    -1,   345,    -1,   345,   339,
    958       -1,   339,    -1,   103,   104,    -1,   103,   126,   218,   111,
    959      127,   104,    -1,   103,   126,   218,   127,   104,    -1,   103,
    960      126,   218,   155,   127,   104,    -1,   103,   126,     7,   217,
    961      155,   127,   104,    -1,   103,   126,   218,     7,   155,   127,
    962      104,    -1,   347,    -1,   348,   301,    -1,   349,   301,    -1,
    963      111,    -1,   111,   218,    -1,   111,   346,    -1,   111,   218,
    964      346,    -1,   101,   347,   102,    -1,   338,    -1,   101,   347,
    965      102,   338,    -1,   101,   348,   102,   339,    -1,   101,   348,
    966      102,    -1,   101,   347,   102,   101,   126,   253,   127,   102,
    967       -1,   101,   349,   102,    -1,   351,    -1,   359,    -1,   218,
    968      359,    -1,   352,    -1,   353,    -1,   111,   216,    -1,   218,
    969      111,   216,    -1,   111,   360,    -1,   218,   111,   360,    -1,
    970      111,   350,    -1,   218,   111,   350,    -1,   103,   104,   216,
    971       -1,   354,   216,    -1,   103,   104,   339,   216,    -1,   354,
    972      339,   216,    -1,   339,   216,    -1,   103,   104,   352,    -1,
    973      354,   352,    -1,   103,   104,   339,   352,    -1,   354,   339,
    974      352,    -1,   339,   352,    -1,   103,   126,   218,   111,   127,
    975      104,    -1,   103,   126,   218,   155,   127,   104,    -1,   103,
    976      126,   222,   155,   127,   104,    -1,   103,   126,   222,   218,
    977      155,   127,   104,    -1,   359,    -1,   218,   359,    -1,   356,
    978       -1,   357,    -1,   358,    -1,   111,   216,    -1,   218,   111,
    979      216,    -1,   111,   360,    -1,   218,   111,   360,    -1,   111,
    980      355,    -1,   218,   111,   355,    -1,   103,   104,   216,    -1,
    981      103,   104,   339,   216,    -1,   339,   216,    -1,   103,   104,
    982      357,    -1,   103,   104,   339,   357,    -1,   339,   357,    -1,
    983      103,   126,   252,   127,   104,    -1,   103,   104,   101,   249,
    984      102,    -1,   359,   101,   126,   249,   127,   102,    -1,   209,
    985      101,   126,   249,   127,   102,    -1,    -1,   108,    -1,    -1,
    986      123,   155,    -1
     739     302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
     740      -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
     741      -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,    82,
     742      -1,   141,    82,    -1,    72,    -1,   140,    -1,   109,   169,
     743     110,    -1,   109,   173,   110,    -1,   142,    -1,   143,   111,
     744     134,   164,   135,   112,    -1,   143,   109,   144,   110,    -1,
     745     143,   113,   139,    -1,   143,   113,   111,   134,   146,   135,
     746     112,    -1,   143,    85,   139,    -1,   143,    85,   111,   134,
     747     146,   135,   112,    -1,   143,    86,    -1,   143,    87,    -1,
     748     109,   275,   110,   114,   279,   372,   115,    -1,   143,   114,
     749     144,   115,    -1,   145,    -1,   144,   116,   145,    -1,    -1,
     750     164,    -1,   139,   117,   164,    -1,   111,   134,   164,   135,
     751     112,   117,   164,    -1,   111,   134,   164,   116,   167,   135,
     752     112,   117,   164,    -1,   147,    -1,   146,   116,   147,    -1,
     753     139,    -1,   139,   113,   147,    -1,   139,   113,   111,   134,
     754     146,   135,   112,    -1,   139,    85,   147,    -1,   139,    85,
     755     111,   134,   146,   135,   112,    -1,   143,    -1,   136,    -1,
     756     141,    -1,    40,   151,    -1,   149,   151,    -1,   150,   151,
     757      -1,    86,   148,    -1,    87,   148,    -1,    37,   148,    -1,
     758      37,   109,   275,   110,    -1,    38,   109,   275,   116,   139,
     759     110,    -1,    76,    -1,    76,   109,   276,   110,    -1,    76,
     760     109,   145,   110,    -1,    66,   148,    -1,    66,   109,   275,
     761     110,    -1,   118,    -1,   119,    -1,    94,    -1,   120,    -1,
     762     121,    -1,   122,    -1,   123,    -1,   148,    -1,   109,   275,
     763     110,   151,    -1,   109,   275,   110,   166,    -1,   151,    -1,
     764     152,   118,   151,    -1,   152,   124,   151,    -1,   152,   125,
     765     151,    -1,   152,    -1,   153,   120,   152,    -1,   153,   121,
     766     152,    -1,   153,    -1,   154,    88,   153,    -1,   154,    89,
     767     153,    -1,   154,    -1,   155,   126,   154,    -1,   155,   127,
     768     154,    -1,   155,    90,   154,    -1,   155,    91,   154,    -1,
     769     155,    -1,   156,    92,   155,    -1,   156,    93,   155,    -1,
     770     156,    -1,   157,   119,   156,    -1,   157,    -1,   158,   128,
     771     157,    -1,   158,    -1,   159,   129,   158,    -1,   159,    -1,
     772     160,    94,   159,    -1,   160,    -1,   161,    95,   160,    -1,
     773     161,    -1,   161,   130,   169,   117,   162,    -1,   161,   130,
     774     117,   162,    -1,   161,   130,   169,   117,   166,    -1,   162,
     775      -1,   162,    -1,   148,   131,   164,    -1,   148,   168,   164,
     776      -1,   166,   373,    -1,    -1,   164,    -1,   111,   112,    -1,
     777     111,   134,   164,   135,   112,    -1,   111,   134,   116,   167,
     778     135,   112,    -1,   111,   134,   164,   116,   167,   135,   112,
     779      -1,   165,    -1,   167,   116,   165,    -1,    97,    -1,    98,
     780      -1,    99,    -1,   100,    -1,   101,    -1,   102,    -1,   103,
     781      -1,   104,    -1,   105,    -1,   106,    -1,   164,    -1,   169,
     782     116,   164,    -1,    -1,   169,    -1,   172,    -1,   173,    -1,
     783     177,    -1,   178,    -1,   190,    -1,   192,    -1,   193,    -1,
     784     198,    -1,   128,   143,   114,   144,   115,   132,    -1,    72,
     785     117,   312,   171,    -1,   114,   115,    -1,   114,   134,   134,
     786     209,   174,   135,   115,    -1,   175,    -1,   174,   134,   175,
     787      -1,   212,    -1,    40,   212,    -1,   308,    -1,   171,   135,
     788      -1,   171,    -1,   176,   171,    -1,   170,   132,    -1,    41,
     789     109,   169,   110,   171,    -1,    41,   109,   169,   110,   171,
     790      42,   171,    -1,    43,   109,   169,   110,   183,    -1,    43,
     791     109,   169,   110,   114,   134,   205,   184,   115,    -1,    53,
     792     109,   169,   110,   183,    -1,    53,   109,   169,   110,   114,
     793     134,   205,   186,   115,    -1,   163,    -1,   163,    96,   163,
     794      -1,   310,    -1,   179,    -1,   180,   116,   179,    -1,    44,
     795     180,   117,    -1,    45,   117,    -1,   181,    -1,   182,   181,
     796      -1,   182,   171,    -1,    -1,   185,    -1,   182,   176,    -1,
     797     185,   182,   176,    -1,    -1,   187,    -1,   182,   189,    -1,
     798     182,   176,   188,    -1,   187,   182,   189,    -1,   187,   182,
     799     176,   188,    -1,    -1,   189,    -1,    56,    -1,    56,   132,
     800      -1,    47,   109,   169,   110,   171,    -1,    46,   171,    47,
     801     109,   169,   110,   132,    -1,    48,   109,   134,   191,   110,
     802     171,    -1,   170,   135,   132,   170,   132,   170,    -1,   212,
     803     170,   132,   170,    -1,    51,    72,   132,    -1,    51,   118,
     804     169,   132,    -1,    50,   132,    -1,    50,    72,   132,    -1,
     805      49,   132,    -1,    49,    72,   132,    -1,    52,   170,   132,
     806      -1,    61,   165,   132,    -1,    62,   165,   132,    -1,    62,
     807     165,    63,   164,   132,    -1,    57,   173,   194,    -1,    57,
     808     173,   196,    -1,    57,   173,   194,   196,    -1,   195,    -1,
     809      58,   109,    96,   110,   173,    -1,   195,    58,   109,    96,
     810     110,   173,    -1,    59,   109,    96,   110,   173,    -1,   195,
     811      59,   109,    96,   110,   173,    -1,    58,   109,   134,   134,
     812     197,   135,   110,   173,   135,    -1,   195,    58,   109,   134,
     813     134,   197,   135,   110,   173,   135,    -1,    59,   109,   134,
     814     134,   197,   135,   110,   173,   135,    -1,   195,    59,   109,
     815     134,   134,   197,   135,   110,   173,   135,    -1,    60,   173,
     816      -1,   225,    -1,   225,   309,    -1,   225,   357,    -1,   366,
     817     139,    -1,   366,    -1,    64,   199,   109,   141,   110,   132,
     818      -1,    64,   199,   109,   141,   117,   200,   110,   132,    -1,
     819      64,   199,   109,   141,   117,   200,   117,   200,   110,   132,
     820      -1,    64,   199,   109,   141,   117,   200,   117,   200,   117,
     821     203,   110,   132,    -1,    64,   199,    51,   109,   141,   117,
     822     117,   200,   117,   203,   117,   204,   110,   132,    -1,    -1,
     823      11,    -1,    -1,   201,    -1,   202,    -1,   201,   116,   202,
     824      -1,   141,   109,   163,   110,    -1,   111,   163,   112,   141,
     825     109,   163,   110,    -1,    -1,   141,    -1,   203,   116,   141,
     826      -1,   139,    -1,   204,   116,   139,    -1,   135,    -1,   206,
     827      -1,   212,    -1,   206,   134,   212,    -1,   135,    -1,   208,
     828      -1,   222,    -1,   208,   134,   222,    -1,    -1,   210,    -1,
     829      29,   211,   132,    -1,   210,    29,   211,   132,    -1,   274,
     830      -1,   211,   116,   274,    -1,   213,    -1,   222,    -1,   214,
     831     135,   132,    -1,   219,   135,   132,    -1,   216,   135,   132,
     832      -1,   293,   135,   132,    -1,   296,   135,   132,    -1,   215,
     833     277,    -1,   231,   215,   277,    -1,   214,   135,   116,   134,
     834     272,   277,    -1,   367,   272,   311,    -1,   370,   272,   311,
     835      -1,   227,   370,   272,   311,    -1,   217,    -1,   227,   217,
     836      -1,   231,   217,    -1,   231,   227,   217,    -1,   216,   135,
     837     116,   134,   272,    -1,   111,   112,   272,   109,   134,   260,
     838     135,   110,    -1,   370,   272,   109,   134,   260,   135,   110,
     839      -1,   218,   272,   109,   134,   260,   135,   110,    -1,   111,
     840     134,   262,   135,   112,    -1,   111,   134,   262,   135,   116,
     841     134,   263,   135,   112,    -1,     3,   215,    -1,     3,   217,
     842      -1,   219,   135,   116,   134,   139,    -1,     3,   225,   309,
     843      -1,   220,   135,   116,   134,   309,    -1,   227,     3,   225,
     844     309,    -1,   225,     3,   309,    -1,   225,     3,   227,   309,
     845      -1,     3,   139,   131,   164,    -1,   221,   135,   116,   134,
     846     139,   131,   164,    -1,   223,   135,   132,    -1,   220,   135,
     847     132,    -1,   221,   135,   132,    -1,   240,   135,   132,    -1,
     848     224,   309,   311,   277,    -1,   223,   116,   312,   309,   311,
     849     277,    -1,   236,    -1,   240,    -1,   242,    -1,   283,    -1,
     850     237,    -1,   241,    -1,   243,    -1,   284,    -1,    -1,   227,
     851      -1,   228,    -1,   227,   228,    -1,   229,    -1,   314,    -1,
     852      10,    -1,    12,    -1,    11,    -1,    14,    -1,    67,    -1,
     853      -1,    13,   109,   230,   286,   110,    -1,   232,    -1,   227,
     854     232,    -1,   231,   227,   232,    -1,   233,    -1,   232,   233,
     855      -1,   234,    -1,     5,    -1,     7,    -1,     4,    -1,     6,
     856      -1,     8,    -1,     9,    -1,    69,    -1,    71,    -1,    16,
     857      -1,    21,    -1,    20,    -1,    18,    -1,    19,    -1,    17,
     858      -1,    22,    -1,    23,    -1,    15,    -1,    25,    -1,    26,
     859      -1,    27,    -1,    24,    -1,   237,    -1,   231,   237,    -1,
     860     236,   233,    -1,   236,   233,   227,    -1,   236,   233,   237,
     861      -1,   238,    -1,   226,   239,   226,    -1,   235,    -1,   227,
     862     235,    -1,   238,   228,    -1,   238,   235,    -1,    28,   109,
     863     276,   110,    -1,    28,   109,   169,   110,    -1,    78,   109,
     864     276,   110,    -1,    78,   109,   169,   110,    -1,   241,    -1,
     865     231,   241,    -1,   240,   233,    -1,   240,   233,   227,    -1,
     866     244,    -1,   227,   244,    -1,   241,   228,    -1,   243,    -1,
     867     231,   243,    -1,   242,   233,    -1,   242,   233,   227,    -1,
     868      74,    -1,   227,    74,    -1,   243,   228,    -1,   245,    -1,
     869     256,    -1,   247,   114,   248,   115,    -1,   247,   274,    -1,
     870      -1,   247,   274,   246,   114,   248,   115,    -1,   247,   109,
     871     292,   110,   114,   248,   115,    -1,   247,   285,    -1,    31,
     872     312,    -1,    32,   312,    -1,    -1,   248,   249,    -1,   250,
     873     132,    -1,    40,   250,   132,    -1,   251,   132,    -1,    40,
     874     251,   132,    -1,   366,    -1,   366,   274,    -1,   250,   116,
     875     274,    -1,   250,   116,    -1,   225,   252,    -1,   251,   116,
     876     312,   252,    -1,    -1,   254,    -1,   318,   253,    -1,   331,
     877     253,    -1,   357,    -1,    -1,   254,    -1,   117,   163,    -1,
     878      30,   312,    -1,   255,   114,   258,   372,   115,    -1,   255,
     879     274,    -1,    -1,   255,   274,   257,   114,   258,   372,   115,
     880      -1,   274,   259,    -1,   258,   116,   274,   259,    -1,    -1,
     881     131,   163,    -1,    -1,   261,    -1,   263,    -1,   262,    -1,
     882     262,   135,   116,   134,   263,    -1,   263,   135,   116,   134,
     883      96,    -1,   262,   135,   116,   134,    96,    -1,   267,    -1,
     884     263,   135,   116,   134,   267,    -1,   262,   135,   116,   134,
     885     267,    -1,   262,   135,   116,   134,   263,   135,   116,   134,
     886     267,    -1,   268,    -1,   263,   135,   116,   134,   268,    -1,
     887      -1,   265,    -1,   266,    -1,   266,   135,   116,   134,    96,
     888      -1,   270,    -1,   269,    -1,   266,   135,   116,   134,   270,
     889      -1,   266,   135,   116,   134,   269,    -1,   269,    -1,   362,
     890     272,   373,    -1,   370,   272,   373,    -1,   227,   370,   272,
     891     373,    -1,   217,    -1,   270,    -1,   362,    -1,   370,    -1,
     892     227,   370,    -1,   371,    -1,   224,   336,   373,    -1,   224,
     893     340,   373,    -1,   224,    -1,   224,   351,    -1,   139,    -1,
     894     271,   116,   139,    -1,   137,    -1,    74,    -1,    75,    -1,
     895     138,    -1,    74,    -1,    75,    -1,   139,    -1,    74,    -1,
     896      75,    -1,   366,    -1,   225,    -1,   225,   357,    -1,   366,
     897      -1,   371,    -1,   225,    -1,   225,   345,    -1,    -1,   131,
     898     278,    -1,   107,   278,    -1,   164,    -1,   114,   279,   372,
     899     115,    -1,    -1,   278,    -1,   280,   278,    -1,   279,   116,
     900     278,    -1,   279,   116,   280,   278,    -1,   281,   117,    -1,
     901     274,   117,    -1,   282,    -1,   281,   282,    -1,    80,    -1,
     902     113,   274,    -1,   111,   134,   164,   135,   112,    -1,   111,
     903     134,   310,   135,   112,    -1,   111,   134,   163,    96,   163,
     904     135,   112,    -1,   113,   111,   134,   146,   135,   112,    -1,
     905     284,    -1,   231,   284,    -1,   283,   233,    -1,   283,   233,
     906     227,    -1,   285,    -1,   227,   285,    -1,   284,   228,    -1,
     907      75,   109,   292,   110,    -1,   287,   373,    -1,   286,   116,
     908     287,   373,    -1,    -1,   289,   274,   288,   290,    -1,   225,
     909     336,    -1,    33,    -1,    35,    -1,    34,    -1,    -1,   290,
     910     291,    -1,   129,   274,   109,   292,   110,    -1,   129,   114,
     911     134,   298,   115,    -1,   129,   109,   134,   286,   135,   110,
     912     114,   134,   298,   115,   109,   292,   110,    -1,   276,    -1,
     913     164,    -1,   292,   116,   276,    -1,   292,   116,   164,    -1,
     914      33,   294,    -1,   232,    33,   294,    -1,   293,   116,   294,
     915      -1,   295,   290,    -1,   295,   290,   131,   276,    -1,   274,
     916      -1,   273,   109,   134,   286,   135,   110,    -1,    36,   274,
     917     109,   134,   286,   135,   110,   114,   115,    -1,    -1,    36,
     918     274,   109,   134,   286,   135,   110,   114,   297,   298,   115,
     919      -1,   299,    -1,   298,   134,   299,    -1,   300,   135,   132,
     920      -1,   301,   135,   132,    -1,   215,    -1,   217,    -1,   300,
     921     135,   116,   134,   272,    -1,   225,   309,    -1,   301,   135,
     922     116,   134,   309,    -1,    -1,   303,    -1,   305,    -1,   303,
     923     134,   305,    -1,    -1,   303,    -1,   212,    -1,   307,    -1,
     924     198,    -1,    -1,     5,    82,   306,   114,   304,   115,    -1,
     925      40,   305,    -1,   308,    -1,   323,   173,    -1,   327,   134,
     926     207,   173,    -1,   216,   173,    -1,   224,   323,   173,    -1,
     927     227,   323,   173,    -1,   231,   323,   173,    -1,   231,   227,
     928     323,   173,    -1,   224,   327,   134,   207,   173,    -1,   227,
     929     327,   134,   207,   173,    -1,   231,   327,   134,   207,   173,
     930      -1,   231,   227,   327,   134,   207,   173,    -1,   318,    -1,
     931     331,    -1,   323,    -1,   163,   123,   163,    -1,    -1,    64,
     932     109,   141,   110,   312,    -1,    -1,   313,    -1,   314,    -1,
     933     313,   314,    -1,    39,   109,   109,   315,   110,   110,    -1,
     934     316,    -1,   315,   116,   316,    -1,    -1,   317,    -1,   317,
     935     109,   170,   110,    -1,   272,    -1,   234,    -1,   235,    -1,
     936     228,    -1,   319,   312,    -1,   320,    -1,   321,   312,    -1,
     937     322,   312,    -1,   137,    -1,   109,   319,   110,    -1,   149,
     938     318,    -1,   149,   227,   318,    -1,   109,   320,   110,    -1,
     939     319,   349,    -1,   109,   320,   110,   349,    -1,   109,   321,
     940     110,   350,    -1,   109,   321,   110,    -1,   109,   320,   110,
     941     109,   134,   264,   135,   110,    -1,   109,   322,   110,    -1,
     942     324,   312,    -1,   325,    -1,   326,   312,    -1,   319,   109,
     943     134,   264,   135,   110,    -1,   109,   325,   110,   109,   134,
     944     264,   135,   110,    -1,   109,   324,   110,    -1,   149,   323,
     945      -1,   149,   227,   323,    -1,   109,   325,   110,    -1,   109,
     946     325,   110,   349,    -1,   109,   326,   110,   350,    -1,   109,
     947     326,   110,    -1,   328,    -1,   329,    -1,   330,    -1,   319,
     948     109,   271,   110,    -1,   109,   329,   110,   109,   271,   110,
     949      -1,   109,   328,   110,    -1,   149,   327,    -1,   149,   227,
     950     327,    -1,   109,   329,   110,    -1,   109,   329,   110,   349,
     951      -1,   109,   330,   110,   350,    -1,   109,   330,   110,    -1,
     952     332,   312,    -1,   333,    -1,   334,   312,    -1,   335,   312,
     953      -1,   341,    -1,   109,   332,   110,    -1,   149,   331,    -1,
     954     149,   227,   331,    -1,   109,   333,   110,    -1,   332,   349,
     955      -1,   109,   333,   110,   349,    -1,   109,   334,   110,   350,
     956      -1,   109,   334,   110,    -1,   332,   109,   134,   264,   135,
     957     110,    -1,   109,   333,   110,   109,   134,   264,   135,   110,
     958      -1,   109,   335,   110,    -1,   319,   312,    -1,   337,    -1,
     959     338,   312,    -1,   339,   312,    -1,   149,   336,    -1,   149,
     960     227,   336,    -1,   109,   337,   110,    -1,   319,   355,    -1,
     961     109,   337,   110,   349,    -1,   109,   338,   110,   350,    -1,
     962     109,   338,   110,    -1,   319,   109,   134,   264,   135,   110,
     963      -1,   109,   337,   110,   109,   134,   264,   135,   110,    -1,
     964     109,   339,   110,    -1,   341,   312,    -1,   342,    -1,   343,
     965     312,    -1,   344,   312,    -1,    74,    -1,    75,    -1,   149,
     966     340,    -1,   149,   227,   340,    -1,   109,   342,   110,    -1,
     967     341,   355,    -1,   109,   342,   110,   355,    -1,   341,   109,
     968     134,   264,   135,   110,    -1,   109,   342,   110,   109,   134,
     969     264,   135,   110,    -1,   346,    -1,   347,   312,    -1,   348,
     970     312,    -1,   149,    -1,   149,   227,    -1,   149,   345,    -1,
     971     149,   227,   345,    -1,   109,   346,   110,    -1,   349,    -1,
     972     109,   346,   110,   349,    -1,   109,   347,   110,   350,    -1,
     973     109,   347,   110,    -1,   109,   134,   264,   135,   110,    -1,
     974     109,   346,   110,   109,   134,   264,   135,   110,    -1,   109,
     975     348,   110,    -1,   111,   112,    -1,   111,   112,   350,    -1,
     976     350,    -1,   111,   134,   164,   135,   112,    -1,   111,   134,
     977     118,   135,   112,    -1,   350,   111,   134,   164,   135,   112,
     978      -1,   350,   111,   134,   118,   135,   112,    -1,   352,    -1,
     979     353,   312,    -1,   354,   312,    -1,   149,    -1,   149,   227,
     980      -1,   149,   351,    -1,   149,   227,   351,    -1,   109,   352,
     981     110,    -1,   355,    -1,   109,   352,   110,   355,    -1,   109,
     982     353,   110,   350,    -1,   109,   353,   110,    -1,   109,   134,
     983     264,   135,   110,    -1,   109,   352,   110,   109,   134,   264,
     984     135,   110,    -1,   109,   354,   110,    -1,   356,    -1,   356,
     985     350,    -1,   350,    -1,   111,   112,    -1,   111,   134,   227,
     986     118,   135,   112,    -1,   111,   134,   227,   135,   112,    -1,
     987     111,   134,   227,   164,   135,   112,    -1,   111,   134,     7,
     988     226,   164,   135,   112,    -1,   111,   134,   227,     7,   164,
     989     135,   112,    -1,   358,    -1,   359,   312,    -1,   360,   312,
     990      -1,   149,    -1,   149,   227,    -1,   149,   357,    -1,   149,
     991     227,   357,    -1,   109,   358,   110,    -1,   349,    -1,   109,
     992     358,   110,   349,    -1,   109,   359,   110,   350,    -1,   109,
     993     359,   110,    -1,   109,   358,   110,   109,   134,   264,   135,
     994     110,    -1,   109,   360,   110,    -1,   362,    -1,   370,    -1,
     995     227,   370,    -1,   363,    -1,   364,    -1,   149,   225,    -1,
     996     227,   149,   225,    -1,   149,   371,    -1,   227,   149,   371,
     997      -1,   149,   361,    -1,   227,   149,   361,    -1,   111,   112,
     998     225,    -1,   365,   225,    -1,   111,   112,   350,   225,    -1,
     999     365,   350,   225,    -1,   350,   225,    -1,   111,   112,   363,
     1000      -1,   365,   363,    -1,   111,   112,   350,   363,    -1,   365,
     1001     350,   363,    -1,   350,   363,    -1,   111,   134,   227,   118,
     1002     135,   112,    -1,   111,   134,   227,   164,   135,   112,    -1,
     1003     111,   134,   231,   164,   135,   112,    -1,   111,   134,   231,
     1004     227,   164,   135,   112,    -1,   370,    -1,   227,   370,    -1,
     1005     367,    -1,   368,    -1,   369,    -1,   149,   225,    -1,   227,
     1006     149,   225,    -1,   149,   371,    -1,   227,   149,   371,    -1,
     1007     149,   366,    -1,   227,   149,   366,    -1,   111,   112,   225,
     1008      -1,   111,   112,   350,   225,    -1,   350,   225,    -1,   111,
     1009     112,   368,    -1,   111,   112,   350,   368,    -1,   350,   368,
     1010      -1,   111,   134,   263,   135,   112,    -1,   111,   112,   109,
     1011     260,   110,    -1,   370,   109,   134,   260,   135,   110,    -1,
     1012     218,   109,   134,   260,   135,   110,    -1,    -1,   116,    -1,
     1013      -1,   131,   164,    -1
    9871014};
    9881015
     
    9901017static const yytype_uint16 yyrline[] =
    9911018{
    992        0,   288,   288,   294,   303,   304,   305,   309,   310,   311,
    993      315,   316,   320,   324,   325,   329,   330,   336,   338,   340,
    994      342,   347,   348,   354,   356,   358,   359,   361,   362,   364,
    995      367,   372,   373,   379,   380,   381,   386,   388,   393,   394,
    996      398,   400,   402,   404,   406,   411,   414,   416,   418,   420,
    997      422,   424,   426,   428,   434,   436,   438,   440,   442,   444,
    998      446,   448,   453,   454,   455,   456,   460,   461,   463,   468,
    999      469,   471,   473,   478,   479,   481,   486,   487,   489,   494,
    1000      495,   497,   499,   501,   506,   507,   509,   514,   515,   520,
    1001      521,   526,   527,   532,   533,   538,   539,   544,   545,   547,
    1002      549,   554,   559,   560,   562,   564,   570,   571,   577,   579,
    1003      581,   583,   588,   589,   594,   595,   596,   597,   598,   599,
    1004      600,   601,   602,   603,   607,   608,   614,   615,   621,   622,
    1005      623,   624,   625,   626,   627,   628,   632,   639,   641,   651,
    1006      652,   657,   659,   661,   663,   667,   668,   673,   678,   681,
    1007      683,   685,   690,   692,   700,   701,   703,   707,   708,   713,
    1008      714,   719,   720,   724,   729,   730,   734,   736,   742,   743,
    1009      747,   749,   751,   753,   759,   760,   764,   765,   769,   771,
    1010      773,   778,   780,   785,   787,   791,   794,   798,   801,   805,
    1011      807,   809,   814,   816,   818,   827,   829,   831,   836,   838,
    1012      843,   856,   857,   862,   864,   869,   873,   875,   877,   879,
    1013      881,   887,   888,   894,   895,   899,   900,   905,   907,   913,
    1014      914,   916,   921,   923,   930,   932,   936,   937,   942,   944,
    1015      948,   949,   953,   955,   959,   960,   964,   965,   969,   970,
    1016      985,   986,   987,   988,   989,   993,   998,  1005,  1015,  1020,
    1017     1025,  1033,  1038,  1043,  1048,  1053,  1061,  1083,  1088,  1095,
    1018     1097,  1104,  1109,  1114,  1125,  1130,  1135,  1140,  1145,  1154,
    1019     1159,  1167,  1168,  1169,  1170,  1176,  1181,  1189,  1190,  1191,
    1020     1192,  1196,  1197,  1198,  1199,  1204,  1205,  1214,  1215,  1220,
    1021     1221,  1226,  1228,  1230,  1232,  1234,  1237,  1236,  1248,  1249,
    1022     1251,  1261,  1262,  1267,  1271,  1273,  1275,  1277,  1279,  1281,
    1023     1283,  1285,  1290,  1292,  1294,  1296,  1298,  1300,  1302,  1304,
    1024     1306,  1308,  1310,  1312,  1318,  1319,  1321,  1323,  1325,  1330,
    1025     1331,  1337,  1338,  1340,  1342,  1347,  1349,  1351,  1353,  1358,
    1026     1359,  1361,  1363,  1368,  1369,  1371,  1376,  1377,  1379,  1381,
    1027     1386,  1388,  1390,  1395,  1396,  1400,  1402,  1404,  1406,  1408,
    1028     1413,  1415,  1420,  1422,  1427,  1428,  1430,  1431,  1436,  1437,
    1029     1439,  1441,  1446,  1448,  1454,  1455,  1457,  1460,  1463,  1468,
    1030     1469,  1474,  1479,  1483,  1485,  1487,  1492,  1494,  1500,  1501,
    1031     1509,  1510,  1514,  1515,  1516,  1518,  1520,  1527,  1528,  1530,
    1032     1532,  1537,  1538,  1544,  1545,  1549,  1550,  1555,  1556,  1557,
    1033     1559,  1567,  1568,  1570,  1573,  1575,  1579,  1580,  1581,  1583,
    1034     1585,  1589,  1594,  1602,  1603,  1612,  1614,  1619,  1620,  1621,
    1035     1625,  1626,  1627,  1631,  1632,  1633,  1637,  1638,  1639,  1644,
    1036     1645,  1646,  1647,  1653,  1654,  1659,  1660,  1664,  1665,  1666,
    1037     1667,  1682,  1683,  1688,  1689,  1696,  1698,  1700,  1703,  1705,
    1038     1707,  1730,  1731,  1733,  1735,  1740,  1741,  1743,  1748,  1753,
    1039     1754,  1760,  1759,  1763,  1767,  1769,  1771,  1777,  1778,  1783,
    1040     1788,  1790,  1795,  1797,  1798,  1800,  1805,  1807,  1809,  1814,
    1041     1816,  1821,  1826,  1834,  1840,  1839,  1853,  1854,  1859,  1860,
    1042     1864,  1869,  1874,  1882,  1887,  1898,  1899,  1910,  1911,  1917,
    1043     1918,  1922,  1923,  1924,  1927,  1926,  1937,  1942,  1947,  1953,
    1044     1962,  1968,  1974,  1980,  1986,  1994,  2000,  2008,  2014,  2023,
    1045     2024,  2025,  2029,  2033,  2035,  2040,  2041,  2045,  2046,  2051,
    1046     2057,  2058,  2061,  2063,  2064,  2068,  2069,  2070,  2071,  2105,
    1047     2107,  2108,  2110,  2115,  2120,  2125,  2127,  2129,  2134,  2136,
    1048     2138,  2140,  2145,  2147,  2157,  2159,  2160,  2165,  2167,  2169,
    1049     2174,  2176,  2178,  2183,  2185,  2187,  2196,  2197,  2198,  2202,
    1050     2204,  2206,  2211,  2213,  2215,  2220,  2222,  2224,  2239,  2241,
    1051     2242,  2244,  2249,  2250,  2255,  2257,  2259,  2264,  2266,  2268,
    1052     2270,  2275,  2277,  2279,  2289,  2291,  2292,  2294,  2299,  2301,
    1053     2303,  2308,  2310,  2312,  2314,  2319,  2321,  2323,  2354,  2356,
    1054     2357,  2359,  2364,  2369,  2377,  2379,  2381,  2386,  2388,  2393,
    1055     2395,  2409,  2410,  2412,  2417,  2419,  2421,  2423,  2425,  2430,
    1056     2431,  2433,  2435,  2440,  2442,  2444,  2450,  2452,  2454,  2458,
    1057     2460,  2462,  2464,  2478,  2479,  2481,  2486,  2488,  2490,  2492,
    1058     2494,  2499,  2500,  2502,  2504,  2509,  2511,  2513,  2519,  2520,
    1059     2522,  2531,  2534,  2536,  2539,  2541,  2543,  2556,  2557,  2559,
    1060     2564,  2566,  2568,  2570,  2572,  2577,  2578,  2580,  2582,  2587,
    1061     2589,  2597,  2598,  2599,  2604,  2605,  2609,  2611,  2613,  2615,
    1062     2617,  2619,  2626,  2628,  2630,  2632,  2634,  2636,  2638,  2640,
    1063     2642,  2644,  2649,  2651,  2653,  2658,  2684,  2685,  2687,  2691,
    1064     2692,  2696,  2698,  2700,  2702,  2704,  2706,  2713,  2715,  2717,
    1065     2719,  2721,  2723,  2728,  2733,  2735,  2737,  2755,  2757,  2762,
    1066     2763
     1019       0,   292,   292,   298,   307,   308,   309,   313,   314,   315,
     1020     319,   320,   324,   325,   329,   330,   334,   335,   341,   343,
     1021     345,   347,   352,   353,   359,   363,   365,   366,   368,   369,
     1022     371,   373,   375,   383,   384,   390,   391,   392,   397,   399,
     1023     404,   405,   409,   413,   415,   417,   419,   424,   427,   429,
     1024     431,   436,   439,   441,   443,   445,   447,   449,   451,   453,
     1025     455,   457,   459,   466,   467,   469,   473,   474,   475,   476,
     1026     480,   481,   483,   488,   489,   491,   493,   498,   499,   501,
     1027     506,   507,   509,   514,   515,   517,   519,   521,   526,   527,
     1028     529,   534,   535,   540,   541,   546,   547,   552,   553,   558,
     1029     559,   564,   565,   568,   570,   575,   580,   581,   583,   585,
     1030     591,   592,   598,   600,   602,   604,   609,   610,   615,   616,
     1031     617,   618,   619,   620,   621,   622,   623,   624,   628,   629,
     1032     636,   637,   643,   644,   645,   646,   647,   648,   649,   650,
     1033     651,   661,   668,   670,   680,   681,   686,   688,   694,   696,
     1034     700,   701,   706,   711,   714,   716,   718,   728,   730,   741,
     1035     742,   744,   748,   750,   754,   755,   760,   761,   765,   770,
     1036     771,   775,   777,   783,   784,   788,   790,   792,   794,   800,
     1037     801,   805,   807,   812,   814,   816,   821,   823,   828,   830,
     1038     834,   837,   841,   844,   848,   850,   854,   856,   863,   865,
     1039     867,   876,   878,   880,   882,   884,   889,   891,   893,   895,
     1040     900,   913,   914,   919,   921,   926,   930,   932,   934,   936,
     1041     938,   944,   945,   951,   952,   956,   957,   962,   964,   970,
     1042     971,   973,   978,   980,   987,   989,   993,   994,   999,  1001,
     1043    1005,  1006,  1010,  1012,  1016,  1017,  1021,  1022,  1026,  1027,
     1044    1042,  1043,  1044,  1045,  1046,  1050,  1055,  1062,  1072,  1077,
     1045    1082,  1090,  1095,  1100,  1105,  1110,  1118,  1140,  1145,  1152,
     1046    1154,  1161,  1166,  1171,  1182,  1187,  1192,  1197,  1202,  1211,
     1047    1216,  1224,  1225,  1226,  1227,  1233,  1238,  1246,  1247,  1248,
     1048    1249,  1253,  1254,  1255,  1256,  1261,  1262,  1271,  1272,  1277,
     1049    1278,  1283,  1285,  1287,  1289,  1291,  1294,  1293,  1305,  1306,
     1050    1308,  1318,  1319,  1324,  1328,  1330,  1332,  1334,  1336,  1338,
     1051    1340,  1342,  1347,  1349,  1351,  1353,  1355,  1357,  1359,  1361,
     1052    1363,  1365,  1367,  1369,  1371,  1377,  1378,  1380,  1382,  1384,
     1053    1389,  1390,  1396,  1397,  1399,  1401,  1406,  1408,  1410,  1412,
     1054    1417,  1418,  1420,  1422,  1427,  1428,  1430,  1435,  1436,  1438,
     1055    1440,  1445,  1447,  1449,  1454,  1455,  1459,  1461,  1467,  1466,
     1056    1470,  1472,  1477,  1479,  1485,  1486,  1491,  1492,  1494,  1495,
     1057    1504,  1505,  1507,  1509,  1514,  1516,  1522,  1523,  1525,  1528,
     1058    1531,  1536,  1537,  1542,  1547,  1551,  1553,  1559,  1558,  1565,
     1059    1567,  1573,  1574,  1582,  1583,  1587,  1588,  1589,  1591,  1593,
     1060    1600,  1601,  1603,  1605,  1610,  1611,  1617,  1618,  1622,  1623,
     1061    1628,  1629,  1630,  1632,  1640,  1641,  1643,  1646,  1648,  1652,
     1062    1653,  1654,  1656,  1658,  1662,  1667,  1675,  1676,  1685,  1687,
     1063    1692,  1693,  1694,  1698,  1699,  1700,  1704,  1705,  1706,  1710,
     1064    1711,  1712,  1717,  1718,  1719,  1720,  1726,  1727,  1729,  1734,
     1065    1735,  1740,  1741,  1742,  1743,  1744,  1759,  1760,  1765,  1766,
     1066    1774,  1776,  1778,  1781,  1783,  1785,  1808,  1809,  1811,  1813,
     1067    1818,  1819,  1821,  1826,  1831,  1832,  1838,  1837,  1841,  1845,
     1068    1847,  1849,  1855,  1856,  1861,  1866,  1868,  1873,  1875,  1876,
     1069    1878,  1883,  1885,  1887,  1892,  1894,  1899,  1904,  1912,  1918,
     1070    1917,  1931,  1932,  1937,  1938,  1942,  1947,  1952,  1960,  1965,
     1071    1976,  1977,  1988,  1989,  1995,  1996,  2000,  2001,  2002,  2005,
     1072    2004,  2015,  2024,  2030,  2036,  2045,  2051,  2057,  2063,  2069,
     1073    2077,  2083,  2091,  2097,  2106,  2107,  2108,  2112,  2116,  2118,
     1074    2123,  2124,  2128,  2129,  2134,  2140,  2141,  2144,  2146,  2147,
     1075    2151,  2152,  2153,  2154,  2188,  2190,  2191,  2193,  2198,  2203,
     1076    2208,  2210,  2212,  2217,  2219,  2221,  2223,  2228,  2230,  2239,
     1077    2241,  2242,  2247,  2249,  2251,  2256,  2258,  2260,  2265,  2267,
     1078    2269,  2278,  2279,  2280,  2284,  2286,  2288,  2293,  2295,  2297,
     1079    2302,  2304,  2306,  2321,  2323,  2324,  2326,  2331,  2332,  2337,
     1080    2339,  2341,  2346,  2348,  2350,  2352,  2357,  2359,  2361,  2371,
     1081    2373,  2374,  2376,  2381,  2383,  2385,  2390,  2392,  2394,  2396,
     1082    2401,  2403,  2405,  2436,  2438,  2439,  2441,  2446,  2451,  2459,
     1083    2461,  2463,  2468,  2470,  2475,  2477,  2491,  2492,  2494,  2499,
     1084    2501,  2503,  2505,  2507,  2512,  2513,  2515,  2517,  2522,  2524,
     1085    2526,  2532,  2534,  2536,  2540,  2542,  2544,  2546,  2560,  2561,
     1086    2563,  2568,  2570,  2572,  2574,  2576,  2581,  2582,  2584,  2586,
     1087    2591,  2593,  2595,  2601,  2602,  2604,  2613,  2616,  2618,  2621,
     1088    2623,  2625,  2638,  2639,  2641,  2646,  2648,  2650,  2652,  2654,
     1089    2659,  2660,  2662,  2664,  2669,  2671,  2679,  2680,  2681,  2686,
     1090    2687,  2691,  2693,  2695,  2697,  2699,  2701,  2708,  2710,  2712,
     1091    2714,  2716,  2718,  2720,  2722,  2724,  2726,  2731,  2733,  2735,
     1092    2740,  2766,  2767,  2769,  2773,  2774,  2778,  2780,  2782,  2784,
     1093    2786,  2788,  2795,  2797,  2799,  2801,  2803,  2805,  2810,  2815,
     1094    2817,  2819,  2837,  2839,  2844,  2845
    10671095};
    10681096#endif
     
    10761104  "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL",
    10771105  "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE",
    1078   "SIGNED", "UNSIGNED", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF", "LABEL",
    1079   "ENUM", "STRUCT", "UNION", "TYPE", "FTYPE", "DTYPE", "CONTEXT", "SIZEOF",
    1080   "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT",
    1081   "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE",
    1082   "FALLTHRU", "TRY", "CATCH", "FINALLY", "THROW", "ASM", "ALIGNAS",
     1106  "SIGNED", "UNSIGNED", "VALIST", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF",
     1107  "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE", "FTYPE", "DTYPE", "TRAIT",
     1108  "SIZEOF", "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH",
     1109  "CASE", "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO",
     1110  "RETURN", "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH",
     1111  "CATCHRESUME", "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS",
    10831112  "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",
    10841113  "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
     
    10881117  "GE", "EQ", "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign",
    10891118  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
    1090   "RSassign", "ANDassign", "ERassign", "ORassign", "THEN", "'('", "')'",
    1091   "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'", "'*'", "'&'",
    1092   "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'",
    1093   "'='", "';'", "$accept", "push", "pop", "constant", "identifier",
    1094   "no_01_identifier", "no_attr_identifier", "zero_one",
     1119  "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
     1120  "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'*'",
     1121  "'&'", "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",
     1122  "'|'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",
     1123  "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
    10951124  "string_literal_list", "primary_expression", "postfix_expression",
    10961125  "argument_expression_list", "argument_expression", "field_list", "field",
    1097   "unary_expression", "unary_operator", "cast_expression",
    1098   "multiplicative_expression", "additive_expression", "shift_expression",
    1099   "relational_expression", "equality_expression", "AND_expression",
    1100   "exclusive_OR_expression", "inclusive_OR_expression",
     1126  "unary_expression", "ptrref_operator", "unary_operator",
     1127  "cast_expression", "multiplicative_expression", "additive_expression",
     1128  "shift_expression", "relational_expression", "equality_expression",
     1129  "AND_expression", "exclusive_OR_expression", "inclusive_OR_expression",
    11011130  "logical_AND_expression", "logical_OR_expression",
    11021131  "conditional_expression", "constant_expression", "assignment_expression",
     
    11281157  "sue_declaration_specifier", "sue_type_specifier",
    11291158  "typedef_declaration_specifier", "typedef_type_specifier",
    1130   "elaborated_type_name", "aggregate_name", "aggregate_key",
     1159  "elaborated_type_name", "aggregate_name", "$@2", "aggregate_key",
    11311160  "field_declaration_list", "field_declaration",
    11321161  "new_field_declaring_list", "field_declaring_list", "field_declarator",
    11331162  "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
    1134   "enumerator_list", "enumerator_value_opt", "new_parameter_type_list_opt",
    1135   "new_parameter_type_list", "new_parameter_list",
    1136   "new_abstract_parameter_list", "parameter_type_list_opt",
    1137   "parameter_type_list", "parameter_list", "new_parameter_declaration",
    1138   "new_abstract_parameter_declaration", "parameter_declaration",
    1139   "abstract_parameter_declaration", "identifier_list",
    1140   "identifier_or_type_name", "no_01_identifier_or_type_name",
    1141   "no_attr_identifier_or_type_name", "type_name_no_function", "type_name",
    1142   "initializer_opt", "initializer", "initializer_list", "designation",
    1143   "designator_list", "designator", "typegen_declaration_specifier",
    1144   "typegen_type_specifier", "typegen_name", "type_parameter_list",
    1145   "type_parameter", "$@2", "type_class", "assertion_list_opt", "assertion",
    1146   "type_name_list", "type_declaring_list", "type_declarator",
    1147   "type_declarator_name", "context_specifier", "$@3",
    1148   "context_declaration_list", "context_declaration",
    1149   "new_context_declaring_list", "context_declaring_list",
    1150   "translation_unit", "external_definition_list",
    1151   "external_definition_list_opt", "external_definition", "$@4",
    1152   "external_function_definition", "function_definition", "declarator",
    1153   "subrange", "asm_name_opt", "attribute_list_opt", "attribute_list",
    1154   "attribute", "attribute_parameter_list", "attrib", "any_word",
    1155   "variable_declarator", "paren_identifier", "variable_ptr",
    1156   "variable_array", "variable_function", "function_declarator",
    1157   "function_no_ptr", "function_ptr", "function_array",
    1158   "old_function_declarator", "old_function_no_ptr", "old_function_ptr",
    1159   "old_function_array", "type_redeclarator", "paren_type", "type_ptr",
    1160   "type_array", "type_function", "identifier_parameter_declarator",
     1163  "$@3", "enumerator_list", "enumerator_value_opt",
     1164  "new_parameter_type_list_opt", "new_parameter_type_list",
     1165  "new_parameter_list", "new_abstract_parameter_list",
     1166  "parameter_type_list_opt", "parameter_type_list", "parameter_list",
     1167  "new_parameter_declaration", "new_abstract_parameter_declaration",
     1168  "parameter_declaration", "abstract_parameter_declaration",
     1169  "identifier_list", "identifier_or_type_name",
     1170  "no_01_identifier_or_type_name", "no_attr_identifier_or_type_name",
     1171  "type_name_no_function", "type_name", "initializer_opt", "initializer",
     1172  "initializer_list", "designation", "designator_list", "designator",
     1173  "typegen_declaration_specifier", "typegen_type_specifier",
     1174  "typegen_name", "type_parameter_list", "type_parameter", "$@4",
     1175  "type_class", "assertion_list_opt", "assertion", "type_name_list",
     1176  "type_declaring_list", "type_declarator", "type_declarator_name",
     1177  "trait_specifier", "$@5", "trait_declaration_list", "trait_declaration",
     1178  "new_trait_declaring_list", "trait_declaring_list", "translation_unit",
     1179  "external_definition_list", "external_definition_list_opt",
     1180  "external_definition", "$@6", "external_function_definition",
     1181  "function_definition", "declarator", "subrange", "asm_name_opt",
     1182  "attribute_list_opt", "attribute_list", "attribute",
     1183  "attribute_parameter_list", "attrib", "any_word", "variable_declarator",
     1184  "paren_identifier", "variable_ptr", "variable_array",
     1185  "variable_function", "function_declarator", "function_no_ptr",
     1186  "function_ptr", "function_array", "old_function_declarator",
     1187  "old_function_no_ptr", "old_function_ptr", "old_function_array",
     1188  "variable_type_redeclarator", "paren_type", "type_ptr", "type_array",
     1189  "type_function", "identifier_parameter_declarator",
    11611190  "identifier_parameter_ptr", "identifier_parameter_array",
    11621191  "identifier_parameter_function", "type_parameter_redeclarator",
     
    11951224     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
    11961225     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    1197      355,    40,    41,    91,    93,    46,   123,   125,    44,    58,
    1198       33,    42,    38,    43,    45,   126,    47,    37,    60,    62,
    1199       94,   124,    63,    61,    59
     1226     355,   356,   357,   358,   359,   360,   361,   362,   363,    40,
     1227      41,    91,    93,    46,   123,   125,    44,    58,    42,    38,
     1228      43,    45,    33,   126,    47,    37,    60,    62,    94,   124,
     1229      63,    61,    59
    12001230};
    12011231# endif
     
    12041234static const yytype_uint16 yyr1[] =
    12051235{
    1206        0,   125,   126,   127,   128,   128,   128,   129,   129,   129,
    1207      130,   130,   131,   132,   132,   133,   133,   134,   134,   134,
    1208      134,   135,   135,   135,   135,   135,   135,   135,   135,   135,
    1209      135,   136,   136,   137,   137,   137,   137,   137,   138,   138,
    1210      139,   139,   139,   139,   139,   140,   140,   140,   140,   140,
    1211      140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
    1212      140,   140,   141,   141,   141,   141,   142,   142,   142,   143,
    1213      143,   143,   143,   144,   144,   144,   145,   145,   145,   146,
    1214      146,   146,   146,   146,   147,   147,   147,   148,   148,   149,
    1215      149,   150,   150,   151,   151,   152,   152,   153,   153,   153,
    1216      153,   154,   155,   155,   155,   155,   156,   156,   157,   157,
    1217      157,   157,   158,   158,   159,   159,   159,   159,   159,   159,
    1218      159,   159,   159,   159,   160,   160,   161,   161,   162,   162,
    1219      162,   162,   162,   162,   162,   162,   163,   164,   164,   165,
    1220      165,   166,   166,   166,   166,   167,   167,   168,   169,   169,
    1221      169,   169,   169,   169,   170,   170,   170,   171,   171,   172,
    1222      172,   173,   173,   174,   175,   175,   176,   176,   177,   177,
    1223      178,   178,   178,   178,   179,   179,   180,   180,   181,   181,
    1224      181,   182,   182,   183,   183,   183,   183,   183,   183,   183,
    1225      183,   183,   184,   184,   184,   185,   185,   185,   186,   186,
    1226      187,   188,   188,   188,   188,   188,   189,   189,   189,   189,
    1227      189,   190,   190,   191,   191,   192,   192,   193,   193,   194,
    1228      194,   194,   195,   195,   196,   196,   197,   197,   198,   198,
    1229      199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
    1230      204,   204,   204,   204,   204,   205,   205,   205,   206,   206,
    1231      206,   207,   207,   207,   207,   207,   208,   208,   208,   209,
    1232      209,   210,   210,   210,   211,   211,   211,   211,   211,   212,
    1233      212,   213,   213,   213,   213,   214,   214,   215,   215,   215,
    1234      215,   216,   216,   216,   216,   217,   217,   218,   218,   219,
    1235      219,   220,   220,   220,   220,   220,   221,   220,   222,   222,
    1236      222,   223,   223,   224,   225,   225,   225,   225,   225,   225,
    1237      225,   225,   226,   226,   226,   226,   226,   226,   226,   226,
    1238      226,   226,   226,   226,   227,   227,   227,   227,   227,   228,
    1239      228,   229,   229,   229,   229,   230,   230,   230,   230,   231,
    1240      231,   231,   231,   232,   232,   232,   233,   233,   233,   233,
    1241      234,   234,   234,   235,   235,   236,   236,   236,   236,   236,
    1242      237,   237,   238,   238,   239,   239,   239,   239,   240,   240,
    1243      240,   240,   241,   241,   242,   242,   242,   242,   242,   243,
    1244      243,   244,   245,   246,   246,   246,   247,   247,   248,   248,
    1245      249,   249,   250,   250,   250,   250,   250,   251,   251,   251,
    1246      251,   252,   252,   253,   253,   254,   254,   255,   255,   255,
    1247      255,   256,   256,   256,   256,   256,   257,   257,   257,   257,
    1248      257,   258,   258,   259,   259,   260,   260,   261,   261,   261,
    1249      262,   262,   262,   263,   263,   263,   264,   264,   264,   265,
    1250      265,   265,   265,   266,   266,   267,   267,   268,   268,   268,
    1251      268,   269,   269,   270,   270,   271,   271,   271,   271,   271,
    1252      271,   272,   272,   272,   272,   273,   273,   273,   274,   275,
    1253      275,   277,   276,   276,   278,   278,   278,   279,   279,   280,
    1254      280,   280,   281,   281,   281,   281,   282,   282,   282,   283,
    1255      283,   284,   284,   285,   286,   285,   287,   287,   288,   288,
    1256      289,   289,   289,   290,   290,   291,   291,   292,   292,   293,
    1257      293,   294,   294,   294,   295,   294,   294,   296,   296,   296,
    1258      297,   297,   297,   297,   297,   297,   297,   297,   297,   298,
    1259      298,   298,   299,   300,   300,   301,   301,   302,   302,   303,
    1260      304,   304,   305,   305,   305,   306,   306,   306,   306,   307,
    1261      307,   307,   307,   308,   308,   309,   309,   309,   310,   310,
    1262      310,   310,   311,   311,   312,   312,   312,   313,   313,   313,
    1263      314,   314,   314,   315,   315,   315,   316,   316,   316,   317,
    1264      317,   317,   318,   318,   318,   319,   319,   319,   320,   320,
    1265      320,   320,   321,   321,   322,   322,   322,   323,   323,   323,
    1266      323,   324,   324,   324,   325,   325,   325,   325,   326,   326,
    1267      326,   327,   327,   327,   327,   328,   328,   328,   329,   329,
    1268      329,   329,   330,   330,   331,   331,   331,   332,   332,   333,
    1269      333,   334,   334,   334,   335,   335,   335,   335,   335,   336,
    1270      336,   336,   336,   337,   337,   337,   338,   338,   338,   339,
    1271      339,   339,   339,   340,   340,   340,   341,   341,   341,   341,
    1272      341,   342,   342,   342,   342,   343,   343,   343,   344,   344,
    1273      344,   345,   345,   345,   345,   345,   345,   346,   346,   346,
    1274      347,   347,   347,   347,   347,   348,   348,   348,   348,   349,
    1275      349,   350,   350,   350,   351,   351,   352,   352,   352,   352,
    1276      352,   352,   353,   353,   353,   353,   353,   353,   353,   353,
    1277      353,   353,   354,   354,   354,   354,   355,   355,   355,   356,
    1278      356,   357,   357,   357,   357,   357,   357,   358,   358,   358,
    1279      358,   358,   358,   359,   360,   360,   360,   361,   361,   362,
    1280      362
     1236       0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
     1237     138,   138,   139,   139,   140,   140,   141,   141,   142,   142,
     1238     142,   142,   143,   143,   143,   143,   143,   143,   143,   143,
     1239     143,   143,   143,   144,   144,   145,   145,   145,   145,   145,
     1240     146,   146,   147,   147,   147,   147,   147,   148,   148,   148,
     1241     148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
     1242     148,   148,   148,   149,   149,   149,   150,   150,   150,   150,
     1243     151,   151,   151,   152,   152,   152,   152,   153,   153,   153,
     1244     154,   154,   154,   155,   155,   155,   155,   155,   156,   156,
     1245     156,   157,   157,   158,   158,   159,   159,   160,   160,   161,
     1246     161,   162,   162,   162,   162,   163,   164,   164,   164,   164,
     1247     165,   165,   166,   166,   166,   166,   167,   167,   168,   168,
     1248     168,   168,   168,   168,   168,   168,   168,   168,   169,   169,
     1249     170,   170,   171,   171,   171,   171,   171,   171,   171,   171,
     1250     171,   172,   173,   173,   174,   174,   175,   175,   175,   175,
     1251     176,   176,   177,   178,   178,   178,   178,   178,   178,   179,
     1252     179,   179,   180,   180,   181,   181,   182,   182,   183,   184,
     1253     184,   185,   185,   186,   186,   187,   187,   187,   187,   188,
     1254     188,   189,   189,   190,   190,   190,   191,   191,   192,   192,
     1255     192,   192,   192,   192,   192,   192,   192,   192,   193,   193,
     1256     193,   194,   194,   194,   194,   194,   195,   195,   195,   195,
     1257     196,   197,   197,   197,   197,   197,   198,   198,   198,   198,
     1258     198,   199,   199,   200,   200,   201,   201,   202,   202,   203,
     1259     203,   203,   204,   204,   205,   205,   206,   206,   207,   207,
     1260     208,   208,   209,   209,   210,   210,   211,   211,   212,   212,
     1261     213,   213,   213,   213,   213,   214,   214,   214,   215,   215,
     1262     215,   216,   216,   216,   216,   216,   217,   217,   217,   218,
     1263     218,   219,   219,   219,   220,   220,   220,   220,   220,   221,
     1264     221,   222,   222,   222,   222,   223,   223,   224,   224,   224,
     1265     224,   225,   225,   225,   225,   226,   226,   227,   227,   228,
     1266     228,   229,   229,   229,   229,   229,   230,   229,   231,   231,
     1267     231,   232,   232,   233,   234,   234,   234,   234,   234,   234,
     1268     234,   234,   235,   235,   235,   235,   235,   235,   235,   235,
     1269     235,   235,   235,   235,   235,   236,   236,   236,   236,   236,
     1270     237,   237,   238,   238,   238,   238,   239,   239,   239,   239,
     1271     240,   240,   240,   240,   241,   241,   241,   242,   242,   242,
     1272     242,   243,   243,   243,   244,   244,   245,   245,   246,   245,
     1273     245,   245,   247,   247,   248,   248,   249,   249,   249,   249,
     1274     250,   250,   250,   250,   251,   251,   252,   252,   252,   252,
     1275     252,   253,   253,   254,   255,   256,   256,   257,   256,   258,
     1276     258,   259,   259,   260,   260,   261,   261,   261,   261,   261,
     1277     262,   262,   262,   262,   263,   263,   264,   264,   265,   265,
     1278     266,   266,   266,   266,   267,   267,   267,   267,   267,   268,
     1279     268,   268,   268,   268,   269,   269,   270,   270,   271,   271,
     1280     272,   272,   272,   273,   273,   273,   274,   274,   274,   275,
     1281     275,   275,   276,   276,   276,   276,   277,   277,   277,   278,
     1282     278,   279,   279,   279,   279,   279,   280,   280,   281,   281,
     1283     282,   282,   282,   282,   282,   282,   283,   283,   283,   283,
     1284     284,   284,   284,   285,   286,   286,   288,   287,   287,   289,
     1285     289,   289,   290,   290,   291,   291,   291,   292,   292,   292,
     1286     292,   293,   293,   293,   294,   294,   295,   295,   296,   297,
     1287     296,   298,   298,   299,   299,   300,   300,   300,   301,   301,
     1288     302,   302,   303,   303,   304,   304,   305,   305,   305,   306,
     1289     305,   305,   307,   307,   307,   308,   308,   308,   308,   308,
     1290     308,   308,   308,   308,   309,   309,   309,   310,   311,   311,
     1291     312,   312,   313,   313,   314,   315,   315,   316,   316,   316,
     1292     317,   317,   317,   317,   318,   318,   318,   318,   319,   319,
     1293     320,   320,   320,   321,   321,   321,   321,   322,   322,   323,
     1294     323,   323,   324,   324,   324,   325,   325,   325,   326,   326,
     1295     326,   327,   327,   327,   328,   328,   328,   329,   329,   329,
     1296     330,   330,   330,   331,   331,   331,   331,   332,   332,   333,
     1297     333,   333,   334,   334,   334,   334,   335,   335,   335,   336,
     1298     336,   336,   336,   337,   337,   337,   338,   338,   338,   338,
     1299     339,   339,   339,   340,   340,   340,   340,   341,   341,   342,
     1300     342,   342,   343,   343,   344,   344,   345,   345,   345,   346,
     1301     346,   346,   346,   346,   347,   347,   347,   347,   348,   348,
     1302     348,   349,   349,   349,   350,   350,   350,   350,   351,   351,
     1303     351,   352,   352,   352,   352,   352,   353,   353,   353,   353,
     1304     354,   354,   354,   355,   355,   355,   356,   356,   356,   356,
     1305     356,   356,   357,   357,   357,   358,   358,   358,   358,   358,
     1306     359,   359,   359,   359,   360,   360,   361,   361,   361,   362,
     1307     362,   363,   363,   363,   363,   363,   363,   364,   364,   364,
     1308     364,   364,   364,   364,   364,   364,   364,   365,   365,   365,
     1309     365,   366,   366,   366,   367,   367,   368,   368,   368,   368,
     1310     368,   368,   369,   369,   369,   369,   369,   369,   370,   371,
     1311     371,   371,   372,   372,   373,   373
    12811312};
    12821313
     
    12851316{
    12861317       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
    1287        1,     1,     1,     1,     1,     1,     2,     1,     1,     3,
    1288        3,     1,     6,     4,     3,     7,     3,     7,     2,     2,
    1289        7,     1,     3,     0,     1,     3,     7,     9,     1,     3,
    1290        1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
    1291        2,     2,     2,     2,     2,     4,     1,     4,     4,     2,
    1292        4,     2,     1,     1,     1,     1,     1,     4,     4,     1,
    1293        3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
    1294        3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
    1295        3,     1,     3,     1,     3,     1,     3,     1,     5,     4,
    1296        5,     1,     1,     3,     3,     2,     0,     1,     2,     5,
    1297        6,     7,     1,     3,     1,     1,     1,     1,     1,     1,
    1298        1,     1,     1,     1,     1,     3,     0,     1,     1,     1,
    1299        1,     1,     1,     1,     1,     1,     4,     2,     7,     1,
    1300        3,     1,     2,     1,     2,     1,     2,     2,     5,     7,
    1301        5,     9,     5,     9,     1,     3,     1,     1,     3,     3,
    1302        2,     1,     2,     2,     0,     1,     2,     3,     0,     1,
    1303        2,     3,     3,     4,     0,     1,     1,     2,     5,     7,
    1304        6,     6,     4,     3,     4,     2,     3,     2,     3,     3,
    1305        3,     2,     3,     3,     4,     1,     5,     6,     9,    10,
     1318       1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
     1319       3,     3,     1,     6,     4,     3,     7,     3,     7,     2,
     1320       2,     7,     4,     1,     3,     0,     1,     3,     7,     9,
     1321       1,     3,     1,     3,     7,     3,     7,     1,     1,     1,
     1322       2,     2,     2,     2,     2,     2,     4,     6,     1,     4,
     1323       4,     2,     4,     1,     1,     1,     1,     1,     1,     1,
     1324       1,     4,     4,     1,     3,     3,     3,     1,     3,     3,
     1325       1,     3,     3,     1,     3,     3,     3,     3,     1,     3,
     1326       3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
     1327       3,     1,     5,     4,     5,     1,     1,     3,     3,     2,
     1328       0,     1,     2,     5,     6,     7,     1,     3,     1,     1,
     1329       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
     1330       0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1331       6,     4,     2,     7,     1,     3,     1,     2,     1,     2,
     1332       1,     2,     2,     5,     7,     5,     9,     5,     9,     1,
     1333       3,     1,     1,     3,     3,     2,     1,     2,     2,     0,
     1334       1,     2,     3,     0,     1,     2,     3,     3,     4,     0,
     1335       1,     1,     2,     5,     7,     6,     6,     4,     3,     4,
     1336       2,     3,     2,     3,     3,     3,     3,     5,     3,     3,
     1337       4,     1,     5,     6,     5,     6,     9,    10,     9,    10,
    13061338       2,     1,     2,     2,     2,     1,     6,     8,    10,    12,
    13071339      14,     0,     1,     0,     1,     1,     3,     4,     7,     0,
     
    13161348       3,     1,     2,     1,     1,     1,     1,     1,     1,     1,
    13171349       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1318        1,     1,     1,     1,     1,     2,     2,     3,     3,     1,
    1319        3,     1,     2,     2,     2,     4,     4,     4,     4,     1,
    1320        2,     2,     3,     1,     2,     2,     1,     2,     2,     3,
    1321        1,     2,     2,     1,     1,     4,     2,     5,     7,     2,
    1322        2,     2,     1,     2,     2,     3,     2,     3,     1,     2,
    1323        3,     2,     2,     4,     0,     1,     2,     2,     1,     0,
    1324        1,     2,     2,     5,     6,     2,     2,     4,     0,     2,
    1325        0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
    1326        9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
    1327        5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
    1328        1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
    1329        1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
    1330        1,     1,     2,     0,     2,     1,     4,     1,     2,     3,
    1331        4,     2,     2,     1,     2,     1,     2,     5,     5,     7,
    1332        6,     1,     2,     2,     3,     1,     2,     2,     4,     2,
    1333        4,     0,     4,     2,     1,     1,     1,     0,     2,     5,
    1334        5,    13,     1,     1,     3,     3,     2,     3,     3,     2,
    1335        4,     1,     6,     9,     0,    11,     1,     3,     3,     3,
    1336        1,     1,     5,     2,     5,     0,     1,     1,     3,     0,
    1337        1,     1,     1,     1,     0,     6,     2,     1,     2,     4,
    1338        2,     3,     3,     3,     4,     5,     5,     5,     6,     1,
    1339        1,     1,     3,     0,     5,     0,     1,     1,     2,     6,
    1340        1,     3,     0,     1,     4,     1,     1,     1,     1,     2,
    1341        1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
    1342        4,     3,     8,     3,     2,     1,     2,     6,     8,     3,
    1343        2,     3,     3,     4,     4,     3,     1,     1,     1,     4,
    1344        6,     3,     2,     3,     3,     4,     4,     3,     2,     1,
    1345        2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
    1346        3,     6,     8,     3,     2,     1,     2,     2,     2,     3,
    1347        3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
    1348        2,     2,     1,     1,     2,     3,     3,     2,     4,     6,
    1349        8,     1,     2,     2,     1,     2,     2,     3,     3,     1,
    1350        4,     4,     3,     5,     8,     3,     2,     3,     1,     5,
    1351        5,     6,     6,     1,     2,     2,     1,     2,     2,     3,
    1352        3,     1,     4,     4,     3,     5,     8,     3,     1,     2,
    1353        1,     2,     6,     5,     6,     7,     7,     1,     2,     2,
    1354        1,     2,     2,     3,     3,     1,     4,     4,     3,     8,
    1355        3,     1,     1,     2,     1,     1,     2,     3,     2,     3,
    1356        2,     3,     3,     2,     4,     3,     2,     3,     2,     4,
    1357        3,     2,     6,     6,     6,     7,     1,     2,     1,     1,
    1358        1,     2,     3,     2,     3,     2,     3,     3,     4,     2,
    1359        3,     4,     2,     5,     5,     6,     6,     0,     1,     0,
    1360        2
     1350       1,     1,     1,     1,     1,     1,     2,     2,     3,     3,
     1351       1,     3,     1,     2,     2,     2,     4,     4,     4,     4,
     1352       1,     2,     2,     3,     1,     2,     2,     1,     2,     2,
     1353       3,     1,     2,     2,     1,     1,     4,     2,     0,     6,
     1354       7,     2,     2,     2,     0,     2,     2,     3,     2,     3,
     1355       1,     2,     3,     2,     2,     4,     0,     1,     2,     2,
     1356       1,     0,     1,     2,     2,     5,     2,     0,     7,     2,
     1357       4,     0,     2,     0,     1,     1,     1,     5,     5,     5,
     1358       1,     5,     5,     9,     1,     5,     0,     1,     1,     5,
     1359       1,     1,     5,     5,     1,     3,     3,     4,     1,     1,
     1360       1,     1,     2,     1,     3,     3,     1,     2,     1,     3,
     1361       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1362       1,     2,     1,     1,     1,     2,     0,     2,     2,     1,
     1363       4,     0,     1,     2,     3,     4,     2,     2,     1,     2,
     1364       1,     2,     5,     5,     7,     6,     1,     2,     2,     3,
     1365       1,     2,     2,     4,     2,     4,     0,     4,     2,     1,
     1366       1,     1,     0,     2,     5,     5,    13,     1,     1,     3,
     1367       3,     2,     3,     3,     2,     4,     1,     6,     9,     0,
     1368      11,     1,     3,     3,     3,     1,     1,     5,     2,     5,
     1369       0,     1,     1,     3,     0,     1,     1,     1,     1,     0,
     1370       6,     2,     1,     2,     4,     2,     3,     3,     3,     4,
     1371       5,     5,     5,     6,     1,     1,     1,     3,     0,     5,
     1372       0,     1,     1,     2,     6,     1,     3,     0,     1,     4,
     1373       1,     1,     1,     1,     2,     1,     2,     2,     1,     3,
     1374       2,     3,     3,     2,     4,     4,     3,     8,     3,     2,
     1375       1,     2,     6,     8,     3,     2,     3,     3,     4,     4,
     1376       3,     1,     1,     1,     4,     6,     3,     2,     3,     3,
     1377       4,     4,     3,     2,     1,     2,     2,     1,     3,     2,
     1378       3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
     1379       1,     2,     2,     2,     3,     3,     2,     4,     4,     3,
     1380       6,     8,     3,     2,     1,     2,     2,     1,     1,     2,
     1381       3,     3,     2,     4,     6,     8,     1,     2,     2,     1,
     1382       2,     2,     3,     3,     1,     4,     4,     3,     5,     8,
     1383       3,     2,     3,     1,     5,     5,     6,     6,     1,     2,
     1384       2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
     1385       5,     8,     3,     1,     2,     1,     2,     6,     5,     6,
     1386       7,     7,     1,     2,     2,     1,     2,     2,     3,     3,
     1387       1,     4,     4,     3,     8,     3,     1,     1,     2,     1,
     1388       1,     2,     3,     2,     3,     2,     3,     3,     2,     4,
     1389       3,     2,     3,     2,     4,     3,     2,     6,     6,     6,
     1390       7,     1,     2,     1,     1,     1,     2,     3,     2,     3,
     1391       2,     3,     3,     4,     2,     3,     4,     2,     5,     5,
     1392       6,     6,     0,     1,     0,     2
    13611393};
    13621394
     
    13661398static const yytype_uint16 yydefact[] =
    13671399{
    1368      285,   285,   306,   304,   307,   305,   308,   309,   291,   293,
    1369      292,     0,   294,   320,   312,   317,   315,   316,   314,   313,
    1370      318,   319,   321,   322,   323,   535,   535,   535,     0,     0,
    1371        0,   285,   211,   295,   310,   311,     7,   350,     0,     8,
    1372       13,    14,     0,     2,   285,   553,     9,   513,   511,   238,
    1373        3,   443,     3,   251,     0,     3,     3,     3,   239,     3,
    1374        0,     0,     0,   286,   287,   289,   285,   298,   301,   303,
    1375      331,   277,   324,   329,   278,   339,   279,   346,   343,   353,
    1376        0,     0,   354,   280,   461,   465,     3,     3,     0,     2,
    1377      507,   512,   517,   290,     0,     0,   535,   565,   535,     2,
    1378      576,   577,   578,   285,     0,   719,   720,     0,    12,   285,
    1379        0,   261,   262,     0,   286,   281,   282,   283,   284,   514,
    1380      296,   382,   536,   537,   360,   361,    12,   434,   435,    11,
    1381      430,   433,     0,   491,   486,   477,   434,   435,     0,     0,
    1382      516,   212,     0,   285,     0,     0,     0,     0,     0,     0,
    1383        0,     0,   285,   285,     2,     0,   721,   286,   570,   582,
    1384      725,   718,   716,   723,     0,     0,   245,     2,     0,   520,
    1385      428,   429,   427,     0,     0,     0,     0,   535,     0,   622,
    1386      623,     0,     0,   533,   529,   535,   550,   535,   535,   530,
    1387        2,   531,   535,   589,   535,   535,   592,     0,     0,     0,
    1388      285,   285,   304,   351,     2,   285,   252,   288,   299,   332,
    1389      344,   466,     0,     2,     0,   443,   253,   286,   325,   340,
    1390      347,   462,     0,     2,     0,   302,   326,   333,   334,     0,
    1391      341,   345,   348,   352,   435,   285,   285,   356,   359,     0,
    1392      385,   463,   467,     0,     0,     0,     1,   285,     2,   518,
    1393      564,   566,   285,     2,   729,   286,   732,   533,   533,   286,
    1394        0,     0,     0,   264,   535,   530,     2,   285,     0,     0,
    1395      285,   538,     2,   489,     2,   542,     0,     0,     0,     0,
    1396        0,    17,    56,     4,     5,     6,    15,     0,     0,     0,
    1397      285,     2,     0,   285,    62,    63,    64,    65,    46,    18,
    1398       47,    21,    45,    66,     0,    69,    73,    76,    79,    84,
    1399       87,    89,    91,    93,    95,    97,   102,   483,   739,   441,
    1400      482,     0,   439,   440,     0,   554,   569,   572,   575,   581,
    1401      584,   587,   350,     0,     2,   727,     0,   285,   730,     2,
    1402      285,     3,   415,     0,   423,   286,   285,   298,   324,   278,
    1403      339,   346,     3,     3,   397,   401,   411,   416,   461,   285,
    1404      417,   694,   695,   285,   418,   420,   285,     2,   571,   583,
    1405      717,     2,     2,   240,     2,     0,     0,   445,   444,   137,
    1406        2,     2,   242,     2,     2,   241,     2,   272,     2,   273,
    1407        0,   271,     0,     0,     0,     0,     0,     0,     0,     0,
    1408        0,   555,   594,     0,   443,     2,   549,   558,   648,   551,
    1409      552,   521,   285,     2,   588,   597,   590,   591,     0,   267,
    1410      285,   285,   330,   286,     0,   286,     0,   285,   722,   726,
    1411      724,   522,   285,   533,   246,   254,   300,     0,     2,   523,
    1412      285,   487,   327,   328,   274,   342,   349,     0,   285,     2,
    1413      374,   285,   362,     0,     0,   368,   716,   285,   737,   388,
    1414        0,   464,   488,   243,   244,   508,   285,   425,     0,   285,
    1415      228,     0,     2,   230,     0,   286,     0,   248,     2,   249,
    1416      269,     0,     0,     2,   285,   533,   285,   474,   476,   475,
    1417        0,     0,   739,     0,   285,     0,   285,   478,   285,   548,
    1418      546,   547,   545,     0,   540,   543,     0,     0,   285,    54,
    1419       66,    50,   285,    59,   285,   285,    48,    49,    61,     2,
    1420      124,     0,     0,   437,     0,   436,   108,   285,    52,    53,
    1421       16,     0,    28,    29,    33,     2,     0,   114,   115,   116,
    1422      117,   118,   119,   120,   121,   122,   123,     0,     0,    51,
    1423        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1424        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1425      105,     2,   634,   442,   631,   535,   535,   639,   468,   285,
    1426        2,   573,   574,     0,   585,   586,     0,     2,   728,   731,
    1427      108,   285,     2,   285,     0,   696,   286,   700,   691,   692,
    1428      698,     0,     2,     2,   656,   535,   739,   605,   535,   535,
    1429      739,   535,   619,   535,   535,   670,   424,   653,   535,   535,
    1430      661,   668,   285,   419,   286,     0,     0,   285,   706,   286,
    1431      711,   739,   703,   285,   708,   739,   285,   285,   285,     0,
    1432      108,     0,    17,     5,     2,     0,     0,   447,   737,     0,
    1433        0,   453,   232,     0,   285,     0,     0,     0,   533,   557,
    1434      561,   563,   593,   596,   600,   603,   556,   595,     0,   275,
    1435      646,     0,   285,   268,     0,     0,     0,     0,   266,     2,
    1436        0,   250,   524,   285,     0,     0,     0,     0,   285,   285,
    1437        0,     0,   680,   372,   375,   379,   535,   379,   685,   378,
    1438      677,   535,   535,   355,   363,   371,   364,   535,   366,   369,
    1439      285,   738,     0,     0,   386,   737,   286,     3,   404,     3,
    1440      408,   407,   579,     0,   519,   285,     3,     3,   285,   423,
    1441      286,     3,   417,   418,     2,     0,     0,     0,   473,   297,
    1442      285,   469,   471,     3,     2,     2,     0,   490,     3,     0,
    1443      542,   126,     0,     0,   213,     0,     0,     2,     0,     0,
    1444       34,     0,     0,   108,   285,    19,     0,    20,     0,   680,
    1445      438,     0,   106,     3,     2,    26,     2,     0,    31,     0,
    1446        2,    24,   103,   104,    70,    71,    72,    74,    75,    77,
    1447       78,    82,    83,    80,    81,    85,    86,    88,    90,    92,
    1448       94,    96,     0,     0,   740,   285,     0,     0,     0,   635,
    1449      636,   632,   633,   485,   484,   285,     0,     3,   285,   702,
    1450      285,   707,   286,   285,   285,   285,   650,   693,   649,     2,
    1451      285,     0,     0,     0,     0,     0,     0,     0,     0,   671,
    1452        0,   657,   608,   624,   658,     2,   604,   611,   421,   606,
    1453      607,   422,     2,   618,   627,   620,   621,   654,   655,   669,
    1454      697,   701,   699,   739,   259,     2,   733,     2,   412,   705,
    1455      710,   413,     0,   391,     3,     3,     3,     3,   443,     3,
    1456        0,     2,   456,   452,   738,     0,   448,   455,     2,   451,
    1457      454,     0,   285,   233,   255,     3,   263,   265,     0,   443,
    1458        2,   559,   560,     2,   598,   599,     0,   647,   525,     3,
    1459      336,   335,   338,   337,   285,   526,     0,   527,   285,   365,
    1460      367,     2,     0,     0,     0,     0,   101,   381,   681,   682,
    1461      376,   380,   377,   678,   679,   370,   374,   357,   388,   383,
    1462      389,     0,     0,     0,   426,   231,     0,     0,     3,     2,
    1463      656,   419,     0,   515,     0,   739,   477,     0,   285,   285,
    1464      285,     0,   539,   541,   127,     0,     0,   206,     0,     0,
    1465        0,   214,   215,    55,    60,   285,     0,    58,    57,     0,
    1466      125,   681,     0,    67,    68,   107,   112,     3,   106,     0,
    1467        0,     0,    23,    33,     3,     0,    99,     0,     3,   638,
    1468      642,   645,   637,     3,   580,     3,   704,   709,     2,   285,
    1469        3,     3,   286,     0,     3,   610,   614,   617,   626,   660,
    1470      664,   667,   285,     3,   609,   625,   659,   285,   285,   414,
    1471      285,   285,   734,     0,     0,     0,     0,   247,     0,   101,
    1472        0,     3,     3,     0,   449,     0,   446,     0,     0,   236,
    1473      285,     0,     0,   126,     0,     0,     0,     0,     0,   126,
    1474        0,     0,     0,     2,     0,     0,     3,   128,   129,     2,
    1475      139,   130,   131,   132,   133,   134,   135,   141,   143,     0,
    1476        0,     0,   276,   285,   285,   535,     0,   528,   285,   108,
    1477      684,   688,   690,   683,   373,   387,   384,   567,     2,   652,
    1478      651,     0,   657,     2,   470,   472,   492,     3,   500,   501,
    1479        0,     2,   496,     3,     3,     0,     0,   544,   213,     0,
    1480        0,     0,   213,     0,     3,    35,   737,   106,     0,     3,
    1481      649,    40,     3,    38,     3,    32,     0,     3,    98,   100,
    1482        0,     2,   640,   641,     0,     0,   285,     0,     0,     0,
    1483        3,   626,     0,     2,   612,   613,     2,   628,     2,   662,
    1484      663,     0,     0,     3,     0,     3,     3,     3,     3,   399,
    1485      398,   402,     2,     2,   736,   735,   109,     0,     0,     0,
    1486        0,     3,   450,     3,     0,   234,   142,     3,   286,   285,
    1487        0,     0,     0,     0,     2,   187,     0,   185,     0,     0,
    1488        0,     0,     0,     0,   191,     0,   108,   535,   147,   144,
    1489      285,     0,     0,   258,   270,     3,     3,   534,   601,   358,
    1490        2,   686,   687,   285,   257,   285,     0,   503,   480,   285,
    1491        0,     0,   479,   494,     0,     0,     0,   207,     0,   216,
    1492      106,     0,     0,   113,   110,     0,     0,     0,     0,     0,
    1493        0,    22,     0,   643,   285,   568,   256,   712,   713,   714,
    1494        0,   665,   285,   285,   285,     3,     3,     0,   673,     0,
    1495        0,     0,     0,   285,   285,     3,   532,   457,   458,     0,
    1496        0,   237,   286,     0,     0,     0,     0,   285,   188,   186,
    1497        0,   183,   189,     0,     0,     0,   192,   195,   193,   190,
    1498      126,   140,   138,   235,     0,     0,   285,   406,   410,   409,
    1499        0,   497,     2,   498,     2,   499,   493,   285,   219,     0,
    1500      217,     0,   219,     3,   649,    30,   111,     2,    43,     2,
    1501       41,    39,    27,   109,    25,     3,   715,     3,     3,     3,
    1502        0,     0,   672,   674,   615,   629,   260,     2,   396,     3,
    1503      395,     0,   460,   457,   126,     0,     0,   126,     3,     0,
    1504      126,   184,     0,     2,   200,   194,     0,   136,   562,   602,
    1505        3,     2,     0,     0,     2,   220,     0,     0,   208,     0,
    1506        0,     0,     0,     0,     0,     0,     0,     0,   675,   676,
    1507      285,     0,   459,   148,     0,     0,     2,   161,   126,   150,
    1508        0,   178,     0,   126,     0,     2,   152,     0,     2,     2,
    1509        0,   285,   502,   504,   495,     0,     0,     0,     0,   111,
    1510       36,     3,     3,   644,   616,   630,   666,   400,   126,   154,
    1511      157,     0,   156,   160,     3,   163,   162,     0,   126,   180,
    1512      126,     3,     0,   285,     0,     2,   689,     2,   221,   222,
    1513        0,   218,   209,     0,     0,     0,   149,     0,     0,   159,
    1514      224,   164,     2,   226,   179,     0,   182,   168,   196,     3,
    1515      201,   205,     0,   285,     0,     0,     0,    37,    44,    42,
    1516      155,   158,   126,     0,   165,   285,   126,   126,     0,   169,
    1517        0,     0,   680,   202,   203,   204,   197,     3,   285,   210,
    1518      223,   145,   166,   151,   126,   227,   181,   176,   174,   170,
    1519      153,   126,     0,   681,     0,     0,   146,   167,   177,   171,
    1520      175,   174,   172,     3,     0,   481,   173,   198,     3,   199
     1400     295,   295,   316,   314,   317,   315,   318,   319,   301,   303,
     1401     302,     0,   304,   330,   322,   327,   325,   326,   324,   323,
     1402     328,   329,   334,   331,   332,   333,   550,   550,   550,     0,
     1403       0,     0,   295,   221,   305,   320,   321,     7,   361,     0,
     1404       8,    14,    15,    65,     0,     2,    63,    64,   568,     9,
     1405     295,   528,   526,   248,     3,   456,     3,   261,     0,     3,
     1406       3,     3,   249,     3,     0,     0,     0,   296,   297,   299,
     1407     295,   308,   311,   313,   342,   287,   335,   340,   288,   350,
     1408     289,   357,   354,   364,     0,     0,   365,   290,   476,   480,
     1409       3,     3,     0,     2,   522,   527,   532,   300,     0,     0,
     1410     550,   580,   550,     2,   591,   592,   593,   295,     0,   734,
     1411     735,     0,    12,     0,    13,   295,   271,   272,     0,   296,
     1412     291,   292,   293,   294,   529,   306,   394,   551,   552,   372,
     1413     373,    12,   447,   448,    11,   443,   446,     0,   506,   501,
     1414     492,   447,   448,     0,     0,   531,   222,     0,   295,     0,
     1415       0,     0,     0,     0,     0,     0,     0,   295,   295,     2,
     1416       0,   736,   296,   585,   597,   740,   733,   731,   738,     0,
     1417       0,     0,   255,     2,     0,   535,   441,   442,   440,     0,
     1418       0,     0,     0,   550,     0,   637,   638,     0,     0,   548,
     1419     544,   550,   565,   550,   550,   546,     2,   545,   550,   604,
     1420     550,   550,   607,     0,     0,     0,   295,   295,   314,   362,
     1421       2,   295,   262,   298,   309,   343,   355,   481,     0,     2,
     1422       0,   456,   263,   296,   336,   351,   358,   477,     0,     2,
     1423       0,   312,   337,   344,   345,     0,   352,   356,   359,   363,
     1424     448,   295,   374,   367,   371,     0,   396,   478,   482,     0,
     1425       0,     0,     1,   295,     2,   533,   579,   581,   295,     2,
     1426     744,   296,   747,   548,   548,     0,   296,     0,     0,   274,
     1427     550,   546,     2,   295,     0,     0,   295,   553,     2,   504,
     1428       2,   557,     0,     0,     0,     0,     0,     0,    18,    58,
     1429       4,     5,     6,    16,     0,     0,   295,     2,    66,    67,
     1430      68,    69,    48,    19,    49,    22,    47,    70,   295,     0,
     1431      73,    77,    80,    83,    88,    91,    93,    95,    97,    99,
     1432     101,   106,   498,   754,   454,   497,     0,   452,   453,     0,
     1433     569,   584,   587,   590,   596,   599,   602,   361,     0,     2,
     1434     742,     0,   295,   745,     2,    63,   295,     3,   428,     0,
     1435     436,   296,   295,   308,   335,   288,   350,   357,     3,     3,
     1436     410,   414,   424,   429,   476,   295,   430,   709,   710,   295,
     1437     431,   433,   295,     2,   586,   598,   732,     2,     2,   250,
     1438       2,   461,     0,   459,   458,   457,   142,     2,     2,   252,
     1439       2,     2,   251,     2,   282,     2,   283,     0,   281,     0,
     1440       0,     0,     0,     0,     0,     0,     0,     0,   570,   609,
     1441       0,   456,     2,   564,   573,   663,   566,   567,   536,   295,
     1442       2,   603,   612,   605,   606,     0,   277,   295,   295,   341,
     1443     296,     0,   296,     0,   295,   737,   741,   739,   537,   295,
     1444     548,   256,   264,   310,     0,     2,   538,   295,   502,   338,
     1445     339,   284,   353,   360,     0,   295,     0,   752,   401,     0,
     1446     479,   503,   253,   254,   523,   295,   438,     0,   295,   238,
     1447       0,     2,   240,     0,   296,     0,   258,     2,   259,   279,
     1448       0,     0,     2,   295,   548,   295,   489,   491,   490,     0,
     1449       0,   754,     0,   295,     0,   295,   493,   295,   563,   561,
     1450     562,   560,     0,   555,   558,     0,     0,   295,    55,   295,
     1451      70,    50,   295,    61,   295,   295,    53,    54,     2,   128,
     1452       0,     0,   450,     0,   449,   731,   112,   295,    17,     0,
     1453      29,    30,    35,     2,     0,    35,   118,   119,   120,   121,
     1454     122,   123,   124,   125,   126,   127,     0,     0,    51,    52,
     1455       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1456       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     1457     109,     2,   649,   455,   646,   550,   550,   654,   483,   295,
     1458       2,   588,   589,     0,   600,   601,     0,     2,   743,   746,
     1459     112,   295,     0,     2,   711,   296,   715,   706,   707,   713,
     1460       0,     2,     2,   671,   550,   754,   620,   550,   550,   754,
     1461     550,   634,   550,   550,   685,   437,   668,   550,   550,   676,
     1462     683,   295,   432,   296,     0,     0,   295,   721,   296,   726,
     1463     754,   718,   295,   723,   754,   295,   295,   295,     0,   112,
     1464       0,    18,     5,     2,     0,    19,     0,   462,   752,     0,
     1465       0,   468,   242,     0,   295,     0,     0,     0,   548,   572,
     1466     576,   578,   608,   611,   615,   618,   571,   610,     0,   285,
     1467     661,     0,   295,   278,     0,     0,     0,     0,   276,     2,
     1468       0,   260,   539,   295,     0,     0,   295,     2,   366,   386,
     1469     375,     0,     0,   380,   374,   753,     0,     0,   399,     0,
     1470     296,     3,   417,     3,   421,   420,   594,     0,   534,   295,
     1471      63,     3,   295,   436,   296,     3,   430,   431,     2,     0,
     1472       0,     0,   488,   307,   295,   484,   486,     3,     2,     2,
     1473       0,   505,     3,     0,   557,   130,     0,     0,   223,     0,
     1474       0,     0,     2,     0,     0,    36,     0,     0,   112,   295,
     1475      20,     0,    21,     0,   695,   700,   451,   692,   550,   550,
     1476       0,   110,     3,     2,    27,     2,     0,    33,     0,     2,
     1477      25,     0,   107,   108,    74,    75,    76,    78,    79,    81,
     1478      82,    86,    87,    84,    85,    89,    90,    92,    94,    96,
     1479      98,   100,     0,     0,   755,   295,     0,     0,     0,   650,
     1480     651,   647,   648,   500,   499,   295,     0,   295,   717,   295,
     1481     722,   296,   295,   665,   295,   295,   708,   664,     2,   295,
     1482       0,     0,     0,     0,     0,     0,     0,     0,   686,     0,
     1483     672,   623,   639,   673,     2,   619,   626,   434,   621,   622,
     1484     435,     2,   633,   642,   635,   636,   669,   670,   684,   712,
     1485     716,   714,   754,   269,     2,   748,     2,   425,   720,   725,
     1486     426,     0,   404,     3,     3,     3,     3,   456,     3,     0,
     1487       2,   471,   467,   753,     0,   463,   470,     2,   466,   469,
     1488       0,   295,   243,   265,     3,   273,   275,     0,   456,     2,
     1489     574,   575,     2,   613,   614,     0,   662,   540,     3,   347,
     1490     346,   349,   348,   295,   541,     0,   542,   374,     0,     0,
     1491     295,   295,     0,     0,   695,   384,   387,   391,   550,   391,
     1492     390,   383,   376,   550,   378,   381,   295,   401,   395,   105,
     1493     402,   752,     0,     0,   439,   241,     0,     0,     3,     2,
     1494     671,   432,     0,   530,     0,   754,   492,     0,   295,   295,
     1495     295,     0,   554,   556,   131,     0,     0,   216,     0,     0,
     1496       0,   224,   225,    56,     0,    62,   295,     0,    60,    59,
     1497       0,     2,   129,     0,     0,     0,   696,   697,   693,   694,
     1498     461,    71,    72,   111,   116,     3,   110,     0,     0,     0,
     1499      24,    35,     3,     0,    32,   103,     0,     3,   653,   657,
     1500     660,   652,     3,   595,     3,   719,   724,     2,    63,   295,
     1501       3,     3,   296,     0,     3,   625,   629,   632,   641,   675,
     1502     679,   682,   295,     3,   624,   640,   674,   295,   295,   427,
     1503     295,   295,   749,     0,     0,     0,     0,   257,     0,   105,
     1504       0,     3,     3,     0,   464,     0,   460,     0,     0,   246,
     1505     295,     0,     0,   130,     0,     0,     0,     0,     0,   130,
     1506       0,     0,   110,   110,    18,     2,     0,     0,     3,   132,
     1507     133,     2,   144,   134,   135,   136,   137,   138,   139,   146,
     1508     148,     0,     0,     0,   286,   295,   295,   550,     0,   543,
     1509     295,   377,   379,     0,   393,   696,   388,   392,   389,   382,
     1510     386,   369,   400,     0,   582,     2,   667,   666,     0,   672,
     1511       2,   485,   487,   507,     3,   515,   516,     0,     2,   511,
     1512       3,     3,     0,     0,   559,   223,     0,     0,     0,   223,
     1513       0,     0,     3,    37,   112,   699,   703,   705,   698,   752,
     1514     110,     0,     3,   664,    42,     3,    40,     3,    34,     0,
     1515       3,   102,   104,     0,     2,   655,   656,     0,     0,   295,
     1516       0,     0,     0,     3,   641,     0,     2,   627,   628,     2,
     1517     643,     2,   677,   678,     0,     0,    63,     0,     3,     3,
     1518       3,     3,   412,   411,   415,     2,     2,   751,   750,   113,
     1519       0,     0,     0,     0,     3,   465,     3,     0,   244,   147,
     1520       3,   296,   295,     0,     0,     0,     0,     2,     0,   192,
     1521       0,   190,     0,     0,     0,     0,     0,     0,     0,   550,
     1522     112,     0,   152,   149,   295,     0,     0,   268,   280,     3,
     1523       3,   549,   616,   370,   385,   398,   295,   267,   295,     0,
     1524     518,   495,   295,     0,     0,   494,   509,     0,     0,     0,
     1525     217,     0,   226,    57,   110,     0,     2,   701,   702,     0,
     1526     117,   114,     0,     0,     0,     0,     0,     0,    23,     0,
     1527     658,   295,   583,   266,   727,   728,   729,     0,   680,   295,
     1528     295,   295,     3,     3,     0,   688,     0,     0,     0,     0,
     1529     295,   295,     3,   547,   472,   473,     0,     0,   247,   296,
     1530       0,     0,     0,     0,   295,   193,   191,   188,     0,   194,
     1531       0,     0,     0,     0,   198,   201,   199,   195,     0,   196,
     1532     130,    35,   145,   143,   245,     0,     0,   419,   423,   422,
     1533       0,   512,     2,   513,     2,   514,   508,   295,   229,     0,
     1534     227,     0,   229,     3,   664,   295,    31,   115,     2,    45,
     1535       2,    43,    41,    28,   113,    26,     3,   730,     3,     3,
     1536       3,     0,     0,   687,   689,   630,   644,   270,     2,   409,
     1537       3,   408,     0,   475,   472,   130,     0,     0,   130,     3,
     1538       0,   130,   189,     0,     2,     2,   210,   200,     0,     0,
     1539       0,   141,     0,   577,   617,     2,     0,     0,     2,   230,
     1540       0,     0,   218,     0,     0,     0,     3,     0,     0,     0,
     1541       0,     0,     0,   690,   691,   295,     0,   474,   153,     0,
     1542       0,     2,   166,   130,   155,     0,   183,     0,   130,     0,
     1543       2,   157,     0,     2,     0,     2,     2,     2,   197,    32,
     1544     295,   517,   519,   510,     0,     0,     0,     0,   115,    38,
     1545       0,     3,     3,   659,   631,   645,   681,   413,   130,   159,
     1546     162,     0,   161,   165,     3,   168,   167,     0,   130,   185,
     1547     130,     3,     0,   295,     0,   295,     0,     2,     0,     2,
     1548     140,     2,   231,   232,     0,   228,   219,     0,   704,     0,
     1549       0,   154,     0,     0,   164,   234,   169,     2,   236,   184,
     1550       0,   187,   173,   202,     3,   211,   215,   204,     3,     0,
     1551     295,     0,   295,     0,     0,     0,    39,    46,    44,   160,
     1552     163,   130,     0,   170,   295,   130,   130,     0,   174,     0,
     1553       0,   695,   212,   213,   214,     0,   203,     3,   205,     3,
     1554     295,   220,   233,   150,   171,   156,   130,   237,   186,   181,
     1555     179,   175,   158,   130,     0,   696,     0,     0,     0,     0,
     1556     151,   172,   182,   176,   180,   179,   177,     3,     3,     0,
     1557       0,   496,   178,   206,   208,     3,     3,   207,   209
    15211558};
    15221559
     
    15241561static const yytype_int16 yydefgoto[] =
    15251562{
    1526       -1,   830,   470,   298,    45,   130,   131,   299,   300,   301,
    1527      302,   777,   759,  1132,  1133,   303,   304,   305,   306,   307,
    1528      308,   309,   310,   311,   312,   313,   314,   315,   316,  1040,
    1529      520,   986,   318,   987,   548,   964,  1065,  1501,  1067,  1068,
    1530     1069,  1070,  1502,  1071,  1072,  1430,  1431,  1397,  1398,  1399,
    1531     1483,  1484,  1488,  1489,  1519,  1520,  1073,  1359,  1074,  1075,
    1532     1296,  1297,  1298,  1469,  1076,   142,   970,   971,   972,  1376,
    1533     1450,  1461,  1462,   471,   472,   892,   893,  1048,    48,    49,
    1534       50,    51,    52,   342,   155,    55,    56,    57,    58,    59,
    1535      344,    61,    62,   259,    64,    65,   270,   346,   347,    68,
    1536       69,    70,    71,   115,    73,   200,   349,   116,    76,   117,
    1537       78,    79,    80,   451,   452,   453,   454,   693,   930,   694,
    1538       81,    82,   458,   714,   872,   873,   352,   353,   717,   718,
    1539      719,   354,   355,   356,   357,   468,   336,   132,   133,   524,
    1540      320,   166,   647,   648,   649,   650,   651,    83,   118,    85,
    1541      491,   492,   956,   493,   273,   497,   321,    86,   134,   135,
    1542       87,  1317,  1111,  1112,  1113,  1114,    88,    89,   735,    90,
    1543      269,    91,    92,   183,  1042,   681,   406,   122,    93,   503,
    1544      504,   505,   184,   264,   186,   187,   188,   265,    96,    97,
    1545       98,    99,   100,   101,   102,   191,   192,   193,   194,   195,
    1546      842,   607,   608,   609,   610,   196,   612,   613,   614,   573,
    1547      574,   575,   576,   698,   103,   616,   617,   618,   619,   620,
    1548      621,   929,   700,   701,   702,   597,   360,   361,   362,   363,
    1549      322,   161,   105,   106,   107,   365,   712,   570
     1563      -1,   819,   469,   302,    48,   135,   136,   303,   304,   305,
     1564     306,   766,   767,  1145,  1146,   307,   382,   309,   310,   311,
     1565     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
     1566    1040,   519,   984,   323,   985,   547,   954,  1067,  1543,  1069,
     1567    1070,  1071,  1072,  1544,  1073,  1074,  1460,  1461,  1422,  1423,
     1568    1424,  1522,  1523,  1527,  1528,  1563,  1564,  1075,  1380,  1076,
     1569    1077,  1314,  1315,  1316,  1504,  1078,   147,   960,   961,   962,
     1570    1400,  1484,  1496,  1497,   470,   471,   881,   882,  1048,    52,
     1571      53,    54,    55,    56,   348,   160,    59,    60,    61,    62,
     1572      63,   350,    65,    66,   266,    68,    69,   276,   352,   353,
     1573      72,    73,    74,    75,   120,    77,   206,   355,   121,    80,
     1574     122,    82,    83,   456,    84,   455,   690,   691,   692,   915,
     1575    1096,   916,    85,    86,   459,   457,   698,   861,   862,   358,
     1576     359,   701,   702,   703,   360,   361,   362,   363,   467,   341,
     1577     137,   138,   523,   325,   172,   647,   648,   649,   650,   651,
     1578      87,   123,    89,   490,   491,   946,   492,   279,   496,   326,
     1579      90,   139,   140,    91,  1337,  1118,  1119,  1120,  1121,    92,
     1580      93,   719,    94,   275,    95,    96,   189,  1042,   681,   413,
     1581     127,    97,   502,   503,   504,   190,   270,   192,   193,   194,
     1582     271,   100,   101,   102,   103,   104,   105,   106,   197,   198,
     1583     199,   200,   201,   831,   606,   607,   608,   609,   202,   611,
     1584     612,   613,   573,   574,   575,   576,   755,   107,   615,   616,
     1585     617,   618,   619,   620,   977,   757,   758,   759,   596,   366,
     1586     367,   368,   369,   327,   166,   109,   110,   111,   371,   696,
     1587     570
    15501588};
    15511589
    15521590/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15531591   STATE-NUM.  */
    1554 #define YYPACT_NINF -1318
     1592#define YYPACT_NINF -1414
    15551593static const yytype_int16 yypact[] =
    15561594{
    1557     4413,  9104, -1318,    42, -1318, -1318, -1318, -1318, -1318, -1318,
    1558    -1318,   -27, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
    1559    -1318, -1318, -1318, -1318, -1318,    95,    95,    95,   954,   850,
    1560       71,  5300,   201, -1318, -1318, -1318, -1318, -1318,   123, -1318,
    1561    -1318, -1318,   776,   164,  8401, -1318, -1318, -1318, -1318, -1318,
    1562    -1318,   226,   169, -1318,  1184, -1318, -1318, -1318, -1318,   272,
    1563     1531,   387,    89,  3759, -1318, -1318,  8469,  1998, -1318, -1318,
    1564    -1318,   935,   392,  5420,   741,  1183,   935,  1282, -1318, -1318,
    1565      356,   326, -1318,   935,  1429, -1318,   340, -1318,   453,   463,
    1566    -1318, -1318, -1318, -1318,   370,   169,    95, -1318,    95, -1318,
    1567    -1318, -1318, -1318,  9340,  1184, -1318, -1318,  1184, -1318,  9399,
    1568      389, -1318, -1318,  1617,  9458, -1318,  1087,  1087,  1087, -1318,
    1569    -1318, -1318,    95, -1318, -1318, -1318,   386,   435,   438, -1318,
    1570    -1318, -1318,   498, -1318, -1318, -1318, -1318, -1318,   510,   531,
    1571    -1318, -1318,    34,  7909,  1795,    48,   452,   575,   578,   583,
    1572      588,   593,  8673,  6319,   543,   605, -1318,  8537, -1318, -1318,
    1573    -1318, -1318,   652, -1318,   172,  5550, -1318,   473,   232, -1318,
    1574    -1318, -1318, -1318,   661,   301,   325,   403,    95,   646, -1318,
    1575    -1318,  1531,  2279,   739, -1318,    21, -1318,    95,    95,   169,
    1576    -1318, -1318,    35, -1318,    95,    95, -1318,  2781,   700,   710,
    1577     1087, 10200, -1318, -1318,   717,  8401, -1318, -1318,   935, -1318,
    1578    -1318, -1318,   169, -1318,  1184,   226, -1318,  7011, -1318,  1087,
    1579     1087,  1087,   169, -1318,   954, -1318,  3330, -1318, -1318,   704,
    1580     1087, -1318,  1087, -1318,   123,  7909,  9163,   736, -1318,   850,
    1581      769,  1087, -1318,   954,   737,   747, -1318,  5300,   814, -1318,
    1582    -1318, -1318,  2451, -1318, -1318,  3603, -1318,   739,    61,  9458,
    1583    10457,  1617,  2781, -1318,    68, -1318, -1318,  9399,  1184,   778,
    1584    11233, -1318, -1318,   428, -1318, 10968,   787,   870, 10685, 10742,
    1585    10799, -1318,   824, -1318, -1318, -1318, -1318, 10856, 10856,   814,
    1586     7591,   827, 10742,  8015, -1318, -1318, -1318, -1318, -1318, -1318,
    1587      874, -1318,   901,  2137, 10742, -1318,   237,   407,   632,   476,
    1588      638,   859,   855,   869,   890,   101, -1318, -1318,   877,   616,
    1589    -1318,   336, -1318, -1318,  1795, -1318, -1318,   518,   907, -1318,
    1590      633,   907,   892,   123, -1318, -1318,   914,  9340, -1318,   916,
    1591     7697, -1318, -1318,  1197,   771,  5233, 10200,   935, -1318,   935,
    1592     1087,  1087, -1318, -1318, -1318, -1318, -1318, -1318,  1087,  9517,
    1593     1184, -1318, -1318,  9576,  1658, -1318,  9222, -1318, -1318, -1318,
    1594    -1318, -1318, -1318, -1318,   924,  4543, 10742, -1318, -1318, -1318,
    1595    -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
    1596     1617, -1318,   676,   942,   945,   946,   690,   947,   948,   958,
    1597     2279, -1318, -1318,   952,   226,   957, -1318, -1318,   959, -1318,
    1598    -1318, -1318,  2451, -1318, -1318, -1318, -1318, -1318,  2781, -1318,
    1599     7909,  7909, -1318,  1087,  1617, 11261,  1184,  7402, -1318, -1318,
    1600    -1318, -1318,  2451,    61, -1318, -1318,   935,   169, -1318, -1318,
    1601     2451, -1318,  5128, -1318, -1318,  1087,  1087,   364,  9635,   960,
    1602     2086,  8865, -1318,   432,   454,   850, -1318,  9163,   955,   944,
    1603      850,  1087, -1318, -1318, -1318, -1318,  9936, -1318,   383,  7322,
    1604    -1318,   169,   962, -1318,  1617, 11043, 10514, -1318, -1318, -1318,
    1605    -1318,   755,  2781, -1318,  7467,   739,  6768, -1318, -1318, -1318,
    1606      885,   414,   877,   850, 11233,   619,  9399, -1318, 11233, -1318,
    1607    -1318, -1318, -1318,   479, -1318,   964,   870,   125,  7591, -1318,
    1608    -1318, -1318,  7591, -1318,  7803,  7591, -1318, -1318, -1318,   969,
    1609    -1318,   544,   972,   640,   974, -1318,  8741,  5983, -1318, -1318,
    1610    -1318,   103, -1318, -1318, 10571, -1318,   112, -1318, -1318, -1318,
    1611    -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10457, 10457, -1318,
    1612    10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742,
    1613    10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10343, 10457,
    1614    -1318,   616,   900, -1318, -1318,    95,    95, -1318, -1318,  7909,
    1615    -1318, -1318,   959,   814, -1318,   959, 10628, -1318, -1318, -1318,
    1616     8333,  5983,   973,  8121,   976, -1318,  9694, -1318, -1318,   652,
    1617    -1318,   978,   378,   980,  1782,   139,   877, -1318,    95,    95,
    1618      877,   166, -1318,    95,    95,   959, -1318, -1318,    95,    95,
    1619    -1318,   907,  9753,  1184, 11174,   137,   273,  9753, -1318,  4101,
    1620    -1318,   877, -1318,  9517, -1318,   278,  7119,  7119,  7119,  1184,
    1621    -1318,  3868,   982,   220,   924,   302,   984, -1318,   977,  5550,
    1622      238, -1318,  1061,  1184,  7119,   814,  1617,   814,   739,   705,
    1623      907, -1318, -1318,   765,   907, -1318, -1318, -1318,   870, -1318,
    1624      907,   169,  9936, -1318,   570,  1000,   655,  1005, -1318,  1004,
    1625      169, -1318, -1318,  2451,   169,  1003,   464,   465,  9812,  6431,
    1626     1947, 10742,  2536, -1318, -1318,  1001,    20,  1001, -1318, -1318,
    1627    -1318,    95,    95, -1318, -1318,   850, -1318,    95, -1318, -1318,
    1628     8924,   850,  1006, 10742, -1318,   955, 11174, -1318, -1318,  1017,
    1629    -1318, -1318, -1318,   814, -1318, 11109, 10742, -1318,  7119,   671,
    1630     5233, -1318, -1318,   652,  1013,  1014,   885,  2927, -1318, -1318,
    1631    11233, -1318, -1318,  1015, -1318, -1318,  1021, -1318,  1015,  1023,
    1632    10968, 10457,   243,  1002,    53,  1025,  1026,   827,  1027,  1028,
    1633    -1318,  1030,  1032,  8983,  6095, -1318, 10457, -1318,   640,  1104,
    1634    -1318, 10400, 10457,  1034, -1318, -1318,   924,   678, -1318, 10457,
    1635    -1318, -1318, -1318, -1318, -1318, -1318, -1318,   237,   237,   407,
    1636      407,   632,   632,   632,   632,   476,   476,   638,   859,   855,
    1637      869,   890, 10742,   716, -1318,  9936,  1038,  1041,  1042,   900,
    1638    -1318, -1318, -1318, -1318, -1318,  9936,   679, 10742,  7119, -1318,
    1639     9517, -1318,  6543,  8227,  9281,  6319, -1318, -1318, -1318,   378,
    1640     9936,   820,  1047,  1051,  1052,  1057,  1058,  1059,  1060, -1318,
    1641     3170,  1782, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
    1642    -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   959,
    1643    -1318, -1318, -1318,   877, -1318, -1318, -1318, -1318, -1318, -1318,
    1644    -1318, -1318,  1063, -1318,  1064,  1065, -1318, -1318,   226,  1034,
    1645     3868, -1318, -1318, -1318,  4543,  1066, -1318, -1318, -1318, -1318,
    1646    -1318,   850,  5481,  1140, -1318, -1318, -1318, -1318,  1049,   226,
    1647    -1318, -1318,   959, -1318, -1318,   959,   127,   959, -1318, -1318,
    1648    -1318, -1318, -1318, -1318,  8605, -1318,   169, -1318,  9163, -1318,
    1649    -1318,  1070,   856,  1073,  1076,  1077, -1318, -1318,  2536, -1318,
    1650    -1318, -1318, -1318, -1318, -1318, -1318,  2086, -1318,   944, -1318,
    1651    -1318,  1075,  1078,  1082, -1318, -1318,  1080,  1096, -1318,   671,
    1652     1985, -1318,   514, -1318,  2927,   877, -1318,  1100, 11233,  9871,
    1653     7909,  1102, -1318, -1318,  1098,  1110,  1107, -1318, 10742,    12,
    1654      400,  1114, -1318,  1112,  1112,  5983, 10457, -1318, -1318,  1112,
    1655    -1318,  1104,  4543, -1318, -1318, -1318, -1318,  1115, 10457,  1120,
    1656      814,  3868, -1318, 10571, -1318,   814, -1318, 10457, -1318,   825,
    1657      907, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   924,  7697,
    1658    -1318, -1318,  6655,  1125, -1318,   833,   907, -1318,   845,   852,
    1659      907, -1318,  1087,  4145, -1318, -1318, -1318,  9936,  9936, -1318,
    1660     7402,  7402, -1318,  1123,  1124,  1126,  1133, -1318,  1134,   553,
    1661       38,  1034, -1318,   814, -1318,  5550, -1318, 10457,   466, -1318,
    1662     5871,  1136,  1141,  5631,  1149,  1155,    13,    17,    14, 10457,
    1663     1156,   169,  3019,  1137,  1150,  1143, -1318, -1318, -1318,  1161,
    1664    -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   850,
    1665     1167, 10457, -1318,  9936,  9936,    95,  1169, -1318,  9045,  8803,
    1666      867,   907, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
    1667    -1318,  1174,  1985, -1318, -1318,  1158, -1318,  1015, -1318, -1318,
    1668     1617,  1173, -1318, -1318, -1318,   686,  1175, -1318,    53,  1178,
    1669    10742,  1159,    53,    53,  1176, -1318,   977, 10457,  1185,  1115,
    1670      607,   130,  1192, -1318,  1176, -1318,  1198,  1192, -1318, -1318,
    1671     1199, -1318, -1318,   959,  1201,  1203,  6207,  1202,  1205,  1207,
    1672    -1318, -1318,  1210, -1318, -1318,   959, -1318, -1318, -1318, -1318,
    1673      959, 10457, 10457, 10742,  1209, -1318, -1318, -1318, -1318, -1318,
    1674    -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10742, 10742,  1212,
    1675     1219,  1192, -1318, -1318,   850, -1318, -1318, -1318,  4876,  9871,
    1676    10457, 10457,  1262, 10457, -1318, -1318,  1213, -1318,  1214, 10457,
    1677     1216,  1220, 10457,   929, -1318,  1223,  5017,    95, -1318, -1318,
    1678     5481,  1224,   469, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
    1679    -1318, -1318,   959, 10172, -1318,  7467,  1232, -1318, -1318,  9871,
    1680      478,   509, -1318,  1236,  1239,   870,  1248, -1318,   541, -1318,
    1681    10457,  1250,  1245, -1318, -1318,  1251,   128,   133,   814,  1253,
    1682     1254, -1318,  1256, -1318,  9936, -1318, -1318, -1318, -1318, -1318,
    1683     1258, -1318,  9936,  9936,  9936, -1318, -1318,  1260, -1318,  1263,
    1684     1269,  1270,   589,  7186,  7294, -1318, -1318,   351, -1318,  1273,
    1685     1275, -1318,  7532,   721,   742,  1272,   752,  5749, -1318, -1318,
    1686      545, -1318, -1318,   768,  1279,   169,  1330,  1332, -1318, -1318,
    1687     5631, -1318, -1318, -1318,  1285,  1286,  9936, -1318, -1318, -1318,
    1688     1283, -1318, -1318, -1318, -1318, -1318, -1318,  9871,   870,   206,
    1689    -1318,  1268,   870,  1115,   327, -1318, -1318, -1318, -1318, -1318,
    1690    -1318, -1318, -1318,  1284, -1318, -1318, -1318, -1318, -1318, -1318,
    1691     1291,  1294, -1318, -1318, -1318, -1318, -1318, -1318, -1318,  1297,
    1692    -1318,  1296, -1318, -1318,  5631,   124, 10457,  5631, -1318,  1299,
    1693    10457, -1318,   270,  1314, -1318, -1318,  1306, -1318, -1318, -1318,
    1694    -1318, -1318,  1184,  1617,  1301,   874,   879, 10742, -1318,   790,
    1695     1307, 10457,   814,   814,  1308,  1310,  1316,  1317, -1318, -1318,
    1696     7402,  1320, -1318,  1376, 10742,  1313, -1318, -1318, 10286, -1318,
    1697      791, -1318,  1300,  5631,  1305, -1318, -1318,  1323, -1318,  1341,
    1698     1329,  9871, -1318, -1318, -1318,   870,   814,  1334,  1327,  1325,
    1699    -1318,  1192,  1192, -1318, -1318, -1318, -1318, -1318,  5631,   246,
    1700    -1318,   917, -1318, -1318,  6877, -1318, -1318,  1335, 10457, -1318,
    1701    10457,  6877,   169,  9635,  1342, -1318, -1318,  1351,   874, -1318,
    1702      793, -1318, -1318, 10457,  1357,  1359, -1318, 10742, 10742, -1318,
    1703    -1318,   989,    88, -1318, -1318,  1340, -1318,   989, -1318, -1318,
    1704     2035,   814,   169,  9635,  1364,  1345,   814, -1318, -1318, -1318,
    1705    -1318, -1318, 10286,  1369,   989,  6946, 10457, 10206,  1373,   989,
    1706     1380,  2035,  2697, -1318, -1318, -1318, -1318, -1318,  7909, -1318,
    1707    -1318, -1318, 10051, -1318, 10286, -1318, -1318,  1347,  9970, -1318,
    1708    -1318, 10206,   169,  2697,  1383,   794, -1318, 10051, -1318, -1318,
    1709    -1318,  9970, -1318, -1318,   169, -1318, -1318, -1318, -1318, -1318
     1595    4857,  9883, -1414,    35, -1414, -1414, -1414, -1414, -1414, -1414,
     1596   -1414,   142, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
     1597   -1414, -1414, -1414, -1414, -1414, -1414,    98,    98,    98,  1334,
     1598     684,   153,  7496,   290, -1414, -1414, -1414, -1414, -1414,   204,
     1599   -1414, -1414, -1414, -1414,   901,   229, -1414, -1414, -1414, -1414,
     1600    9565, -1414, -1414, -1414, -1414,   -15,   301, -1414,  1624, -1414,
     1601   -1414, -1414, -1414,   302,  1806,   471,   143,  7613, -1414, -1414,
     1602    9603,  1367, -1414, -1414, -1414,  1721,   510,  3394,  1032,  1137,
     1603    1721,  1303, -1414, -1414,  1174,  1520, -1414,  1721,  1532, -1414,
     1604     385, -1414,   421,   523, -1414, -1414, -1414, -1414,   460,   301,
     1605      98, -1414,    98, -1414, -1414, -1414, -1414, 10414,  1624, -1414,
     1606   -1414,  1624, -1414,   447, -1414, 10444, -1414, -1414,  2082, 10554,
     1607   -1414,   399,   399,   399, -1414, -1414, -1414,    98, -1414, -1414,
     1608   -1414,   544,   555,   575, -1414, -1414, -1414,   617, -1414, -1414,
     1609   -1414, -1414, -1414,   621,   629, -1414, -1414,    11,  9069,  3253,
     1610     578,   492,   499,   631,   635,   642,   647,  9853,  7015,   649,
     1611     656, -1414,  9713, -1414, -1414, -1414, -1414,   661, -1414,   193,
     1612    3453,  3453, -1414,   667,   251, -1414, -1414, -1414, -1414,   692,
     1613     327,   346,   368,    98,   673, -1414, -1414,  1806,  3136,   748,
     1614   -1414,    12, -1414,    98,    98,   301, -1414, -1414,    75, -1414,
     1615      98,    98, -1414,  3167,   711,   722,   399,  6806, -1414, -1414,
     1616     726,  9565, -1414, -1414,  1721, -1414, -1414, -1414,   301, -1414,
     1617    1624,   -15, -1414,  7963, -1414,   399,   399,   399,   301, -1414,
     1618    1334, -1414,  5769, -1414, -1414,   709,   399, -1414,   399, -1414,
     1619     204,  9069, -1414,   763, -1414,   684,   765,   399, -1414,  1334,
     1620     750,   766, -1414,  7496,   705, -1414, -1414, -1414,  9532, -1414,
     1621   -1414, 10864, -1414,   748,    63,  6244, 10554,  2082,  3167, -1414,
     1622      85, -1414, -1414, 10444,  1624,   804,  7644, -1414, -1414,   319,
     1623   -1414, 11778,   782,   851,  4657,   828,  4994, 11639, -1414,   839,
     1624   -1414, -1414, -1414, -1414, 11658, 11658,  8841,   844, -1414, -1414,
     1625   -1414, -1414, -1414, -1414,   869, -1414,   759,  2440,  9183,  4994,
     1626   -1414,   593,   571,   645,   313,   861,   842,   858,   843,   911,
     1627     -20, -1414, -1414,   876,   326, -1414,    83, -1414, -1414,  3253,
     1628   -1414, -1414,   139,   900, -1414,   422,   900,   905,   204, -1414,
     1629   -1414,   909, 10414, -1414,   912,   917,  9297, -1414, -1414,  1382,
     1630    2358,  8427,  6806,  1721, -1414,  1721,   399,   399, -1414, -1414,
     1631   -1414, -1414, -1414, -1414,   399, 10414,  1624, -1414, -1414, 10584,
     1632    1776, -1414, 10304, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
     1633     936, 11446,  4994, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
     1634   -1414, -1414, -1414, -1414, -1414, -1414, -1414,  2082, -1414,   836,
     1635     947,   962,   963,   923,   965,   970,   972,  3136, -1414, -1414,
     1636     959,   -15,   975, -1414, -1414,   978, -1414, -1414, -1414,  9532,
     1637   -1414, -1414, -1414, -1414, -1414,  3167, -1414,  9069,  9069, -1414,
     1638     399,  2082,  6926,  1624,  8543, -1414, -1414, -1414, -1414,  9532,
     1639      63, -1414, -1414,  1721,   301, -1414, -1414,  9532, -1414,  6689,
     1640   -1414, -1414,   399,   399,   271, 10023,   907,   977,   960,   988,
     1641     399, -1414, -1414, -1414, -1414, 10980, -1414,   500,  6556, -1414,
     1642     301,   990, -1414,  2082, 11860, 11504, -1414, -1414, -1414, -1414,
     1643     935,  3167, -1414,  8659,   748,  6228, -1414, -1414, -1414,  1482,
     1644     550,   876,   684,  7644,  1180, 10444, -1414,  7644, -1414, -1414,
     1645   -1414, -1414,   561, -1414,   997,   851,   -13,  8841, -1414, 10694,
     1646   -1414, -1414,  8841, -1414,  8955,  8841, -1414, -1414,   996, -1414,
     1647     585,  1003,   455,  1017, -1414, -1414,  9993,  6037, -1414,   419,
     1648   -1414, -1414, 11562, -1414,   469, 11562, -1414, -1414, -1414, -1414,
     1649   -1414, -1414, -1414, -1414, -1414, -1414,  6244,  6244, -1414, -1414,
     1650    4994,  4994,  4994,  4994,  4994,  4994,  4994,  4994,  4994,  4994,
     1651    4994,  4994,  4994,  4994,  4994,  4994,  4994,  4994,  3735,  6244,
     1652   -1414,   326,  1049, -1414, -1414,    98,    98, -1414, -1414,  9069,
     1653   -1414, -1414,   978,   705, -1414,   978, 11581, -1414, -1414, -1414,
     1654    3645,  6037,  1016,  1018, -1414, 10554, -1414, -1414,   661, -1414,
     1655    1020,  1157,  1025,  2611,    95,   876, -1414,    98,    98,   876,
     1656     134, -1414,    98,    98,   978, -1414, -1414,    98,    98, -1414,
     1657     900, 10724,  1624, 12005,    69,   227, 10724, -1414, 10864, -1414,
     1658     876, -1414, 10414, -1414,   218,  8079,  8079,  8079,  1624, -1414,
     1659    5555,  1012,   260,   936,   778,  1021,  1024, -1414,  1026,  3453,
     1660     343, -1414,  1115,  1624,  8079,   705,  2082,   705,   748,   534,
     1661     900, -1414, -1414,   596,   900, -1414, -1414, -1414,   851, -1414,
     1662     900,   301, 10980, -1414,   687,  1042,   700,  1043, -1414,  1044,
     1663     301, -1414, -1414,  9532,   301,  1041, 10694,  1045, -1414,  2066,
     1664   -1414,   408,   416,   684, -1414,   684,  1047,  4994, -1414,   684,
     1665   12005, -1414, -1414,  1053, -1414, -1414, -1414,   705, -1414, 11933,
     1666     917, -1414,  8079,   489,  8427, -1414, -1414,   661,  1055,  1056,
     1667    1482,  3284, -1414, -1414,  7644, -1414, -1414,  1038, -1414, -1414,
     1668    1064, -1414,  1038,  1070, 11778,  6244,    93,  1051,   138,  1074,
     1669    1058,  1075,   844,  1069,  1077, -1414,  1079,  1081, 10133,  6775,
     1670   -1414,  6244, -1414,   455,  1974, -1414, -1414, -1414,    98,    98,
     1671    6104,  6244,  1076, -1414, -1414,   936,   707, -1414,  6244, -1414,
     1672   -1414,   677, -1414, -1414, -1414, -1414, -1414,   593,   593,   571,
     1673     571,   645,   645,   645,   645,   313,   313,   861,   842,   858,
     1674     843,   911,  4994,   847, -1414, 10980,  1083,  1084,  1088,  1049,
     1675   -1414, -1414, -1414, -1414, -1414, 10980,   717,  8079, -1414, 10414,
     1676   -1414,  7135,  9411, -1414, 10304,  7015, -1414, -1414,  1157, 10980,
     1677     945,  1089,  1090,  1095,  1096,  1099,  1100,  1105, -1414,  4392,
     1678    2611, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
     1679   -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414,   978, -1414,
     1680   -1414, -1414,   876, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
     1681   -1414,  1112, -1414,  1113,  1118, -1414, -1414,   -15,  1076,  5555,
     1682   -1414, -1414, -1414, 11446,  1116, -1414, -1414, -1414, -1414, -1414,
     1683     684,  6369,  1201, -1414, -1414, -1414, -1414,  1103,   -15, -1414,
     1684   -1414,   978, -1414, -1414,   978,   126,   978, -1414, -1414, -1414,
     1685   -1414, -1414, -1414,  9743, -1414,   301, -1414, -1414,   438,   452,
     1686   10584,  7255,  2372,  4994,  2870, -1414, -1414,  1127,    39,  1127,
     1687   -1414,   684, -1414,    98, -1414, -1414, 10163,   960, -1414, -1414,
     1688   -1414,   977,  1143,  1131, -1414, -1414,  1150,  1153, -1414,   489,
     1689    1995, -1414,   363, -1414,  3284,   876, -1414,  1160,  7644, 10834,
     1690    9069,  1161, -1414, -1414,  1151,  1162,  1156, -1414,  4994,   120,
     1691     279,  1163, -1414,  1166,   705,  1166,  6037,  6244, -1414, -1414,
     1692    1166,  1165, -1414,  1176,  1182,  1185,  1974, -1414, -1414, -1414,
     1693   11446, -1414, -1414, -1414, -1414,  1168,  6244,  1188,   705,  5555,
     1694   -1414, 11562, -1414,   705, -1414, -1414,  6244, -1414,   614,   900,
     1695   -1414, -1414, -1414, -1414, -1414, -1414, -1414,   936,   917,  9297,
     1696   -1414, -1414,  7375,  1187, -1414,   758,   900, -1414,   785,   797,
     1697     900, -1414,   399,  5912, -1414, -1414, -1414, 10980, 10980, -1414,
     1698    8543,  8543, -1414,  1186,  1189,  1191,  1199, -1414,  1206,   439,
     1699     119,  1076, -1414,   705, -1414,  3453, -1414,  6244,   480, -1414,
     1700    6655,  1211,  1212, 11388,  1213,  1217,    -6,    58,   117,  6244,
     1701    1221,   301,  6244,  6244,  1215,  1222,   610,  1203, -1414, -1414,
     1702   -1414,  1218, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
     1703   -1414,   684,  1226,  6244, -1414, 10980, 10980,    98,  1228, -1414,
     1704   10273, -1414, -1414,   864, -1414,  2870, -1414, -1414, -1414, -1414,
     1705    2066, -1414, -1414,  1230, -1414, -1414, -1414, -1414,  1231,  1995,
     1706   -1414, -1414,  1223, -1414,  1038, -1414, -1414,  2082,  1235, -1414,
     1707   -1414, -1414,   744,  1237, -1414,   138,  1245,  4994,  1232,   138,
     1708     138,  1250,  1246, -1414,  9993,   825,   900, -1414, -1414,  1026,
     1709    6244,  1251,  1168,   536,   161,  1261, -1414,  1246, -1414,  1254,
     1710    1261, -1414, -1414,  1257, -1414, -1414,   978,  1270,  1271,  6895,
     1711    1272,  1275,  1280, -1414, -1414,  1283, -1414, -1414,   978, -1414,
     1712   -1414, -1414, -1414,   978,  6244,  6244,   917,  1282, -1414, -1414,
     1713   -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
     1714    4994,  4994,  1284,  1286,  1261, -1414, -1414,   684, -1414, -1414,
     1715   -1414,  5291, 10834,  6244,  6244,  1335,  6244, -1414,  1263, -1414,
     1716    1267, -1414,  1281,  6244,  1288,  6244,  1039,  1290,    28,    98,
     1717    5165,   856, -1414, -1414,  6369,  1287,   488, -1414, -1414, -1414,
     1718   -1414, -1414, -1414, -1414, -1414, -1414, 11206, -1414,  8659,  1304,
     1719   -1414, -1414, 10834,   490,   498, -1414,  1301,  1306,   851,  1317,
     1720   -1414,   418, -1414, -1414,  6244,  1316, -1414, -1414,   978,  1314,
     1721   -1414, -1414,  1318,   589,   691,   705,  1320,  1322, -1414,  1329,
     1722   -1414, 10980, -1414, -1414, -1414, -1414, -1414,  1330, -1414, 10980,
     1723   10980, 10980, -1414, -1414,  1332, -1414,  1333,  1336,  1339,   517,
     1724    8195,  8311, -1414, -1414,   123, -1414,  1343,  1348, -1414,  8775,
     1725     755,   768,  1342,   770,  6525, -1414, -1414, -1414,   508, -1414,
     1726     777,  1352,  1353,   301,  1403,   933, -1414, -1414,  6244, -1414,
     1727   11388, 11562, -1414, -1414, -1414,  1359,  1364, -1414, -1414, -1414,
     1728    1363, -1414, -1414, -1414, -1414, -1414, -1414, 10834,   851,   273,
     1729   -1414,  1347,   851,  1168,   268, 10980, -1414, -1414, -1414, -1414,
     1730   -1414, -1414, -1414, -1414,  1365, -1414, -1414, -1414, -1414, -1414,
     1731   -1414,  1368,  1371, -1414, -1414, -1414, -1414, -1414, -1414, -1414,
     1732    1375, -1414,  1374, -1414, -1414, 11388,    91,  6244, 11388, -1414,
     1733    1385,  6244, -1414,   288,  1402,  1405, -1414, -1414,  1390,  1393,
     1734    1376, -1414,   882, -1414, -1414, -1414,  1624,  2082,  1388,   869,
     1735     884,  4994, -1414,   803,  1394,  6244, -1414,   705,   705,  1399,
     1736    1406,  1407,  1409, -1414, -1414,  8543,  1397, -1414,  1473,  4994,
     1737    1404, -1414, -1414, 11299, -1414,   811, -1414,  1395, 11388,  1401,
     1738   -1414, -1414,  1410, -1414,  1412, -1414,  1433,  1441, -1414,  1415,
     1739   10834, -1414, -1414, -1414,   851,   705,  1429,  1417,  1436, -1414,
     1740    1446,  1261,  1261, -1414, -1414, -1414, -1414, -1414, 11388,   278,
     1741   -1414,   910, -1414, -1414,  7730, -1414, -1414,  1435,  6244, -1414,
     1742    6244,  7730,   301, 10694,   301, 10694,  1462, -1414,  1463, -1414,
     1743   -1414,  1460,   869, -1414,   812, -1414, -1414,  6244, -1414,  1465,
     1744    1466, -1414,  4994,  4994, -1414, -1414,  1007,    37, -1414, -1414,
     1745    1447, -1414,  1007, -1414, -1414,  2485,   705, -1414, -1414,   301,
     1746   10694,   301, 10694,  1472,  1450,   705, -1414, -1414, -1414, -1414,
     1747   -1414, 11299,  1468,  1007,  7847,  6244, 11210,  1475,  1007,  1477,
     1748    2485,  2994, -1414, -1414, -1414,  1495, -1414, -1414, -1414, -1414,
     1749    9069, -1414, -1414, -1414, 11077, -1414, 11299, -1414, -1414,  1476,
     1750   10984, -1414, -1414, 11210,   301,  2994,   301,  1502,  1506,   813,
     1751   -1414, 11077, -1414, -1414, -1414, 10984, -1414, -1414, -1414,   301,
     1752     301, -1414, -1414, -1414, -1414, -1414, -1414, -1414, -1414
    17101753};
    17111754
     
    17131756static const yytype_int16 yypgoto[] =
    17141757{
    1715    -1318,  3762,  2543, -1318,  1454, -1318,    -1,     2,   -89, -1318,
    1716    -1318, -1318,  -483,  -942,  -282,  4006, -1318,  1670,   483,   485,
    1717      347,   484,   927,   931,   926,   932,   937, -1318,   792,  -594,
    1718     4587,   375,  -691,  -946, -1318,  -112,  -722,  -695, -1318,   412,
    1719    -1318,   304, -1184, -1318, -1318,    54, -1318, -1317,  -763,   149,
    1720    -1318, -1318, -1318, -1318,    -3, -1151, -1318, -1318, -1318, -1318,
    1721    -1318, -1318,   223,    51,    55, -1318,  -364, -1318,   402,   204,
    1722    -1318,    86, -1318,  -320, -1318, -1318, -1318,   450,  -745, -1318,
    1723    -1318,    10,  -865,   258,   180, -1318, -1318, -1318,  -222, -1318,
    1724      126,    49,  -187,   951,  3574, -1318, -1318,   213,   151,   363,
    1725     -251,  2053, -1318,  1304, -1318, -1318,   344,  1615, -1318,  1898,
    1726     1496, -1318, -1318,  -417,  -439,  1083,  1084,   597,   837,   279,
    1727    -1318, -1318,  1086,   598,   -23, -1318,    37,  -463,   807, -1318,
    1728    -1318,  -923,  -977,   142,   669,   965,   280, -1318,   175,   -35,
    1729     -257,  -199,  -156,   555,   651, -1318,   888, -1318,  1925,  1031,
    1730     -460,   803, -1318, -1318,   594, -1318,  -228, -1318,   140, -1318,
    1731    -1318, -1318, -1268,   320, -1318, -1318, -1318,  1067, -1318,     6,
    1732    -1318, -1318,  -851,   -86, -1303,  -124,  2887, -1318,  2837, -1318,
    1733      812, -1318,  -168,   585,  -176,  -173,  -171,     4,   -41,   -39,
    1734      -36,   834,    47,    56,    79,  -167,  -162,  -161,  -159,  -158,
    1735     -273,  -557,  -498,  -458,  -543,  -318,  -539, -1318, -1318,  -499,
    1736      986,   992,   993,  1485,  4182,  -565,  -577,  -550,  -542,  -536,
    1737    -1318,  -384,  -672,  -658,  -654,  -591,  -211,  -316, -1318, -1318,
    1738      152,   299,   -75, -1318,  2880,   592,  -631,  -200
     1758   -1414,  4377,  3077, -1414,  1645, -1414,   305,   958,   -11, -1414,
     1759     552,  -530,  -487,  -944,  -142,  3604,     0, -1414,  1277,   511,
     1760     529,   298,   549,  1057,  1060,  1054,  1062,  1065, -1414,  -211,
     1761    -327,  5116,  -961,  -725,  -952, -1414,  -200,  -594,   572, -1414,
     1762    1379, -1414,   397, -1413, -1414, -1414,   129, -1414, -1160,  -935,
     1763     246, -1414, -1414, -1414, -1414,    68, -1131, -1414, -1414, -1414,
     1764   -1414, -1414, -1414,   321, -1152,    33, -1414,  -696, -1414,   506,
     1765     296, -1414,   169, -1414,  -339, -1414, -1414, -1414,   558,  -728,
     1766   -1414, -1414,    19,  -974,   177,  2303, -1414, -1414, -1414,   -91,
     1767   -1414,   166,   269,  -194,  1705,  3615, -1414, -1414,    36,   224,
     1768     628,  -235,  1694, -1414,  1557, -1414, -1414,   200,  2163, -1414,
     1769    2278,   185, -1414, -1414, -1414,  -607, -1414,   956,   957,   545,
     1770     725,  -320, -1414, -1414, -1414,   950,   719,  -493, -1414,  -472,
     1771    -355,  1296, -1414, -1414,  -899,  -946,   440,   524,  1067,   168,
     1772   -1414,  1040,   317,  -281,  -198,  -141,   672,   781, -1414,  1005,
     1773   -1414,  2834,    55,  -450,   932, -1414, -1414,   712, -1414,  -228,
     1774   -1414,   104, -1414, -1414, -1414, -1285,   420, -1414, -1414, -1414,
     1775    1178, -1414,    31, -1414, -1414,  -862,   -94, -1364,  -152,  1641,
     1776   -1414,  3733, -1414,   927, -1414,  -170,   493,  -184,  -183,  -181,
     1777       7,   -42,   -36,   -33,  1610,     4,    10,    14,  -143,  -177,
     1778    -172,  -162,  -161,  -319,  -513,  -508,  -498,  -547,  -310,  -528,
     1779   -1414, -1414,  -511,  1101,  1102,  1110,  1575,  4802,  -565,  -560,
     1780    -559,  -541,  -551, -1414,  -506,  -744,  -736,  -732,  -593,  -267,
     1781    -227, -1414, -1414,   624,   294,   -85, -1414,  3753,    44,  -634,
     1782    -173
    17391783};
    17401784
     
    17421786   positive, shift that token.  If negative, reduce the rule which
    17431787   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1744 #define YYTABLE_NINF -511
     1788#define YYTABLE_NINF -526
    17451789static const yytype_int16 yytable[] =
    17461790{
    1747      110,   146,    46,   147,    95,   393,   148,   447,   394,   378,
    1748      395,   111,   704,   422,   401,   402,   434,   885,   923,   396,
    1749      397,   731,   398,   399,   500,   836,   611,   263,   256,   965,
    1750      473,   861,   924,    46,   743,    95,   925,   140,   748,   844,
    1751      710,  1078,  1129,   630,    46,   832,    46,   634,   158,  1374,
    1752      113,   778,   837,  1137,  1171,    47,    46,    30,    30,   404,
    1753      838,   843,    46,   835,   189,    46,   699,   212,    46,   847,
    1754      222,   606,    30,   810,   120,   854,   215,   338,   108,   108,
    1755      984,  1436,   108,   276,   941,   393,    47,   530,   394,   149,
    1756      395,  1432,   671,   156,   401,   402,   923,   927,   150,   396,
    1757      397,  1181,   398,   399,   833,    30,    46,  1169,  1170,    46,
    1758      924,   419,   680,  1120,   925,    46,   198,   119,   403,   940,
    1759      684,   151,   248,   405,   405,  1199,    60,  1177,   286,   598,
    1760     -225,  -225,    30,   477,   479,   277,   413,  1195,   405,   770,
    1761      146,  1197,   147,  1447,   834,   148,    46,  1077,   158,   248,
    1762      325,    67,   254,  1178,    46,  1432,   968,    60,   156,    46,
    1763      199,   368,   478,   675,   677,  1436,  1394,  1395,   108,   483,
    1764     1436,   405,   139,   875,   875,   875,    30,   108,   521,   832,
    1765       54,    54,    67,    46,    46,  1187,   158,  1436,   507,   567,
    1766      473,   875,   319,   108,  1436,  -225,   160,  1066,   108,    46,
    1767      530,   335,   530,    30,   138,   669,   774,    46,  1246,   158,
    1768      473,    54,   141,    66,   208,   780,    46,   738,   473,    46,
    1769      146,   437,   147,   568,   143,   148,   731,   753,   149,  1085,
    1770     1396,  1327,   666,   667,   754,  1247,  1329,   150,   833,   747,
    1771      845,   864,   603,    54,    66,   865,    54,   467,  1171,    46,
    1772      424,    95,   836,   465,   428,   237,   240,   761,    53,   112,
    1773      151,   160,   589,    46,    46,   875,   158,   852,   152,   603,
    1774       46,   704,   832,   732,   821,   167,  1026,    46,   834,   837,
    1775      372,   530,   695,   697,   319,   450,   611,   838,   518,    53,
    1776     1013,   338,   741,  -455,  1323,   847,   373,  1171,  1025,   104,
    1777      104,   731,    47,  1508,   658,  1186,  1139,  1377,   674,   676,
    1778     1002,   887,  1394,  1395,   666,   667,   428,   870,   530,   490,
    1779     1517,   206,   814,  -455,   216,  -455,    46,  1521,   368,  -455,
    1780      104,   833,   673,   343,   173,  1457,  1509,  1201,   678,   523,
    1781      381,   888,   156,   645,    74,    46,    46,   889,   550,   165,
    1782     1169,  1170,   966,   551,   552,   875,   382,   429,  1192,  1078,
    1783     1522,  1178,    46,   916,   441,   104,    46,   108,   436,   136,
    1784      137,   834,   836,    60,  1119,    74,  1405,   866,   474,   478,
    1785      177,   867,   598,   462,   257,   844,   588,   258,   455,   595,
    1786      197,   108,    46,   136,   137,  -281,   521,    54,    67,   837,
    1787      521,   569,    46,   521,   368,   881,   848,   838,   628,   384,
    1788      851,   598,   632,  1171,   459,   335,   598,   752,   861,   429,
    1789       46,   108,  1187,   136,   234,   385,    46,    54,    46,  -109,
    1790      225,   868,   239,   386,   226,   871,  1381,   230,   578,   232,
    1791     1421,  1422,   525,    36,   579,   160,   241,    39,   243,   387,
    1792     -109,   338,    46,   246,    40,    41,   803,   235,  -109,  -109,
    1793       66,   473,   236,  -506,   169,  1077,   685,  1427,   110,   319,
    1794      319,   248,   579,   755,  -109,   435,    46,   756,   732,   829,
    1795      762,   603,  1157,  1159,    46,   722,   368,   -10,    46,   604,
    1796       95,   723,    46,   886,   433,  1242,   208,   450,  1107,   500,
    1797      450,  1088,  1121,   945,  1007,    53,   450,   249,   821,  1122,
    1798     1135,   388,   260,   758,   393,  1066,   739,   394,   113,   395,
    1799      553,   554,   740,   611,   401,   402,  1236,   389,   396,   397,
    1800      775,   398,   399,   758,   899,   781,  -431,  1026,   474,  -432,
    1801      705,    47,  1360,   490,  1093,   319,   104,   490,   485,   495,
    1802      646,   496,   699,   732,   326,   502,   706,   523,   474,   557,
    1803      558,   523,   707,   319,   523,  1358,   474,  1168,  1024,  1187,
    1804      897,   225,   705,   707,  1184,   335,  1187,  1184,   708,   906,
    1805      379,   749,   467,  1275,  1276,    94,  1312,   750,   919,   920,
    1806     1185,    74,    46,  1303,   559,   560,    74,  1093,   821,   272,
    1807      455,   411,  1313,   455,    46,  1367,    46,   343,   720,   455,
    1808      729,   274,    60,   338,   876,   877,    94,  1314,   866,   580,
    1809     1187,   405,  1103,   173,   431,    46,   208,   145,   319,    94,
    1810      709,   895,   275,  1315,   439,   459,   163,    67,  1404,   819,
    1811      631,    46,   595,  1321,   635,   185,   765,   366,    94,   704,
    1812     1322,    94,   766,   766,   896,    46,   898,  -102,    46,  1393,
    1813      525,  -102,  1401,  1029,   525,   969,    54,   525,   742,  1361,
    1814      746,   860,   910,   874,   874,   874,   595,   327,   766,  1037,
    1815      328,  1024,   869,   731,   108,   329,   136,   137,   338,  1463,
    1816      330,   874,    46,  1346,    46,   331,  1463,  1347,  1482,    66,
    1817     1082,   163,   522,  1435,  1487,   948,   367,   343,  1439,  -109,
    1818      225,  -109,   230,   555,   556,  -109,  1465,   571,  1466,   405,
    1819      744,  1504,   944,   561,   562,   745,  1511,   572,  1044,    94,
    1820     -109,  -109,  1115,  1456,   583,   323,   405,   335,    46,    46,
    1821     1505,   768,    94,   405,    53,     2,   202,     4,     5,     6,
    1822        7,   769,    46,   371,  1234,  1104,    74,   912,  1238,   450,
    1823      666,   667,   383,   766,  1506,   874,   392,   185,   695,   697,
    1824      391,   343,   949,   821,   603,   436,    74,   248,   325,   405,
    1825      992,  1004,   950,  1417,    74,   104,   993,   723,  1232,   490,
    1826       94,   413,   662,   405,   579,  1005,   403,   430,   598,   225,
    1827     1429,   420,    94,    34,   823,    35,   900,  1516,   405,   474,
    1828     1349,   421,   335,  1516,   720,   729,   343,   343,   343,   923,
    1829      882,   426,  1516,  1354,   766,   997,  1516,   323,   444,   766,
    1830       74,    46,    94,   924,   343,  1161,    36,   925,   179,   180,
    1831       39,    36,   457,    46,  1355,    39,   481,    40,    41,   682,
    1832      766,   474,    40,    41,  1357,   874,   483,   325,   405,   430,
    1833      766,   463,   455,  1480,  1429,    -3,   903,   208,   405,  1006,
    1834     1362,   464,   602,   819,   603,   460,   766,    42,   159,   108,
    1835      935,   208,   604,   724,   486,   163,   938,   144,   506,  1182,
    1836      729,  1064,  1418,  1437,   190,  1475,  1525,   213,  1415,   766,
    1837      223,  1476,   579,   863,   791,   792,   793,   794,   343,    94,
    1838        8,     9,    10,    11,    12,   108,    46,   136,   137,   878,
    1839      522,   845,   325,   603,   522,   514,  1141,   522,   405,   605,
    1840       46,   526,   600,   894,  1153,   732,   405,    30,    46,     2,
    1841      202,     4,     5,     6,     7,   286,  1156,   720,   603,   530,
    1842       36,    63,   114,  1158,    39,   603,    46,   720,   325,   405,
    1843       33,    40,    41,   819,  1328,  1330,  1331,   450,  1220,  1108,
    1844      405,   563,   720,   208,   931,   564,   931,   566,   159,   531,
    1845      532,   533,    63,  1294,  1295,   185,   736,  1415,  1416,  1131,
    1846      565,   369,   758,  -428,  1131,   157,   737,    34,   343,    35,
    1847      569,   571,   534,   405,   535,   343,   536,   490,  1110,   319,
    1848      334,   572,   323,   323,   732,   587,   159,   217,    60,   126,
    1849      590,   127,   128,   129,  1227,  1458,  1459,    74,   640,   969,
    1850      502,  1394,  1395,   969,   969,   696,   787,   788,   823,   159,
    1851      789,   790,  1131,    67,   659,   795,   796,   660,   661,   663,
    1852      664,   438,  1064,   668,   255,  1196,  1198,  1200,   860,   646,
    1853      665,   670,   253,   711,   688,   751,  1049,   713,  -229,    74,
    1854      455,    94,    54,   763,   767,   605,   771,   824,  1283,  1284,
    1855      826,  1286,   828,   908,   839,   884,  1494,  1290,   323,   891,
    1856     1293,   -12,   915,   883,   211,   324,   917,     8,     9,    10,
    1857       11,    12,   911,   255,   345,    66,   323,   913,   914,   918,
    1858      691,   238,    46,   939,     8,     9,    10,    11,    12,  -405,
    1859     -510,   953,   960,   740,    30,   962,   967,   973,   974,  1093,
    1860      977,   338,   978,   400,   979,   721,   976,   450,   819,    54,
    1861      999,    30,   988,  1000,  1001,   211,  1319,    33,   418,  1015,
    1862       53,   423,   425,  1016,  1017,   343,   157,   646,   369,  1018,
    1863     1019,  1020,  1021,   436,    33,  1032,  -393,  -392,  1079,   720,
    1864      720,   323,  1081,  1046,  1089,  1090,   474,   442,  1091,  1092,
    1865     1097,   445,  1096,   446,  1099,   600,  -282,   831,   211,   605,
    1866     1098,   104,   461,     8,     9,    10,    11,    12,    63,   215,
    1867     1100,    67,  1106,   475,  1116,   768,   766,   405,    46,  1064,
    1868      343,   343,  1117,   482,   862,   769,  1118,  1109,   982,   600,
    1869       30,   425,  1123,  1127,  1130,   720,   720,  1151,  1174,  1375,
    1870       54,  1172,  1173,  1375,   369,  1175,    74,  1190,  1176,  1108,
    1871      455,  1206,  1191,    33,  1400,  1131,  1131,  1131,   211,    36,
    1872     1193,   170,   171,    39,  1049,   335,  1194,  1202,   104,  1207,
    1873       40,    41,    36,  1189,   170,   171,    39,  1208,    -3,  1213,
    1874     1515,  1218,   729,    40,    41,   922,  1224,   696,  1110,   495,
    1875     1228,  1233,  1235,  1237,  1240,  -283,   211,  1413,   255,  1244,
    1876      211,   596,     8,     9,    10,    11,    12,   624,   367,  1064,
    1877     1248,  1253,  1251,  1255,    72,  1256,  1257,  1285,    53,  1258,
    1878      629,  1259,  1261,  1268,   629,   393,  1277,   255,   394,    30,
    1879      395,   831,   605,  1278,   401,   402,  1448,  1108,  1087,   396,
    1880      397,  1302,   398,   399,  1310,    72,    60,  1288,  1289,   208,
    1881     1291,   721,    33,  1316,  1292,   666,   667,  1299,  1318,   104,
    1882     1320,   729,  1325,  1064,  1324,  1326,  1064,  1332,  1333,  1281,
    1883     1334,    67,  1336,   475,  1342,  1308,  1110,  1343,    54,    54,
    1884      218,  1344,  1345,  1356,    46,    46,   211,  1352,   345,  1353,
    1885     1363,  1131,  1131,   475,  1493,  1295,  1366,  1368,  1369,  1371,
    1886       54,   475,  1378,  1381,    74,  1388,   720,  1064,  1389,  -394,
    1887     1392,  1403,  1064,  1407,   720,   720,   720,  1409,  1414,    54,
    1888     1423,  1419,  1424,   474,   831,  1449,  1428,   716,  1425,  1426,
    1889      425,  1108,  1433,    66,  1438,  1442,   605,  1064,  1347,  1440,
    1890     1444,  1446,  -284,   436,  1453,   730,  1451,    63,    67,     8,
    1891        9,    10,    11,    12,  1472,   425,   206,   216,   720,   425,
    1892      146,  1452,   147,   343,   343,   148,   211,   348,  1474,  1464,
    1893     1110,  1478,    54,  1479,  1486,  1498,    30,    54,    53,  1499,
    1894     1495,  1518,    46,  1203,   721,  1500,  1503,   255,   345,   909,
    1895     1510,  1064,  1512,   926,   721,  1524,  1064,  1109,   104,    33,
    1896      797,   799,  1470,    46,    46,   798,   158,    54,   800,   721,
    1897     1189,  1064,  1243,  1064,   801,   926,   211,  1064,   172,   104,
    1898     1064,  1406,  1481,   696,  1301,    46,  1064,   368,  1526,  1365,
    1899     1064,   696,  1470,   809,  1497,  1239,  1379,  1467,   104,  1212,
    1900      443,   686,   687,  1094,   932,  1045,  1095,  1126,   890,   605,
    1901      435,   629,   822,   955,   596,    53,   715,   319,   816,  1311,
    1902     1105,    72,   323,   734,    74,   841,    72,   806,   172,   210,
    1903      474,   172,   963,   807,   808,     0,     0,   474,     0,     0,
    1904      343,     0,     0,   596,     0,  1109,     0,     0,   596,     0,
    1905        0,     0,     0,     0,   629,    67,   104,   345,   345,   345,
    1906        0,    54,    67,     0,   996,  1471,    36,     0,   179,   180,
    1907       39,   862,     0,     0,     0,   345,   172,    40,    41,     0,
    1908      210,   474,   998,     0,    54,    75,   104,     0,     0,     0,
    1909        0,    54,  1003,   716,     0,  1471,     0,   211,     0,     0,
    1910        0,    74,   181,     0,   475,     0,    67,  1014,     0,   255,
    1911      730,     0,   182,   928,     0,     0,    75,  1189,     0,     0,
    1912      218,     0,  1412,   210,  1189,   211,     0,     0,     0,     0,
    1913      211,     0,     0,     0,     0,    54,     0,     0,   172,  1109,
    1914      407,     0,  1039,     0,     0,     0,   475,   415,     0,   345,
    1915        0,   219,    36,     0,   179,   180,    39,     0,   954,     0,
    1916        0,   425,    53,    40,    41,     0,   721,   721,  1189,    53,
    1917        0,     0,     0,     0,     0,     0,     0,  1364,     0,     0,
    1918      104,     0,     0,   210,   255,   730,    72,     0,   261,     0,
    1919      981,     0,   172,    36,     0,   170,   171,    39,   262,   172,
    1920        0,   348,     0,   104,    40,    41,    72,     0,     0,     0,
    1921      104,     0,     0,    53,    72,     0,     0,   211,     0,   407,
    1922        0,   210,   721,   721,     0,   210,   716,     0,     0,   371,
    1923      926,   211,     0,     0,     0,     0,   716,     0,   350,   345,
    1924      348,   629,     0,     0,  1012,   629,   822,     0,    74,     0,
    1925        0,   716,     0,     0,   104,    74,     0,     0,   348,  1138,
    1926       72,  1023,     8,     9,    10,    11,    12,   172,     0,     0,
    1927        0,     0,     0,     0,   577,     8,     9,    10,    11,    12,
    1928        0,     0,   581,     0,   172,   584,     0,     0,   172,    30,
    1929        0,     0,     0,     0,     0,     0,     0,     0,     0,    74,
    1930        0,   348,    30,     0,  1166,  1167,     0,     0,     0,  1039,
    1931        0,   210,    33,    63,     0,     0,     0,    36,     0,   179,
    1932      180,    39,     0,   211,  1468,    33,     0,     0,    40,    41,
    1933       36,     0,    75,     0,    39,   629,     0,    75,     0,     0,
    1934        0,    40,    41,     0,     0,     0,     0,   407,     0,     0,
    1935      172,   415,     0,   602,  1496,   603,     0,     0,     0,     0,
    1936     1215,  1216,  1309,   604,     0,   348,    42,     0,    77,     0,
    1937        0,  1102,     0,     0,     0,     0,   144,     0,     0,   425,
    1938      114,     0,   926,     0,     0,     0,     0,     0,     0,     0,
    1939        0,   210,     0,   721,  1523,    84,   345,     0,     0,    77,
    1940        0,   721,   721,   721,     0,     0,  1528,     0,     0,     0,
    1941      348,   348,   348,     0,     0,     0,     0,     0,     0,   511,
    1942        0,     0,     0,     0,     0,     0,    84,     0,   348,     0,
    1943      596,   219,   528,   529,   220,     0,   407,     0,     0,   926,
    1944      926,   210,     0,   423,   549,   721,   348,     0,   716,   716,
    1945        0,   345,   345,     0,     0,     0,     0,    72,     0,     0,
    1946        0,   221,     0,   348,     0,     8,     9,    10,    11,    12,
    1947        0,  1188,     2,   202,     4,     5,     6,     7,     0,     0,
    1948      529,     0,    36,     0,   179,   180,    39,     0,     0,     0,
    1949        0,     0,    30,    40,    41,     0,     0,    75,     0,    72,
    1950      224,     0,   348,     0,   716,   716,     0,     0,     0,     0,
    1951      629,     0,   350,   211,   172,    33,   529,    75,   690,     0,
    1952      405,   351,     0,     0,     0,    75,   577,   577,   692,     0,
    1953       34,  1335,    35,     0,     0,     0,     0,     0,   348,  1337,
    1954     1338,  1339,     0,     0,     0,     0,   481,   172,   358,     0,
    1955        0,   350,     0,     0,     0,     0,   949,     0,   603,     0,
    1956      323,     0,   210,   172,     0,     0,   950,   730,     0,   350,
    1957       36,    75,   179,   180,    39,     0,     0,   172,     0,   348,
    1958        0,    40,    41,  1370,     0,     0,   209,     0,     0,   348,
    1959      210,     0,   348,     0,     0,   210,   228,   218,     0,   348,
    1960        0,     0,     0,     0,   348,     0,  1491,     0,   405,     0,
    1961     1282,     0,   350,     0,   901,    77,  1492,     0,   904,     0,
    1962       77,    36,     0,   179,   180,    39,     0,   255,     0,     0,
    1963        0,    63,    40,    41,     0,     0,     0,   209,     0,   926,
    1964        0,     0,    84,     0,   716,     0,   730,    84,     0,     0,
    1965      114,   407,     0,     0,     0,     0,   926,   690,     0,   405,
    1966        0,     0,     0,     0,     0,   691,    72,   692,     0,     0,
    1967        0,     0,     0,     0,   172,   716,   350,     0,     0,     0,
    1968      209,     0,   210,   716,   716,   716,     0,     0,     0,   211,
    1969      784,   785,   786,     0,   345,   345,   210,   537,   538,   539,
    1970      540,   541,   542,   543,   544,   545,   546,     0,  1188,     0,
    1971        0,     0,     0,     0,   220,     0,     0,     0,     0,   926,
    1972      926,   350,   350,   350,     0,     0,     0,   716,     0,     0,
    1973      547,     0,     0,   529,     0,     0,     0,     0,   114,   350,
    1974      209,   221,     0,     0,     0,     0,     0,     0,     0,   348,
    1975        0,     0,     0,     0,     0,     0,     0,   350,     0,     8,
    1976        9,    10,    11,    12,   577,     0,     0,     0,    75,     0,
    1977        0,     0,     0,     0,   350,     0,     0,     0,   209,     0,
    1978       77,     0,   209,   211,     0,     0,    30,     0,   210,     0,
    1979        0,     0,     0,     0,     0,   351,     0,     0,   501,     0,
    1980       77,   348,   348,     0,   348,   348,     0,    84,    77,    33,
    1981       75,   345,     0,   350,    36,     0,   179,   180,    39,     0,
    1982        0,     0,   358,     0,    72,    40,    41,    84,     0,     0,
    1983        0,     0,   114,     0,   351,    84,     0,     0,   172,     0,
    1984        0,     0,     0,     0,     0,     0,     0,     0,     0,   350,
    1985      181,     0,   351,     0,    77,  1188,     0,   348,   348,     0,
    1986      182,   358,  1188,     0,     0,     0,   529,     0,   209,     0,
    1987        0,     0,     0,     0,     0,     0,     0,   407,     0,   358,
    1988        0,    84,     0,     0,     0,     0,     0,     0,     0,     0,
    1989      350,     0,     0,     0,     0,   351,     0,     0,     0,     0,
    1990      350,     0,     0,   350,     0,     0,  1188,     0,   219,     0,
    1991      350,   983,     0,  1513,     0,   350,     0,     0,     0,     0,
    1992      348,     0,   358,     0,   469,     2,   202,     4,     5,     6,
     1791      50,   115,   151,   400,   401,   771,   402,    99,   152,   973,
     1792     403,   153,   429,   454,   874,   404,   756,   974,   408,  1080,
     1793     116,   975,   262,   441,   269,   405,   406,   744,   850,   384,
     1794     385,   605,    50,    51,  1142,   982,    70,   411,   833,    99,
     1795     610,   825,   826,   727,   149,   409,   499,   732,   154,  1150,
     1796      50,    31,  1398,   836,   155,  1462,   832,   163,   156,   843,
     1797     827,   800,   282,   145,   188,    51,  1208,   211,    70,   528,
     1798      50,   195,   343,   824,   218,   567,  1200,   228,    31,   597,
     1799     671,  -235,  -235,   400,   401,  1184,   402,   926,   821,   221,
     1800     403,  1318,   170,   822,   168,   404,   520,   737,   408,  1194,
     1801     680,  1217,  1218,   823,   738,   405,   406,   115,   684,   426,
     1802     568,   476,   478,  1550,    31,   115,   171,   124,   268,   273,
     1803     283,   254,   217,   412,    31,   409,  1209,   410,   715,  1462,
     1804    1210,  1182,  1183,  1561,    31,  1419,  1420,    31,   629,   244,
     1805    1565,   955,   633,   865,   866,   151,   675,   677,   308,   149,
     1806     412,   152,  -235,  1079,   153,  1481,   163,   115,   346,   168,
     1807    1319,   884,   211,   863,   863,   863,    64,   472,   973,   374,
     1808     722,   204,   477,    31,   217,   528,   974,    57,   117,  1260,
     1809     975,   853,   863,   920,   420,   854,   412,   188,   188,  1212,
     1810    1211,   154,   328,   578,   482,   163,   412,   155,    64,   579,
     1811      78,   156,   528,   268,   834,  1421,   602,   821,   528,    57,
     1812     956,    50,   822,   669,   731,  1190,   716,   217,   163,   938,
     1813     293,   205,   823,   211,    71,   151,   179,   674,   676,  1127,
     1814     444,   152,    78,   746,   153,  1213,  1087,   666,  -113,  -113,
     1815     863,   308,  1191,   841,   212,   602,  1263,   222,   580,   958,
     1816     412,   125,   216,    50,  -113,   437,    71,   589,   825,   826,
     1817      99,   273,   144,  1466,   667,  1026,   273,   268,   268,   836,
     1818     118,  1152,   506,   115,  1264,   163,   263,   827,   217,   264,
     1819     864,   864,   864,  1025,   464,   328,    51,   343,  1001,    70,
     1820    1013,   214,  1184,   610,   108,   108,   308,  1103,   804,   864,
     1821    1090,   146,  1343,   658,   216,   821,   113,   520,   308,   378,
     1822     822,   666,   520,   148,  1004,   520,   217,   437,   725,   161,
     1823     823,   217,  1199,  1508,   572,   379,   108,   477,   472,   149,
     1824    1200,   673,  1419,  1420,   448,   863,   374,   678,   667,   855,
     1825    -470,   157,   115,   856,   905,  1184,   346,   216,   472,   569,
     1826     603,   621,   168,   461,   597,   528,   472,   864,  1537,   597,
     1827    1539,  1466,  1080,   810,   108,   626,  1466,   388,   793,   626,
     1828     930,  -470,   115,  -470,  1492,   833,   260,  -470,  -113,   825,
     1829     826,   685,  1401,   389,   161,  1405,  1466,   579,   440,  1128,
     1830     599,  1182,  1183,  1466,   715,  1551,  1129,   268,   827,  -113,
     1831     442,  1191,  1430,   557,   558,   859,   217,   188,   216,     8,
     1832       9,    10,    11,    12,   374,   173,   850,   324,   183,    64,
     1833      43,   252,  1566,   876,   473,   268,   340,   308,   308,  1247,
     1834      57,   268,   837,  1251,   626,   571,   840,   412,    31,   559,
     1835     560,   343,   484,   391,    46,    47,   216,   443,   494,   501,
     1836     495,   216,   864,    78,   877,   115,   644,   857,    78,   392,
     1837     878,   860,   393,  1451,  1452,  1214,    34,  1170,  1172,  1184,
     1838    1138,   328,   328,   268,   203,   855,   431,    71,   394,  1110,
     1839     435,   268,   716,   626,   395,    50,   929,   217,   374,   721,
     1840    1200,   112,    99,    98,   736,   115,  1079,  1200,  1114,   499,
     1841     396,   249,    41,    42,  1148,  1259,   888,   308,   875,   115,
     1842     324,  1024,   308,  -291,   308,   308,  1457,   179,    51,   917,
     1843     610,    70,   754,  -521,   921,    98,   115,   346,  1341,   217,
     1844     763,   583,   923,   412,   630,  1342,   216,   150,   634,   328,
     1845     922,   112,   435,    98,  1026,   489,   919,   108,   924,    43,
     1846    1200,  -106,    41,    42,   921,  -106,   715,   191,   328,   466,
     1847      98,  1521,   886,    98,   753,   522,   412,  1526,   923,   254,
     1848    1091,   572,   572,    46,    47,   214,  1381,   161,   265,   308,
     1849     769,   995,  1006,    43,  1092,   473,  1094,   810,  1546,  1138,
     1850     626,   346,   472,  1553,   920,   621,  1197,  1097,   939,  1097,
     1851     602,   603,   331,   603,  1197,   473,  1332,    46,    47,   332,
     1852     706,   588,  1198,   473,  1334,   594,   707,   216,   935,    78,
     1853    1324,   626,  1333,   328,   751,  1024,   626,   812,   621,  1367,
     1854    1335,  1126,   626,  1368,   627,   626,   626,   626,   631,    78,
     1855    1382,   340,    98,   889,   716,   412,  -113,    78,  -113,   713,
     1856     217,    64,  -113,   -10,   626,    98,   268,   895,  1039,   216,
     1857     723,   112,    57,   343,  -444,   851,   724,  -113,  -113,  1037,
     1858     599,   733,    41,    42,   165,  1181,   810,   734,   217,  1029,
     1859     399,   191,   288,   217,  -445,    78,   115,   254,   330,   914,
     1860    1084,   553,   554,    41,    42,   750,   324,   324,   214,   231,
     1861    1348,   751,   929,   232,    98,   892,   236,   412,   238,    71,
     1862    1379,   550,   626,   940,   621,   247,    98,   551,   552,   515,
     1863     721,   721,  1122,  1154,   689,   412,   278,   959,   400,   401,
     1864     280,   402,  1044,   555,   556,   403,  1498,   118,   281,   165,
     1865     404,   333,   597,  1498,   408,   334,    98,   929,   115,   346,
     1866     405,   406,   335,   754,   754,   217,   112,   336,   141,   142,
     1867     480,   372,   489,   112,   324,   373,   489,    41,    42,   217,
     1868     377,   409,  1111,   113,    41,    42,   522,   112,   522,   108,
     1869     216,   522,   386,   324,   522,  1151,   973,  1429,    41,    42,
     1870     852,  1392,   994,   991,   974,   340,  1547,   899,   975,   572,
     1871    1249,   390,  1350,   751,   715,   398,   867,   626,   216,   626,
     1872     901,  1009,   410,   216,   626,   346,   751,   990,   603,   743,
     1873     427,   883,    98,   991,   739,   343,   740,  1003,  1174,   741,
     1874     603,   428,   747,   707,   764,   436,  1039,   743,   433,   770,
     1875     743,   451,   231,   604,   529,   530,   531,   443,   324,   473,
     1876     112,   812,   141,   142,  1245,   781,   782,   783,   784,   808,
     1877     579,    41,    42,  1292,  1293,  1375,   217,  1166,   532,   412,
     1878     533,   751,   534,   535,  1500,   473,  1501,  -368,  1376,  -397,
     1879    1378,   308,   462,    78,   751,   216,   751,  1383,   466,   870,
     1880     849,   505,   716,   751,  1169,   594,   602,   436,   463,   216,
     1881     191,   858,   501,   626,  1195,   704,  1171,   810,   602,    78,
     1882     115,   346,   914,  1447,   914,   713,   929,    70,   485,  1444,
     1883     524,  1467,  1514,  1571,   214,   666,   115,   751,  1515,   579,
     1884     917,  1548,   165,   293,  1256,  1370,   412,   509,   214,   940,
     1885     940,   529,   530,   531,   721,   254,   330,   412,   514,   115,
     1886     308,   528,   667,   561,   562,   689,   526,   919,    49,   114,
     1887     885,   563,   887,   751,   996,   532,   346,   533,  1115,   534,
     1888    1321,   716,   565,    37,   330,   412,   754,    40,    98,   929,
     1889     929,   231,   604,   236,    41,    42,   564,   114,   114,   705,
     1890      49,  1388,  1389,   489,   328,    43,   216,  1439,   991,  1533,
     1891    1444,  1445,    49,  1300,  1301,   566,  1303,   569,    49,   346,
     1892      44,   339,   934,  1308,  -441,  1310,    49,   340,   587,    46,
     1893      47,   694,    49,  1240,   590,    49,  1493,  1494,    49,    -3,
     1894     626,   626,   420,   662,   412,   214,     2,   208,     4,     5,
     1895       6,     7,   114,   114,   482,   330,   412,    64,   639,  1138,
     1896     308,  1419,  1420,   851,   834,   330,   602,   659,    57,     8,
     1897       9,    10,    11,    12,   777,   778,    49,   217,   668,    49,
     1898     143,   231,   660,   661,  1446,   663,    49,   713,  1005,   693,
     1899     664,    78,   665,   808,   779,   780,  1202,   670,    31,   259,
     1900     115,   697,  1459,   695,   820,   914,   604,  1311,  1312,  1313,
     1901     914,    35,   699,    36,  -239,    71,   735,    49,   748,   940,
     1902     785,   786,   704,   752,   959,    49,    34,   268,   959,   959,
     1903      49,  1349,  1351,  1352,   243,   246,  1116,   760,   813,   -12,
     1904     814,   524,   817,   524,   626,   343,   524,   828,   -13,   524,
     1905    -292,   872,   873,    43,   880,    49,    49,     8,     9,    10,
     1906      11,    12,   900,   902,   724,   907,   903,   910,   571,   346,
     1907     412,    49,   928,  -418,    -3,  1519,  1459,    46,    47,    49,
     1908    -525,   943,   808,   950,   964,   108,    31,  1425,    49,   340,
     1909     952,    49,   918,   957,   963,   965,   967,   968,   114,   969,
     1910     929,   970,   986,   998,   999,   689,   705,   216,  1000,  1015,
     1911    1016,   273,   115,   114,    34,  1017,  1018,   114,   929,  1019,
     1912    1020,    49,   114,   820,   604,  1021,   473,   489,  1117,   324,
     1913     115,   221,  1032,  -406,   308,    49,    49,    57,  -405,    37,
     1914    1081,  1046,    49,    40,  1083,   704,   443,  1339,   626,    49,
     1915      41,    42,   115,   108,   913,   704,   112,  1105,   141,   240,
     1916      78,    43,   112,  1104,   141,   142,   217,    41,    42,   704,
     1917      70,  1115,  1106,    41,    42,  1107,   818,   751,   602,  1131,
     1918    1113,  1123,  1124,  1125,    71,    46,    47,  1134,   849,  1130,
     1919     980,   929,   929,   241,  1140,   458,  1135,    49,   242,   728,
     1920     626,   626,  1136,  1144,   729,  1137,   743,  1164,  1144,   273,
     1921    1143,  1187,  1185,  1442,   308,  1186,  -293,    49,    49,  1188,
     1922     693,   820,  1559,     8,     9,    10,    11,    12,  1189,   705,
     1923    1203,  1204,  1206,   604,    49,   713,  1207,  1399,    49,   705,
     1924    1215,  1399,  1219,    -3,  1220,  1222,  1227,   115,  1232,   645,
     1925    1202,  1237,    31,   705,   108,  1235,   400,   401,  1144,   402,
     1926    1241,  1246,   494,   403,   217,    49,  1115,  1248,   404,   689,
     1927    1253,   408,  1254,  1261,  1250,    49,  1268,  1270,   405,   406,
     1928      34,     2,   208,     4,     5,     6,     7,  1265,   212,   222,
     1929    1272,  1273,  1302,    49,  1274,   666,   216,  1275,   409,    49,
     1930      64,    49,  1276,  1278,  1285,  1305,  1294,   268,  1295,  1306,
     1931     230,    57,  1323,   808,   713,  1093,   131,   918,   132,   133,
     1932     134,  1532,   667,  1307,  1330,   626,  1336,    41,    42,  1116,
     1933    1309,   646,  1317,  1338,    78,   214,   114,  1340,  1344,  1346,
     1934    1347,    49,  1353,  1482,  1354,   175,    35,   604,    36,    49,
     1935     115,  1355,  1357,    49,  1363,  1364,  1365,    49,    71,  1366,
     1936     114,  1377,   114,  1068,    37,  1373,   176,   177,    40,  1115,
     1937    1374,  1384,  1385,  1313,   115,    41,    42,   704,   704,  1393,
     1938     473,   115,   645,   115,  1394,   115,   442,  1395,   255,  1402,
     1939    1413,    57,  1405,  1414,   216,  -407,  1417,   114,   151,   340,
     1940     645,   373,   114,   645,   152,  1428,   108,   153,  1432,  1436,
     1941    1202,  1434,  1437,  1443,    78,  1531,  1448,  1202,  1438,  1453,
     1942     115,  1117,   115,  1368,  1116,  1458,  1454,  1455,   108,  1456,
     1943    1472,  1463,  1474,   443,   115,   704,   704,  1468,    71,  1476,
     1944    1531,  1531,   726,  1470,   730,  -294,   108,  1478,   163,  1485,
     1945     308,   114,     8,     9,    10,    11,    12,  1480,    49,  1486,
     1946     693,   705,   705,  1487,    37,  1531,  1488,    76,    40,    49,
     1947    1202,    49,   374,   511,  1441,    41,    42,  1499,  1144,  1144,
     1948    1144,    31,  1509,  1511,   418,  1513,    43,  1517,  1518,  1525,
     1949      49,  1540,  1541,  1545,   328,   548,   549,  1554,   918,    76,
     1950    1552,   720,   112,   918,   141,   142,    49,   438,   108,    34,
     1951      46,    47,   114,    41,    42,  1556,  1117,   446,  1562,   705,
     1952     705,    49,  1569,   114,    49,   114,  1570,  1116,  1221,   789,
     1953     787,  1322,  1520,   548,   788,  1205,   743,   224,   790,  1431,
     1954     473,   108,   791,  1572,   245,  1387,  1252,   473,  1403,  1226,
     1955    1502,    57,   908,   909,  1098,  1234,  1102,    49,    57,   931,
     1956     806,   114,  1139,   114,  1045,   879,   945,   114,  1112,   548,
     1957     164,   953,  1331,   718,    78,   114,     0,   126,   129,   130,
     1958       0,    78,   796,   797,   196,   521,  1328,   219,    49,    49,
     1959     229,   798,     0,     0,   871,     0,     0,     0,    71,     0,
     1960     473,     0,    49,     0,     0,    71,    37,     0,   176,   177,
     1961      40,    57,     0,   178,     0,    67,   119,    41,    42,  1117,
     1962       0,   704,  1144,  1144,   693,   354,     0,     0,     0,   704,
     1963     704,   704,     0,     0,    78,     2,   208,     4,     5,     6,
     1964       7,     0,     0,   925,   108,   927,     0,    67,     0,   458,
     1965       0,   256,  1505,   257,  1505,     0,     0,     0,    71,     0,
     1966    1483,     0,     0,   178,     0,   162,   178,     0,   108,   164,
     1967    1329,   215,     0,     0,     0,   108,   414,     0,     0,     0,
     1968       0,   234,   375,   422,     0,   223,    49,     0,     0,  1505,
     1969       0,  1505,     0,     0,     0,   704,     0,     0,    49,   450,
     1970      35,     0,    36,     0,     0,   705,  1068,     0,   164,     0,
     1971       0,     0,   178,   705,   705,   705,     0,     0,     0,   324,
     1972      76,  1534,   261,   215,     0,    76,     0,     0,   108,     0,
     1973    1542,   164,     0,   682,   397,     0,     0,   774,   775,   776,
     1974       0,   645,     0,   445,   416,   417,     0,     0,   114,   421,
     1975       0,   423,   424,     0,     0,   414,     0,     0,    37,   708,
     1976     176,   177,    40,     0,   329,     0,   215,     0,     0,    41,
     1977      42,    49,   261,   351,     0,   178,     0,     0,     0,   705,
     1978      49,     0,    49,     0,     0,     0,     0,     0,    37,   114,
     1979     185,   186,    40,     0,     0,   377,   521,     0,     0,    41,
     1980      42,   521,  1391,   407,   521,     0,     0,     0,     0,   577,
     1981      43,     0,    49,     0,     0,     0,     0,   581,   425,   224,
     1982     584,   430,   432,   646,     0,   187,   162,   215,     0,   178,
     1983    1049,     0,   114,     0,    46,    47,   178,     0,     0,     0,
     1984       0,     0,     0,     0,     0,     0,     0,   449,   645,   375,
     1985       0,   452,     0,   453,     0,     0,   114,  1418,     0,   645,
     1986    1426,   114,   460,     0,     0,   215,     0,     0,    67,     0,
     1987     215,  1099,     0,   474,     0,     0,     0,     0,   898,     0,
     1988       0,     0,     0,   481,   414,   500,    76,     0,   422,     0,
     1989       0,   432,     0,     0,     8,     9,    10,    11,    12,     0,
     1990       0,   354,     0,     0,   178,  1465,    76,     0,     0,     0,
     1991    1469,   114,     0,     0,    76,     8,     9,    10,    11,    12,
     1992       0,   178,     0,    31,     0,   178,     0,   375,     0,     0,
     1993     646,     0,   354,   480,     0,     0,     0,     0,     0,     0,
     1994    1491,     0,     0,     0,    31,     0,     0,   981,     0,   114,
     1995     354,    34,    76,     0,     0,   215,     0,   261,     0,     0,
     1996     897,   595,     0,    49,     0,   414,     0,   623,    49,   904,
     1997       0,     0,    34,   906,     0,     0,     0,     0,    43,     0,
     1998     628,     0,     0,     0,   628,    49,     0,   261,   178,     0,
     1999       0,     0,     0,   753,   354,   412,     0,     0,     0,    43,
     2000       0,   997,    46,    47,     0,     0,     0,  1506,     0,  1506,
     2001       0,  1002,     0,     0,   939,     0,   602,     0,     0,     0,
     2002       0,     0,     0,    46,    47,  1014,  1560,     0,     0,     0,
     2003       0,  1049,  1560,     0,   474,     0,   215,     0,     0,     0,
     2004       0,     0,     0,  1560,  1506,     0,  1506,  1560,    37,   351,
     2005     185,   186,    40,   215,   474,     0,   577,   577,   354,    41,
     2006      42,     0,   474,     0,    37,   114,   185,   186,    40,     0,
     2007      43,     0,     0,    79,     0,    41,    42,     0,   215,     0,
     2008     700,     0,     0,   432,     0,   912,    43,   412,    49,     0,
     2009       0,     0,     0,   913,    46,    47,     0,     0,   714,     0,
     2010      67,   267,   354,   354,   354,    79,     0,     0,   432,     0,
     2011      46,    47,   432,     0,     0,     0,     0,     0,     0,     0,
     2012       0,   354,     0,     0,     0,     0,   801,   802,     0,     0,
     2013       0,   114,   114,   114,     0,     0,     0,     0,     0,   354,
     2014       0,   261,   351,   225,   890,   178,     0,  1298,   893,     0,
     2015      76,     0,     0,     0,     0,   835,     0,     0,   838,   839,
     2016       0,   842,     0,   844,   845,     0,     0,     0,   846,   847,
     2017       0,     0,     0,     0,     0,     0,    76,   178,     0,   354,
     2018       0,     0,     0,     0,     0,     0,     0,   799,    81,   645,
     2019       0,     0,     0,   178,  1089,     0,   548,     0,     0,   215,
     2020       0,     0,     0,     0,     0,   628,   811,     0,   178,     0,
     2021       0,     0,     0,    58,    58,     0,   354,     0,   830,     0,
     2022      81,     0,     0,     0,     0,     0,     0,   215,     0,     0,
     2023       0,   356,   215,  1179,  1180,     0,   595,   511,     0,     0,
     2024       0,   595,     0,     0,     0,    58,     0,   628,     0,     0,
     2025     351,   351,   351,     0,     0,     0,     0,     0,   226,     0,
     2026       0,     0,   354,     0,    49,    49,     0,     0,     0,   351,
     2027       0,     0,   354,     0,   354,   114,   114,     0,     0,   224,
     2028      58,     0,   354,    58,   577,     0,   354,   700,     0,   178,
     2029       0,  1229,  1230,     0,     0,     0,     0,     0,   474,     0,
     2030       0,     0,     0,     0,   215,     0,     0,     0,     0,   978,
     2031     979,     0,     0,   114,     0,     0,     0,     0,   215,     0,
     2032       0,     0,     0,     0,   474,     0,    79,   351,     0,     0,
     2033       0,    79,     0,     0,     0,     0,   944,     0,   500,   432,
     2034      37,     0,   185,   186,    40,     0,   357,     0,    76,     0,
     2035    1216,    41,    42,     0,    37,     0,   185,   186,    40,     0,
     2036       0,     0,    43,   261,   714,    41,    42,     0,     0,   976,
     2037       0,   349,     0,    49,   114,     0,    43,   601,   354,   602,
     2038       0,     0,     0,   114,     0,     0,    46,    47,     0,     0,
     2039       0,   912,     0,   412,     0,     0,     0,     0,    49,    49,
     2040      46,    47,     0,   414,     0,     0,     0,     0,     0,     0,
     2041     700,     0,     0,     0,     0,   215,     0,     0,     0,     0,
     2042     700,     0,   351,    49,   628,   225,     0,  1012,     0,   628,
     2043     811,     0,     0,   354,   700,     0,    58,     0,     0,     0,
     2044       0,    81,     0,     0,  1023,     0,    81,   536,   537,   538,
     2045     539,   540,   541,   542,   543,   544,   545,     0,   178,     0,
     2046       0,     0,     0,     0,     0,     0,    58,    37,     0,   185,
     2047     186,    40,     0,     0,  1100,     0,     0,  1356,    41,    42,
     2048       0,   546,     0,  1155,     0,  1358,  1359,  1360,     0,    43,
     2049       0,     0,    79,     0,   354,   354,    67,   354,   354,     0,
     2050    1167,     0,     0,     0,  1530,     0,   412,   356,     0,     0,
     2051       0,     0,    79,    46,    47,     0,     0,    76,   628,     0,
     2052      79,     0,     0,     0,     0,   261,   714,     0,     0,  1095,
     2053       0,     8,     9,    10,    11,    12,     0,     0,   356,     0,
     2054     226,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2055       0,  1406,   354,   354,     0,  1109,   356,     0,    79,     0,
     2056      31,     0,     0,   432,   119,     0,     0,     0,     0,     0,
     2057       0,     0,     0,     0,     0,     0,     0,     0,   414,     0,
     2058       0,   351,     0,     0,     0,     0,     0,     0,    34,     0,
     2059       0,     0,     0,    37,     0,   185,   186,    40,     0,     0,
     2060     356,     0,  1386,     0,    41,    42,     0,    81,     0,     0,
     2061       0,     0,     0,     0,     0,    43,   215,     0,     0,     0,
     2062    1257,     0,   357,     0,   595,     0,   354,    81,     0,     0,
     2063     601,     0,   602,     0,     0,    81,     0,   430,  1231,    46,
     2064      47,     0,   700,   700,     0,   351,   351,   349,     0,     0,
     2065       0,     0,     0,   357,     0,     0,     0,     0,     0,     0,
     2066       0,     0,     0,     0,   356,  1201,     0,     0,     0,   224,
     2067       0,   357,     0,    81,     0,     0,     0,     0,     0,     0,
     2068       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2069       0,    76,     0,     0,     0,     0,     0,     0,    58,     0,
     2070     700,   700,     0,   354,     0,   354,     0,     0,   356,   356,
     2071     356,     0,     0,     0,     0,   357,     0,     0,     0,     0,
     2072       0,     0,     0,     0,     0,     0,     0,   356,     0,     0,
     2073       0,     0,     0,     0,     0,     0,     0,     0,   354,     0,
     2074     349,     0,     0,     0,    88,   356,   354,   354,   354,   628,
     2075       0,     0,     0,     0,     0,     0,    79,   354,   354,     0,
     2076       0,  1503,     0,  1507,     0,     0,     0,     0,     0,     0,
     2077    1320,    76,     0,     0,   714,   178,    88,     0,     0,   357,
     2078       0,     0,    79,     0,     0,   356,     0,     0,     0,     0,
     2079       8,     9,    10,    11,    12,     0,     0,     0,  1536,     0,
     2080    1538,     0,     0,     0,   349,   215,     0,     0,     0,     0,
     2081       0,     0,   354,     0,   227,     0,     0,  1299,     0,    31,
     2082       0,     0,   356,   357,   357,   357,     0,     0,     0,     0,
     2083       0,     0,     0,     0,     0,   261,     0,     0,     0,    67,
     2084       0,     0,   357,  1567,     0,  1568,     0,    34,   349,   349,
     2085     349,   700,    37,   714,   185,   186,    40,   119,  1575,  1576,
     2086     357,     0,     0,    41,    42,     0,     0,   349,   356,     0,
     2087       0,    81,     0,     0,    43,     0,     0,     0,   356,     0,
     2088     356,     0,   354,     0,     0,   225,   700,     0,   356,   912,
     2089       0,   412,   356,     0,   700,   700,   700,    81,    46,    47,
     2090     357,     0,   364,   215,     0,   351,   351,     0,     0,     0,
     2091       0,     0,     0,     0,     8,     9,    10,    11,    12,  1201,
     2092       0,     0,     0,     0,     0,   349,     0,     0,     0,     0,
     2093       0,    76,     0,     0,     0,     0,     0,   357,    76,     0,
     2094       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
     2095       0,   178,   119,     0,    79,     0,     0,     0,     0,     0,
     2096     700,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2097       0,    34,     0,     0,     0,     0,    37,     0,   185,   186,
     2098      40,     0,     0,   357,   356,     0,     0,    41,    42,     0,
     2099       0,    76,     0,   357,     0,   357,     0,    88,    43,     0,
     2100     226,     0,    88,   357,     0,     0,     0,   357,     0,     0,
     2101       0,     0,     0,  1530,     0,   412,     0,     0,     0,     0,
     2102     349,     0,    46,    47,     0,     0,     0,     0,   349,     0,
     2103     351,     0,     0,     0,     0,     0,     0,     0,     0,   356,
     2104       0,   169,     0,   174,     0,     0,   180,   181,   182,     0,
     2105     184,     0,     0,     0,     0,   119,     8,     9,    10,    11,
     2106      12,     0,     0,     0,     0,   235,     0,     0,     0,    81,
     2107       0,     0,     0,     0,     0,     0,     0,   250,   251,  1201,
     2108       0,     0,     0,     0,     0,    31,  1201,     8,     9,    10,
     2109      11,    12,     0,     0,    58,     0,   227,     0,     0,   357,
     2110     356,   356,     0,   356,   356,     0,     0,     0,     0,     0,
     2111       0,     0,     0,    34,     0,     0,    31,     0,    37,     0,
     2112     185,   186,    40,    79,     0,     0,     0,     0,     0,    41,
     2113      42,     0,     0,     0,     0,     0,     0,     0,     0,  1201,
     2114      43,     0,     0,     0,    34,     0,  1555,     0,     0,    37,
     2115       0,   185,   186,    40,   357,   187,     0,     0,   356,   356,
     2116      41,    42,    58,    88,    46,    47,     0,     0,     0,     0,
     2117       0,    43,     0,     8,     9,    10,    11,    12,   364,   349,
     2118       0,     0,     0,    88,     0,     0,   267,     0,     0,     0,
     2119       0,    88,     0,     0,     0,    46,    47,     0,     0,     0,
     2120       0,     0,    31,     0,     8,     9,    10,    11,    12,   364,
     2121       0,     0,     0,     0,     0,   357,   357,     0,   357,   357,
     2122       0,     0,     0,     0,     0,     0,     0,   364,     0,    88,
     2123      34,     0,   356,    31,     0,    37,     0,     0,    81,    40,
     2124       0,     0,     0,   349,   349,     0,    41,    42,     0,     0,
     2125       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2126       0,    34,     0,    58,     0,     0,    37,     0,     0,     0,
     2127      40,   364,    44,   357,   357,   225,     0,    41,    42,     0,
     2128       0,    46,    47,     0,     0,     0,     0,     0,    43,     0,
     2129       0,     0,     0,     0,     0,     0,     0,    79,     0,     0,
     2130       0,     0,     0,   720,     0,     0,     0,     0,     0,   356,
     2131       0,   356,    46,    47,     8,     9,    10,    11,    12,    13,
     2132      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2133      24,    25,   592,     0,   600,   364,     0,     0,     0,     0,
     2134       0,     0,     0,    31,   356,   624,   625,   357,     0,     0,
     2135       0,     0,   356,   356,   356,     0,     0,     0,     0,     0,
     2136       0,     0,     0,   356,   356,     0,     0,     0,     0,     0,
     2137       0,    34,     0,     0,     0,     0,     0,    79,     0,   364,
     2138     364,   364,     0,     0,     0,     0,     0,     0,     0,     0,
     2139     226,     0,     0,     0,     0,     0,     0,     0,   364,     0,
     2140     284,   285,     0,   286,     0,     0,     0,     0,     0,     0,
     2141       0,     0,    81,     0,    58,    58,   364,     0,   356,     0,
     2142       0,     0,     0,     0,   357,     0,   357,    88,     0,   287,
     2143       0,     0,     0,     0,     0,   288,     0,    58,     0,   289,
     2144       0,     0,   290,   291,   292,   293,    41,    42,     0,   294,
     2145     295,     0,     0,    88,     0,    58,   364,    43,     0,   357,
     2146       0,     0,     0,     0,     0,     0,     0,   357,   357,   357,
     2147       0,     0,   296,     0,   380,     0,     0,   381,   357,   357,
     2148       0,    46,    47,   298,   299,   300,   301,     0,   356,     0,
     2149       0,     0,    81,   364,     0,     0,     0,     0,     0,     0,
     2150       0,     0,     0,   349,   349,     0,     0,     0,     0,     0,
     2151       0,     0,    58,     0,     0,     0,     0,    58,     0,     0,
     2152       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2153       0,     0,     0,   357,     0,     0,     0,    79,     0,   364,
     2154       0,     0,     0,     0,    79,     0,     0,     0,     0,   364,
     2155      58,   364,     0,     0,     0,     0,   227,     0,     0,   364,
     2156       0,     0,     0,   364,     0,     8,     9,    10,    11,    12,
     2157      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2158      23,    24,    25,  -295,     0,    26,    27,    28,     0,     0,
     2159       0,     0,   213,     0,    31,     0,     0,    79,     0,     0,
     2160       0,     0,   233,   357,   237,     0,   239,     0,     0,     0,
     2161       0,     0,     0,   248,     0,     0,     0,     0,     0,     0,
     2162       0,     0,    34,     0,     0,    88,     0,    37,   349,   337,
     2163     338,    40,     0,  -295,     0,     0,     0,     0,    41,    42,
     2164       0,     0,     0,     0,   213,     0,   237,   239,   248,    43,
     2165       0,     0,    81,    58,     0,   364,     0,     0,     0,    81,
     2166       0,     0,     0,     0,   635,     0,   339,     0,     0,   128,
     2167     128,   128,     0,    46,    47,     0,     0,    58,     0,     0,
     2168       0,     0,   284,   285,    58,   286,     0,   213,   932,     0,
     2169     933,     0,     0,     0,     0,     0,     0,   936,   937,     0,
     2170       0,     0,   942,     0,     0,     0,     0,     0,     0,     0,
     2171     364,   287,    81,   167,   947,     0,     0,   288,     0,   951,
     2172       0,   289,     0,     0,   290,   291,   292,   293,    41,    42,
     2173     220,   294,   295,     0,     0,     0,     0,    58,     0,    43,
     2174       0,     0,     0,   128,     0,   128,     0,     0,   213,   987,
     2175     237,   239,   248,     0,   296,     0,   380,     0,     0,     0,
     2176       0,     0,   792,    46,    47,   298,   299,   300,   301,     0,
     2177     277,   364,   364,     0,   364,   364,     0,     0,   167,     0,
     2178       0,     0,   274,     0,     0,     0,   213,     0,     0,     0,
     2179       0,   213,     0,     0,    88,     0,     0,     0,   508,     0,
     2180     510,   513,     0,     0,     0,     0,   498,     0,   516,   517,
     2181       0,   167,     0,     0,     0,     0,     0,     0,     0,     0,
     2182       0,   370,   510,   510,     0,   376,   128,     0,     0,   364,
     2183     364,     0,     0,     0,   128,     0,   128,   128,     0,     0,
     2184       0,   128,     0,   128,   128,     0,     0,     0,     0,     0,
     2185    1033,  1034,  1035,  1036,   213,  1038,     0,     0,     0,     0,
     2186     510,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2187       0,  1082,     0,     0,   167,     0,   213,     0,     0,     0,
     2188       0,   237,   239,     0,     0,  1088,   220,     0,     0,   248,
     2189       0,     0,     0,     0,     0,     0,   510,     0,     0,     0,
     2190       0,     0,     0,   364,   167,     0,     0,     0,     0,     0,
     2191       0,     0,     0,   128,     0,     0,     0,     0,     0,     0,
     2192       0,     0,     0,     0,     0,  1108,     0,     0,     0,   376,
     2193       0,     0,   213,     0,     0,     0,   167,     0,     0,     0,
     2194       0,     0,     0,     0,     0,     0,   227,     0,     0,     0,
     2195     213,     0,     0,     0,     0,   213,     0,   213,     0,   525,
     2196       0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
     2197       0,   167,  1141,     0,   213,     0,     0,   213,   213,  1149,
     2198     364,     0,   364,     0,  1153,   213,     0,     0,     0,  1157,
     2199       0,  1158,     0,     0,     0,  1160,     0,  1161,  1162,   213,
     2200       0,  1165,     0,     0,     0,     0,   213,     0,     0,   598,
     2201    1177,     0,     0,     0,   622,   364,     0,     0,     0,     0,
     2202       0,     0,     0,   364,   364,   364,     0,     0,  1192,  1193,
     2203       0,     0,     0,     0,   364,   364,     0,     0,     0,     0,
     2204       0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
     2205       0,     0,     0,     0,     0,  1223,     0,     0,  1225,     0,
     2206       0,     0,     0,     0,   510,   510,   510,   510,   510,   510,
     2207     510,   510,   510,   510,   510,   510,   510,   510,   510,   510,
     2208     510,   510,     0,     0,     0,     0,     0,     0,     0,   364,
     2209     167,   167,     0,     0,     0,     0,     0,   370,     0,     0,
     2210       0,  1239,     0,     0,     0,     0,     0,  1243,  1244,     0,
     2211       0,     0,     0,     0,     0,     0,     0,     0,   525,  1255,
     2212     213,     0,     0,     0,     0,     0,     0,     0,     0,  1262,
     2213       0,     0,  1266,     0,  1267,     0,     0,  1269,     0,     0,
     2214       0,     0,     0,     0,     0,     0,   717,     0,   213,     0,
     2215    1277,     0,     0,   213,     0,     0,     0,     0,   167,   364,
     2216       0,     0,     0,  1284,     0,  1286,  1287,  1288,  1289,     0,
     2217     525,     0,   525,     0,     0,   525,     0,   167,   525,     0,
     2218       0,  1296,     0,  1297,     0,     0,     0,   174,     0,     0,
     2219     370,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2220       0,     0,     0,     0,     0,     0,     0,     0,    88,     0,
     2221       0,   510,     0,     0,     0,    88,  1325,  1326,   128,   128,
     2222       0,     0,     0,     0,     0,   213,     0,     0,     0,     0,
     2223       0,     0,     0,     0,     0,     0,     0,     0,     0,   213,
     2224       0,     0,   167,     0,     0,     0,     0,   128,     0,     0,
     2225     128,   128,     0,   128,   370,   128,   128,     0,   816,   498,
     2226     128,   128,     0,     0,     0,     0,     0,     0,    88,  1361,
     2227    1362,     0,     0,     0,   510,     0,     0,     0,     0,  1372,
     2228       0,     0,     0,     0,   598,     0,     0,     0,     0,   598,
     2229       0,     0,     0,     0,     0,     0,     0,     0,   370,   370,
     2230     370,     0,     0,     0,     0,     0,   510,     0,     0,  1022,
     2231       0,     0,     8,     9,    10,    11,    12,   370,     0,     0,
     2232       0,     0,     0,     0,   213,     0,     0,     0,     0,     0,
     2233    1404,     0,   158,     0,     0,     0,   213,     0,     0,   284,
     2234     285,    31,   286,  1409,     0,  1410,  1411,  1412,     0,   525,
     2235       0,     0,     0,     0,     0,   213,     0,  1416,     0,     0,
     2236       0,     0,     0,     0,     0,     0,  1427,     0,   287,    34,
     2237       0,     0,     0,     0,   288,   370,     0,   941,   289,     0,
     2238     253,   290,   291,   292,   293,    41,    42,     0,   294,   295,
     2239     258,     0,     0,  1450,     0,     0,    43,     0,     0,     0,
     2240       0,   128,   128,     0,     0,     0,     0,     0,     0,     0,
     2241       0,   296,   717,   380,     0,     0,     0,     0,     0,     0,
     2242     345,    47,   298,   299,   300,   301,     0,   510,     0,     0,
     2243       0,     0,     0,     0,     0,     0,     0,     0,  1489,  1490,
     2244       0,     0,     0,     0,     0,     0,   158,     0,     0,     0,
     2245       0,  1495,     0,     0,     0,     0,     0,     0,  1495,     0,
     2246     387,     0,     0,     0,     0,     0,     0,     0,     0,   213,
     2247     370,     0,   510,     0,   622,     0,     0,     0,   370,     0,
     2248       0,     0,     0,   419,     0,     0,     0,     0,     0,     0,
     2249       0,  1529,     0,     0,     0,  1535,     0,   434,     0,     0,
     2250       0,   213,     0,     0,     0,     0,   439,     0,     0,     0,
     2251     510,     0,     0,     0,     0,     0,   447,     0,     0,     0,
     2252       0,     0,     0,   510,  1557,     0,  1558,     0,     0,     0,
     2253       0,     0,     0,     0,     0,     0,     0,   213,     0,     0,
     2254       0,   465,     0,     0,     0,     0,   475,     0,   213,     0,
     2255       0,     0,     0,     0,  1573,  1574,     0,     0,     0,   483,
     2256       0,   128,  1577,  1578,   510,   493,   128,   497,     0,     0,
     2257       0,     0,     0,     0,   717,     0,     0,     0,     0,     0,
     2258       0,     0,     0,     0,   527,     0,     0,     0,     0,   525,
     2259       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2260       0,     0,     0,     0,   284,   285,     0,   286,     0,     0,
     2261       0,     0,     0,   167,     0,     0,     0,     0,     0,     0,
     2262     213,     0,     0,     0,     0,     0,   586,     0,     0,   370,
     2263       0,   591,     0,   287,   213,     0,     0,     0,     0,   288,
     2264       0,   510,     0,   289,     0,     0,   290,   291,   292,   293,
     2265      41,    42,     0,   294,   295,     0,     0,     0,     0,     0,
     2266     636,    43,     0,     0,   637,   638,     0,   640,     0,     0,
     2267       0,     0,   598,     0,   652,   653,   507,   654,   655,     0,
     2268     656,     0,   657,     0,     0,    46,    47,   298,   299,   300,
     2269     301,     0,     0,   370,   370,     0,     0,     0,     0,   586,
     2270       0,     0,     0,     0,   510,   510,     0,   672,     0,     0,
     2271       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2272       0,     0,     0,     0,     0,     0,   213,     0,     0,     0,
     2273     128,     0,   683,     0,     0,     0,     0,     0,     0,     0,
     2274       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2275       0,     0,     0,   525,     0,     0,     0,     0,   709,     0,
     2276       0,     0,     0,     0,   712,     0,     0,  -520,     0,   465,
     2277       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
     2278      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2279      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2280      29,     0,     0,    30,     0,   749,    31,    32,     0,     0,
     2281       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2282     768,     0,   717,     0,   213,     0,     0,     0,     0,     0,
     2283       0,    33,     0,     0,    34,     0,    35,     0,    36,    37,
     2284       0,    38,    39,    40,     0,     0,     0,     0,     0,     0,
     2285      41,    42,     0,     0,     0,     0,     0,     0,   795,     0,
     2286       0,    43,   128,     0,   220,     0,     0,   805,     0,   342,
     2287     365,     0,     0,     0,   807,     0,    44,     0,    45,     0,
     2288     815,     0,     0,     0,     0,    46,    47,     0,     0,   829,
     2289       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2290       0,   717,     0,   415,     0,     0,     0,     0,     0,     0,
     2291     415,     0,     0,     0,     0,   510,     0,     0,     0,     0,
     2292       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2293     869,     0,     0,   510,     0,     0,     0,     0,     0,     0,
     2294       0,   284,   285,     0,   286,     0,     0,     0,     0,     0,
     2295       0,     0,     0,   370,   370,     0,     0,     0,     0,     0,
     2296       0,     0,   220,     0,     0,     0,   815,     0,     0,     0,
     2297     287,     0,     0,     0,   911,     0,   288,     0,     0,     0,
     2298     289,     0,   415,   290,   291,   292,   293,    41,    42,     0,
     2299     294,   295,     0,     0,     0,     0,     0,     0,    43,     0,
     2300       0,     0,     0,     0,     0,   253,   510,   510,     0,     0,
     2301       0,     0,     0,   296,     0,   948,   949,     0,     0,     0,
     2302       0,     0,    46,    47,   298,   299,   300,   301,     0,   966,
     2303       0,     0,     0,     0,     0,     0,   415,     0,     0,     0,
     2304       0,     0,     0,     0,   415,   582,     0,   415,   585,     0,
     2305     988,     0,   989,     0,     0,     0,   993,     0,   365,     0,
     2306       0,     0,   614,     0,     0,     0,     0,     0,     0,     0,
     2307       0,     0,     0,     0,     0,     0,     0,     0,   370,     0,
     2308     213,   632,     0,     0,   342,     8,     9,    10,    11,    12,
     2309      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2310      23,    24,    25,  -295,     0,    26,    27,    28,     0,     0,
     2311       0,   415,     0,     0,    31,   415,     0,     0,     0,     0,
     2312       0,  1027,     0,     0,     0,     0,     0,     0,  1028,     0,
     2313       0,     0,     0,     0,     0,     0,   525,     0,   525,     0,
     2314       0,  1030,    34,  1031,     0,     0,   365,    37,     0,   337,
     2315     338,    40,     0,  -295,     0,     0,     0,  1043,    41,    42,
     2316       0,     0,     0,     0,  1047,     0,     0,     0,     0,    43,
     2317       0,     0,     0,   525,   322,   525,  1085,     0,     0,  1086,
     2318       0,     0,     0,     0,   347,     0,   339,     0,     0,     0,
     2319       0,     0,   415,    46,    47,   365,   383,   383,     0,     0,
     2320       0,     0,     0,   167,   207,     2,   208,     4,     5,     6,
    19932321       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    1994       17,    18,    19,    20,    21,    22,    23,    24,   209,     0,
    1995       25,    26,    27,     0,  1142,     0,     0,   529,    30,   351,
    1996        0,     0,     0,   218,     0,   209,     0,     0,     0,     0,
    1997     1154,     0,     0,     0,     0,     0,     0,    75,   210,     0,
    1998        0,    33,     0,    34,    72,    35,   358,     0,    37,    38,
    1999        0,     0,     0,     0,     0,     0,     0,   348,   209,   348,
    2000        0,     0,     0,     0,   351,   351,   351,     0,     0,     0,
    2001        0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    2002       12,     0,   351,     0,     0,     0,     0,    -3,   348,     0,
    2003        0,   358,   358,   358,     0,     0,   348,   348,   348,     0,
    2004      351,     0,     0,    30,     0,  1221,     0,   348,   348,   358,
    2005        0,    77,     0,     0,     0,     0,     0,   351,     0,     0,
    2006      350,    72,     0,   164,     0,   168,    33,   358,   174,   175,
    2007      176,    36,   178,   179,   180,    39,     0,     0,    84,     0,
    2008      348,     0,    40,    41,   358,     0,     0,   229,     0,     0,
    2009        0,     0,     0,    77,     0,     0,   351,     0,     0,   244,
    2010      245,     0,     0,     0,     0,     0,     0,   690,     0,   405,
    2011        0,     0,   350,   350,     0,   350,   350,   692,     0,   209,
    2012       84,     0,     0,   358,     0,     0,     0,     0,     0,     0,
    2013      172,     0,   351,     0,     0,    75,     0,     0,     0,     0,
    2014        0,     0,     0,     0,     0,     0,     0,   209,     0,   529,
    2015        0,     0,   209,     0,   210,     0,     0,     0,     0,   358,
    2016        0,     0,     0,     0,   348,     0,     0,     0,   350,   350,
    2017        0,     0,     0,   351,     0,     0,     0,     8,     9,    10,
    2018       11,    12,     0,   351,     0,     0,   351,     0,     0,     0,
    2019      511,   220,     0,   351,     0,     0,     0,     0,   351,     0,
    2020      358,     0,     0,     0,    30,     0,     0,     0,    72,     0,
    2021      358,     0,     0,   358,     0,    72,     0,     0,   221,     0,
    2022      358,     0,     0,     0,     0,   358,     0,    33,     0,     0,
    2023        0,   350,    36,     0,   179,   180,    39,     0,     0,   209,
    2024        0,     0,     0,    40,    41,     0,     0,     0,   210,     0,
    2025        0,     0,     0,   209,     0,     0,     0,     0,     0,    72,
    2026       77,     8,     9,    10,    11,    12,     0,     0,  1491,     0,
    2027      405,     0,     0,   501,   219,     0,     0,     0,  1492,     0,
    2028        0,     0,     0,     0,     0,     0,     0,    84,    30,     0,
    2029        0,     0,     0,     0,     0,    75,   172,     0,     0,     0,
    2030        0,     0,     0,   529,     0,     0,     0,     0,   350,     0,
    2031      350,    33,     0,     0,     0,     0,    36,     0,   179,   180,
    2032       39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
    2033        0,     0,   123,   123,   123,     0,     0,     0,     0,   350,
    2034        0,     0,     0,   351,     0,   209,     0,   350,   350,   350,
    2035        0,     0,   261,   594,   601,     0,     0,     0,   350,   350,
    2036        0,     0,   262,     0,     0,   625,   626,     0,     0,     0,
    2037      358,     0,    75,     0,     0,     0,     0,     0,     0,     0,
    2038        0,     0,   121,   124,   125,     0,     0,     0,     0,     0,
    2039        0,   350,     0,     0,   162,   351,   351,     0,   351,   351,
    2040        0,     0,     0,   123,     0,   123,     0,     8,     9,    10,
    2041       11,    12,     0,   214,     0,     0,     0,     0,    77,     0,
    2042        0,     0,   358,   358,     0,   358,   358,     0,     0,   271,
    2043        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2044        0,     0,     0,     0,     0,    84,     0,     0,     0,     0,
    2045        0,   351,   351,   250,     0,   251,     0,    33,     0,   162,
    2046        0,     0,    36,     0,   268,     0,    39,     0,     0,     0,
    2047        0,     0,     0,    40,    41,   350,     0,     0,   358,   358,
    2048        0,     0,     0,     0,   123,     0,     0,     0,     0,     0,
    2049        0,     0,   123,   162,   123,   123,     0,     0,   736,   123,
    2050        0,   123,   123,   364,     0,     0,     0,   370,   737,     0,
    2051        0,     0,     0,     0,   351,     0,     0,     0,     0,    75,
    2052        0,     0,     0,     0,     0,   278,    75,   279,     0,     0,
    2053        0,     0,     0,     0,   390,   209,     0,     0,     0,     0,
    2054        0,   358,     0,     0,   409,   410,     0,     0,   280,   414,
    2055        0,   416,   417,     0,   281,   162,     0,   220,   282,     0,
    2056        0,   283,   284,   285,   286,    40,    41,   214,   287,   288,
    2057       75,   123,     0,     0,     0,     0,   289,     0,    77,     0,
    2058        0,     0,     0,     0,   221,   162,   456,     0,     0,     0,
    2059      290,   351,   374,   351,     0,     0,     0,     0,     0,   292,
    2060      376,   294,   295,   296,   297,    84,     0,     0,     0,   370,
    2061        0,     0,     0,  1204,     0,     0,     0,   162,   358,     0,
    2062      358,     0,   351,     0,     0,     0,     0,     0,     0,     0,
    2063      351,   351,   351,     0,     0,     0,     0,     0,     0,     0,
    2064      456,   351,   351,   162,     0,     0,     0,  1022,     0,   358,
    2065        8,     9,    10,    11,    12,    77,     0,   358,   358,   358,
    2066        0,     0,     0,     0,     0,     0,     0,     0,   358,   358,
    2067        0,     0,     0,     0,   351,     0,   278,    30,   279,     0,
    2068        0,     0,    84,     0,     0,     0,     0,     0,     0,     0,
    2069      599,     0,     0,     0,     0,   623,     0,     0,     0,   280,
    2070       33,   358,     0,     0,     0,   281,     0,     0,     0,   282,
    2071        0,   209,   283,   284,   285,   286,    40,    41,     0,   287,
    2072      288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
    2073      942,     0,   943,     0,     0,     0,     0,     0,     0,   946,
    2074      947,   290,     0,   374,   952,     0,     0,     0,     0,     0,
    2075      292,   817,   294,   295,   296,   297,   957,     0,   351,     0,
    2076        0,   961,     0,     0,     0,     0,     0,     0,     0,     0,
    2077      162,   162,     0,     0,     0,     0,     0,   364,     0,     0,
    2078        0,     0,     0,     0,     0,   358,   989,     0,     0,     0,
    2079        0,     0,     0,     0,     0,     0,     0,     0,   456,     0,
    2080        0,   456,    77,     0,     0,   209,     0,   456,     0,    77,
    2081        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2082       18,    19,    20,    21,    22,    23,    24,  -285,     0,    84,
    2083      594,     0,     0,     0,   733,     0,    84,    30,     0,     0,
    2084        0,     0,     0,     0,     0,     0,   162,     0,     0,     0,
    2085        0,     0,     0,    77,     0,     0,     0,     0,   456,     0,
    2086       33,     0,   456,     0,   162,   456,     0,     0,     0,     0,
    2087        0,  -285,     0,     0,     0,     0,     0,   364,     0,     0,
    2088       84,     0,   123,   123,     0,     0,     0,  1033,  1034,  1035,
    2089     1036,     0,  1038,     0,     0,     0,     0,     0,     0,     0,
    2090        0,     0,     0,     0,     0,     0,     0,     0,  1080,     0,
    2091        0,     0,   123,     0,     0,   123,   123,     0,   123,     0,
    2092      123,   123,  1086,     0,     0,   123,   123,     0,     0,   162,
    2093        0,     0,   811,   812,     0,     0,     0,     0,     0,     0,
    2094        0,   364,     0,   599,     0,     0,   827,     0,     0,     0,
    2095        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2096        0,  1101,   846,     0,     0,   849,   850,     0,   853,     0,
    2097      855,   856,   599,     0,     0,   857,   858,   599,     0,     0,
    2098        0,     0,     0,     0,     0,     0,   364,   364,   364,     0,
    2099        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2100     1128,     0,     0,   123,   364,     0,     0,  1136,   123,   123,
    2101        0,  1140,     0,     0,   123,     0,  1144,     0,  1145,     0,
    2102        0,     0,  1147,  1148,  1149,     0,     0,  1152,     0,     0,
    2103        0,     0,     0,     0,     0,     0,  1164,     0,     0,   733,
    2104        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2105        0,     0,     0,     0,  1179,  1180,     0,     0,   933,   934,
    2106      456,     0,     0,     0,   936,     0,     0,     0,     0,     0,
    2107        0,     0,     0,     0,     0,     0,     0,     0,   364,  1209,
    2108      951,     0,  1211,     8,     9,    10,    11,    12,    13,    14,
    2109       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2110        0,     0,    25,    26,    27,     0,     0,   207,     0,     0,
    2111       30,     0,     0,     0,   733,     0,     0,   227,     0,   231,
    2112     1226,   233,     0,     0,     0,     0,  1230,  1231,   242,     0,
    2113        0,     0,     0,    33,     0,     0,     0,  1241,     0,     0,
    2114      203,    38,  1245,     0,     0,  1249,     0,  1250,     0,     0,
    2115     1252,     0,     0,     0,     0,     0,     0,     0,   207,     0,
    2116      231,   233,   242,  1260,     0,     0,     0,     0,   364,     0,
    2117        0,     0,   623,     0,     0,   364,  1267,     0,  1269,  1270,
    2118     1271,  1272,     0,     0,   267,     0,     0,     0,     0,     0,
    2119        0,     0,     0,     0,  1279,     0,  1280,     0,     0,     0,
    2120      168,   207,     0,     0,     0,     0,     0,     0,     0,     0,
    2121        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2122        0,     0,     0,     0,     0,     0,     0,     0,  1304,  1305,
    2123        0,     0,   201,     2,   202,     4,     5,     6,     7,     8,
     2322      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2323       0,    26,    27,    28,   415,     0,     0,     0,   342,   365,
     2324      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2325       0,     0,     0,     0,     0,     0,     0,     0,   591,     0,
     2326       0,     0,     0,     0,     0,     0,     0,   322,    34,     0,
     2327      35,     0,    36,     0,     0,   209,    39,     0,     0,     0,
     2328       0,     0,     0,   415,   415,     0,     0,     0,     0,     0,
     2329       0,   479,     0,     0,  1159,    43,     0,     0,     0,     0,
     2330       0,     0,   809,   365,     0,     0,     0,     0,     0,     0,
     2331       0,     0,   210,   614,     0,   614,   614,     0,     0,    46,
     2332      47,     0,   614,     0,     0,     0,     0,     0,     0,     0,
     2333       0,     0,   848,   365,     0,     0,     0,     0,   365,     0,
     2334       0,     0,     0,     0,     0,     0,     0,   365,   365,   365,
     2335       0,     0,   527,     0,     0,     0,     0,     0,  1224,     0,
     2336       0,     0,     0,     0,     0,     0,   365,     0,     0,     0,
     2337       0,   415,   891,     0,     0,   415,   894,     0,     0,     0,
     2338       0,     0,   896,     0,     0,     0,     0,     0,     0,     0,
     2339       0,     0,  1236,     0,     0,     0,     0,  1238,     0,     0,
     2340       0,   415,     0,     0,     0,  1242,     0,   383,     0,     0,
     2341       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2342       0,     0,     0,     0,   365,   614,     0,     0,     0,     0,
     2343       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2344       0,  1271,     0,     0,     0,     0,     0,     0,     0,     0,
     2345       0,     0,     0,  1279,     0,     0,  1280,     0,  1281,     0,
     2346     342,   365,     0,     0,     0,   415,   415,     0,     0,     0,
     2347       0,     0,  1290,  1291,     0,     0,     0,     0,     0,     0,
     2348       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2349       0,     0,     0,     0,  1304,     0,     0,     0,     0,     0,
     2350       0,   711,   284,   285,     0,   286,     0,     0,     0,     0,
     2351       0,   415,     0,     0,     0,     0,     0,     0,     0,   365,
     2352       0,     0,     0,     0,     0,     0,   809,   365,     0,     0,
     2353     614,   287,   614,     0,     0,     0,     0,   288,     0,     0,
     2354     745,   289,   614,  1345,   290,   291,   292,   293,    41,    42,
     2355       0,   294,   295,   762,     0,     0,     0,     0,   745,    43,
     2356       0,   745,     0,     0,     0,     0,     0,     0,     0,     0,
     2357       0,     0,   772,   773,   296,     0,   380,     0,     0,     0,
     2358       0,   761,     0,    46,    47,   298,   299,   300,   301,     0,
     2359       0,     0,     0,     0,     0,   794,     0,     0,     0,     0,
     2360       0,     0,     0,     0,     0,   803,     0,     0,     0,     0,
     2361       0,     0,   347,     0,     0,   809,     0,   762,     0,  1396,
     2362       0,  1397,   342,   365,   415,     0,   415,     0,     0,     0,
     2363     415,     0,     0,     0,     0,  1407,     0,  1408,     0,     0,
     2364       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2365       0,   614,   614,     0,     0,  1415,     0,     0,     0,     0,
     2366       0,     0,     0,     0,     0,     0,   868,     0,     0,     0,
     2367       0,  1433,  1435,     0,     0,   383,     0,     0,   365,     0,
     2368       0,     0,  1440,     0,     0,  1242,     0,     0,   415,     8,
    21242369       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2125       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2126       27,   207,     0,   231,   233,   242,    30,     0,   456,     0,
    2127        0,     0,     0,     0,     0,   153,     0,     0,  1340,  1341,
    2128        0,     0,     0,     0,     0,     0,     0,     0,  1351,    33,
    2129        0,    34,     0,    35,    36,     0,   203,    38,    39,   207,
    2130        0,     0,     0,   207,     0,    40,    41,     0,     0,     0,
    2131      162,     0,     0,     0,     0,     0,     0,     0,     0,   499,
    2132        0,   247,     0,     0,     0,   364,     0,     0,     0,     0,
    2133       42,   252,   204,     0,     0,     0,  1380,     0,     0,     0,
    2134      205,     0,     0,     0,     0,     0,     0,     0,  1384,     0,
    2135     1385,  1386,  1387,     0,     0,     0,     0,     0,     0,   599,
    2136        0,     0,  1391,     0,     0,     0,     0,     0,   207,     0,
    2137        0,  1402,     0,     0,   278,     0,   279,     0,     0,     0,
    2138      364,   364,     0,  1410,     0,     0,   153,     0,     0,   207,
    2139        0,     0,   123,     0,   231,   233,     0,   280,     0,   380,
    2140        0,     0,   242,   281,     0,     0,     0,   282,     0,     0,
    2141      283,   284,   285,   286,    40,    41,     0,   287,   288,     0,
    2142        0,     0,   412,     0,     0,   289,     0,     0,     0,     0,
    2143        0,     0,     0,     0,  1454,  1455,   427,     0,   456,   290,
    2144        0,   374,  1217,     0,   207,   432,   772,  1460,   292,   376,
    2145      294,   295,   296,   297,  1460,   440,     0,     0,     0,     0,
    2146        0,     0,   207,     0,     0,     0,     0,   207,     0,   207,
    2147        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2148      466,     0,  1490,     0,     0,   476,   207,     0,     0,   207,
    2149      207,     0,     0,     0,     0,     0,   733,     0,   484,     0,
    2150        0,     0,     0,     0,   494,   207,   498,     0,     0,     0,
    2151     1514,     0,     0,     0,   123,     0,     0,     0,     0,   207,
    2152        0,     0,     0,   527,     0,     0,   207,     0,     0,     0,
    2153        0,     0,     0,     0,     0,     0,  1527,     0,   214,     0,
    2154        0,  1529,     0,     0,     0,     0,     0,     0,     0,     0,
    2155        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2156        0,     0,     0,     0,  1300,     0,   586,     0,     0,     0,
    2157        0,   591,     0,     0,     0,   733,     0,     0,     0,     0,
    2158        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2159       17,    18,    19,    20,    21,    22,    23,    24,     0,   637,
    2160       25,    26,    27,   638,   639,     0,   641,     0,    30,     0,
    2161        0,     0,   652,   653,     0,   654,   655,     0,   656,     0,
    2162      657,     0,  1162,   364,   364,     8,     9,    10,    11,    12,
    2163        0,    33,   214,     0,     0,     0,     0,   586,   203,    38,
    2164      207,     0,     0,     0,     0,   672,     0,     0,     0,     0,
    2165        0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
    2166        0,     0,     0,     0,     0,     0,     0,     0,   207,     0,
    2167      683,     0,     0,   207,   280,    33,     0,     0,     0,     0,
    2168      281,   689,   622,     0,   282,     0,     0,   283,   284,   285,
    2169      286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
    2170        0,     0,   289,     0,   725,     0,     0,     0,     0,     0,
    2171      728,     0,     0,     0,     0,   466,   290,     0,   374,     0,
    2172        0,     0,     0,     0,     0,   292,  1163,   294,   295,   296,
    2173      297,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2174      364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2175        0,   764,     0,     0,   509,   510,   513,     0,     0,     0,
    2176      207,     0,     0,   516,   517,     0,     0,   779,   510,   510,
    2177        0,     0,     0,     0,   207,     0,     0,     0,     0,     0,
    2178      510,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2179        0,     0,     0,   456,   499,     0,     0,     0,     0,     0,
    2180        0,     0,     0,   805,   337,   359,     0,     0,     0,     0,
    2181        0,     0,   815,     0,     0,     0,   510,     0,     0,   818,
    2182        0,     0,     0,   456,   825,     0,     0,     0,     0,     0,
    2183        0,     0,     0,     0,     0,   840,     0,   408,     0,     0,
    2184        0,     0,     0,     0,   408,     0,     0,     0,   162,     0,
    2185        0,     0,   510,   207,     0,     0,     0,     0,     0,     0,
    2186        0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
    2187        0,     0,     0,     0,     0,     0,   880,     0,     0,     0,
    2188        0,     0,     0,  -505,     0,   207,     1,     2,     3,     4,
     2370      19,    20,    21,    22,    23,    24,    25,  -295,  1464,     0,
     2371     415,  1156,     0,     0,     0,     0,     0,  1471,    31,     0,
     2372    1473,   365,  1475,  1477,  1479,     0,     0,   415,  1168,     0,
     2373     614,   614,  1173,     0,     0,     0,     0,     0,     0,     0,
     2374       0,     0,   365,   365,     0,     0,    34,     0,     0,     0,
     2375       0,     0,     0,     0,     0,     0,     0,  -295,     0,     0,
     2376       0,     0,     0,     0,  1510,     0,  1512,     0,  1242,     0,
     2377       0,     0,     0,     0,     0,   762,     0,   972,     0,     0,
     2378       0,     0,     0,     0,  1524,     0,     0,   983,     0,     0,
     2379       0,     0,     0,     0,   992,     0,     0,     0,     0,     0,
     2380       0,     0,     0,     0,     0,   415,     0,   415,     0,     0,
     2381       0,     0,   415,     0,     0,     0,     0,     0,     0,     0,
     2382       0,   614,     0,     0,     0,     0,     0,     0,     0,  1175,
     2383       0,     0,     8,     9,    10,    11,    12,  1010,  1011,     0,
     2384       0,   347,     0,     0,     0,     0,   809,   415,  1258,     0,
     2385       0,     0,     0,     0,     0,   347,     0,     0,     0,   284,
     2386     285,    31,   286,     0,     0,     0,     0,     0,     0,     0,
     2387       0,   365,     0,     0,     0,     0,     0,     0,     0,     0,
     2388       0,     0,     0,     0,     0,     0,     0,     0,   287,    34,
     2389       0,     0,     0,     0,   288,  1041,     0,     0,   289,   383,
     2390       0,   290,   291,   292,   293,    41,    42,     0,   294,   295,
     2391       0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
     2392       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2393       0,   296,   342,   380,     0,     0,     0,   347,     0,     0,
     2394    1176,    47,   298,   299,   300,   301,     0,     0,     0,     0,
     2395     365,     2,   208,     4,     5,     6,     7,     8,     9,    10,
     2396      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2397      21,    22,    23,    24,    25,     0,   322,    26,    27,    28,
     2398       0,     0,     0,     0,   284,   285,    31,   286,     0,     0,
     2399       0,     0,  1132,  1133,     0,     0,     0,     0,     0,     0,
     2400       0,     0,   365,   365,     0,     0,   383,     0,     0,     0,
     2401       0,     0,   983,   287,    34,  1147,    35,   745,    36,   288,
     2402       0,    38,    39,   289,     0,     0,   290,   291,   292,   293,
     2403      41,    42,     0,   294,   295,     0,     0,     0,  1163,     0,
     2404       0,    43,     0,     0,     0,     0,     0,     0,     0,  1178,
     2405       0,   284,   285,     0,   286,     0,   296,     0,   344,     0,
     2406       0,     0,     0,   761,     0,   345,    47,   298,   299,   300,
     2407     301,   383,     0,  1196,     0,     0,     0,     0,     0,     0,
     2408     287,     0,     0,     0,     0,     0,   288,     0,   983,   983,
     2409     289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
     2410     294,   295,     0,     0,     0,     0,     0,     0,    43,  1228,
     2411       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2412       0,     0,     0,   296,     0,   380,     0,   365,   980,     0,
     2413       0,     0,    46,    47,   298,   299,   300,   301,     0,     0,
     2414       0,     1,     2,     3,     4,     5,     6,     7,     8,     9,
     2415      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2416      20,    21,    22,    23,    24,    25,   983,     0,    26,    27,
     2417      28,    29,     0,     0,    30,     0,     0,    31,    32,     0,
     2418       0,     0,     0,     0,     0,   868,     0,     0,     0,     0,
     2419       0,   284,   285,     0,   286,     0,     0,     0,     0,     0,
     2420    1282,  1283,    33,     0,     0,    34,     0,    35,     0,    36,
     2421      37,     0,    38,    39,    40,     0,     0,   415,     0,     0,
     2422     287,    41,    42,     0,     0,     0,   288,     0,     0,     0,
     2423     289,     0,    43,   290,   291,   292,   293,    41,    42,     0,
     2424     294,   295,   415,   415,     0,     0,     0,    44,    43,    45,
     2425       0,     0,     0,  -524,     0,     0,    46,    47,     0,     0,
     2426       0,     0,     0,   296,     0,   380,     0,   415,     0,     0,
     2427       0,     0,    46,    47,   298,   299,   300,   301,     0,     0,
     2428     983,     0,     1,     2,   208,     4,     5,     6,     7,     8,
     2429       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2430      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2431      27,    28,    29,     0,     0,    30,   284,   285,    31,  1050,
     2432    1051,     0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,
     2433    1058,  1059,  1060,     0,     0,     0,  1061,     0,     0,     0,
     2434    1062,  1063,     0,    33,  1390,   287,    34,   745,    35,     0,
     2435      36,  1064,     0,    38,    39,   289,     0,     0,   290,   291,
     2436     292,   293,    41,    42,     0,   294,   295,     0,     0,     0,
     2437       0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
     2438       0,     0,     0,     0,     0,     0,     0,     0,   296,     0,
     2439    1065,     0,     0,   173,     0,     0,     0,    46,    47,   298,
     2440     299,   300,   301,     0,     0,     0,     0,  1066,     0,     0,
     2441       0,  -130,     0,     0,     0,     0,     0,     0,     0,     0,
     2442       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2443       0,  1449,     0,     0,     0,     0,     0,     0,     1,     2,
     2444     208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2445      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2446      23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
     2447       0,    30,   284,   285,    31,   286,     8,     9,    10,    11,
     2448      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2449      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2450       0,   287,    34,     0,    35,    31,    36,   288,     0,    38,
     2451      39,   289,     0,  1516,   290,   291,   292,   293,    41,    42,
     2452       0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2453       0,     0,     0,    34,     0,     0,     0,     0,   112,     0,
     2454      38,    39,     0,     0,   296,     0,  1065,     0,     0,    41,
     2455      42,     0,     0,    46,    47,   298,   299,   300,   301,     0,
     2456       0,     0,     0,     0,     0,     0,   322,  -130,     1,     2,
     2457     208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2458      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2459      23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
     2460       0,    30,   284,   285,    31,   286,     0,     0,     0,     8,
     2461       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2462      19,    20,    21,    22,    23,    24,    25,  -296,     0,     0,
     2463       0,   287,    34,     0,    35,     0,    36,   288,    31,    38,
     2464      39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
     2465       0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2466       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
     2467       0,     0,     0,     0,   296,     0,    45,  -296,     0,     0,
     2468       0,     0,     0,    46,    47,   298,   299,   300,   301,     2,
     2469     208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2470      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2471      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2472       0,     0,   284,   285,    31,   286,     8,     9,    10,    11,
     2473      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2474      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2475       0,   287,    34,     0,    35,    31,    36,   288,     0,    38,
     2476      39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
     2477       0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2478       0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
     2479      38,    39,     0,     0,   296,     0,   971,     0,     0,     0,
     2480       0,   761,     0,   345,    47,   298,   299,   300,   301,     2,
     2481     208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2482      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2483      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2484       0,     0,   284,   285,    31,   286,     8,     9,    10,    11,
     2485      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2486      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2487       0,   287,    34,     0,    35,    31,    36,   288,     0,    38,
     2488      39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
     2489       0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2490       0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
     2491     209,    39,     0,     0,   296,     0,   971,     0,     0,     0,
     2492       0,   761,     0,    46,    47,   298,   299,   300,   301,     2,
     2493     208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2494      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2495      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2496       0,     0,   284,   285,    31,   286,     0,     0,     0,     0,
     2497       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2498       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2499       0,   287,    34,     0,    35,     0,    36,   288,     0,    38,
     2500      39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
     2501       0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2502       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2503       0,     0,     0,     0,   296,     0,   344,     0,     0,     0,
     2504       0,     0,     0,   345,    47,   298,   299,   300,   301,     2,
     2505     208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2506      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2507      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2508       0,     0,   284,   285,    31,   286,     0,     0,     0,     0,
     2509       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2510       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2511       0,   287,    34,     0,    35,     0,    36,   288,     0,   209,
     2512      39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
     2513       0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2514       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2515       0,     0,     0,     0,   296,     0,  1007,     0,     0,     0,
     2516       0,     0,     0,  1008,    47,   298,   299,   300,   301,     2,
     2517     208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2518      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2519      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2520       0,     0,   284,   285,    31,   286,     0,     0,     0,     0,
     2521       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2522       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2523       0,   287,    34,     0,    35,     0,    36,   288,     0,    38,
     2524      39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
     2525       0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2526       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2527       0,     0,     0,     0,   296,     0,   971,     0,     0,     0,
     2528       0,     0,     0,   345,    47,   298,   299,   300,   301,     2,
     2529     208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2530      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2531      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2532       0,     0,   284,   285,    31,   286,     0,     0,     0,     0,
     2533       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2534       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2535       0,   287,    34,     0,    35,     0,    36,   288,     0,   209,
     2536      39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
     2537       0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2538       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2539       0,     0,     0,     0,   296,     0,   380,     0,     0,     0,
     2540       0,     0,     0,    46,    47,   298,   299,   300,   301,     1,
     2541       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
     2542      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2543      22,    23,    24,    25,     0,     0,    26,    27,    28,    29,
     2544       0,     0,    30,     0,     0,    31,    32,     0,     0,     0,
     2545       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2546       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2547      33,     0,     0,    34,     0,    35,     0,    36,    37,     0,
     2548      38,    39,    40,     0,     0,     0,     0,     0,     0,    41,
     2549      42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2550      43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2551       0,     0,     0,     0,     0,    44,     0,    45,     0,     0,
     2552       0,     0,     0,     0,    46,    47,   207,     2,   208,     4,
    21892553       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    21902554      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2191        0,   825,    25,    26,    27,    28,   408,     0,    29,     0,
    2192       30,    31,     0,     0,     0,     0,     0,     0,     0,     0,
    2193        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2194       32,     0,     0,    33,     0,    34,     0,    35,    36,     0,
    2195       37,    38,    39,     0,     0,     0,     0,     0,     0,    40,
    2196       41,     0,     0,     0,     0,     0,   247,     0,     0,     0,
    2197        0,   408,   207,     0,     0,     0,   958,   959,     0,   408,
    2198      582,     0,   408,   585,    42,     0,    43,     0,     0,   975,
    2199        0,     0,   359,     0,    44,     0,   615,     0,   207,     0,
    2200        0,     0,     0,     0,     0,     0,   990,     0,   991,     0,
    2201        0,     0,   995,     0,     0,   633,     0,     0,   337,     0,
    2202        0,     0,     0,     0,     0,   207,   510,   510,   510,   510,
    2203      510,   510,   510,   510,   510,   510,   510,   510,   510,   510,
    2204      510,   510,   510,   510,   408,     0,     0,     0,   408,   278,
    2205        0,   279,     0,     0,     0,     0,   207,     0,     0,     0,
    2206        0,     0,     0,     0,     0,     0,     0,   207,     0,   510,
    2207        0,     0,   280,     0,     0,     0,     0,  1027,   642,   359,
    2208      136,   137,   282,     0,  1028,   283,   643,   285,   286,    40,
    2209       41,     0,   287,   288,     0,     0,     0,  1030,     0,  1031,
    2210      289,     0,   408,     0,     0,     0,     0,     0,     0,     0,
    2211        0,     0,     0,  1043,   290,     0,   644,     0,   645,   375,
    2212     1047,     0,     0,   292,   376,   294,   295,   296,   297,     0,
    2213        0,     0,  1083,   408,     0,  1084,   359,     0,     0,     0,
    2214        0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
    2215        0,     0,     0,   591,     0,     0,     0,     0,     0,     0,
    2216        0,     0,     0,     0,     0,     0,     0,   510,     0,     0,
    2217        0,     0,     0,     0,     0,   408,     0,     0,   337,   359,
    2218        0,     0,     0,     0,     0,     0,     0,     0,     0,   510,
    2219        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2220      317,     0,   510,     0,     0,     0,     0,     0,     0,     0,
    2221      341,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2222        0,     0,   377,   408,   408,     0,     0,     0,     0,     0,
    2223        0,     0,   207,     0,     0,     0,     0,     0,     0,     0,
    2224     1146,     0,   820,   359,     0,   359,     0,   510,     0,     0,
    2225        0,     0,     0,     0,   615,     0,   615,   615,     0,     0,
    2226        0,     0,     0,   615,     0,     0,     0,     0,     0,     0,
    2227        0,     0,     0,   859,   359,     0,     0,     0,   510,   359,
    2228        0,     0,     0,     0,     0,     0,     0,     0,   359,   359,
    2229      359,     0,   317,   510,     0,   527,     0,     0,     0,     0,
    2230        0,  1210,     0,     0,     0,     0,   359,     0,     0,     0,
    2231        0,   408,   902,     0,     0,   408,   905,   480,     0,     0,
    2232        0,     0,   907,     0,     0,     0,   207,     0,     0,     0,
    2233     1223,     0,     0,     0,     0,  1225,     0,     0,     0,     0,
    2234      337,   359,   408,  1229,   408,     0,     0,     0,   408,   201,
    2235        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    2236       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2237       22,    23,    24,  1254,     0,    25,    26,    27,     0,     0,
    2238      359,   615,     0,    30,     0,  1262,     0,     0,  1263,     0,
    2239     1264,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2240        0,     0,     0,     0,  1273,  1274,    33,     0,    34,     0,
    2241       35,     0,     0,   203,    38,   337,   359,     0,     0,     0,
    2242      408,   408,     0,     0,     0,     0,  1287,     0,     0,     0,
    2243        0,     0,   377,     0,     0,     0,     0,     0,     0,     0,
    2244        0,     0,     0,     0,   510,     0,     0,     0,     0,   204,
    2245        0,     0,  1306,     0,     0,     0,     0,   267,     0,     0,
    2246        0,   408,     0,     0,     0,     0,     0,     0,     0,     0,
    2247      359,     0,     0,   510,     0,     0,   820,   359,     0,     0,
    2248        0,   615,     0,   615,     0,   510,     0,     0,     0,     0,
    2249        0,     0,     0,   615,     0,     0,     0,     8,     9,    10,
     2555      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2556       0,     0,    31,     0,     8,     9,    10,    11,    12,    13,
     2557      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2558      24,    25,     0,     0,    26,    27,    28,   486,   487,   488,
     2559      34,     0,    35,    31,    36,    37,     0,   209,    39,    40,
     2560       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
     2561       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2562       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
     2563       0,     0,    44,     0,   210,     0,     0,     0,     0,     0,
     2564       0,    46,    47,     1,     2,   208,     4,     5,     6,     7,
     2565       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2566      18,    19,    20,    21,    22,    23,    24,    25,  -295,     0,
     2567      26,    27,    28,    29,     0,     0,    30,     0,     0,    31,
     2568       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2569       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2570       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
     2571       0,    36,     0,     0,    38,    39,     0,     0,  -295,     0,
     2572       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2573       0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
     2574       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2575       0,    45,     0,     0,     0,     0,     0,     0,    46,    47,
     2576       1,     2,   208,     4,     5,     6,     7,     8,     9,    10,
    22502577      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2251       21,    22,    23,    24,  -285,     0,    25,    26,    27,     0,
    2252        0,     0,     0,     0,    30,     0,   510,     0,     0,     0,
    2253        0,     0,     0,   727,     0,     0,     0,     0,     0,     0,
    2254        0,     0,     0,     0,  1372,     0,  1373,    33,     0,     0,
    2255        0,     0,    36,     0,   332,   333,    39,   207,  -285,  1382,
    2256        0,  1383,     0,    40,    41,     0,   820,     0,     0,     0,
    2257        0,   760,     0,     0,   408,     0,     0,     0,     0,  1390,
    2258      408,     0,     0,     0,   773,     0,     0,     0,   408,     0,
    2259      334,   760,     0,     0,     0,  1408,   510,     0,   109,     0,
    2260        0,   615,   615,  1411,   782,   783,  1229,     0,     8,     9,
    2261       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2262       20,    21,    22,    23,    24,  -286,   804,   359,  1434,     0,
    2263        0,     0,     0,   408,     0,    30,   813,  1441,     0,   510,
    2264     1443,  1445,     0,   341,     0,     0,     0,     0,   773,     0,
    2265        0,   408,  1143,   510,   510,     0,     0,     0,    33,     0,
    2266        0,   359,     0,     0,     0,     0,     0,   408,  1155,  -286,
    2267      615,   615,  1160,     0,     0,     0,     0,  1473,     0,  1229,
    2268        0,     0,   359,   359,     0,     0,     0,     0,     0,     0,
    2269        0,     0,     0,     0,  1485,     0,     0,     0,   879,     0,
    2270        0,     0,     0,     0,     0,     0,   377,     2,   202,     4,
     2578      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2579      29,     0,     0,    30,     0,     0,    31,     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       0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
     2583       0,    38,    39,     0,     0,     0,     0,     0,     0,     0,
     2584       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2585       0,    43,     0,     0,     0,     0,     0,     0,     0,     0,
     2586       0,     0,     0,     0,     0,     0,     0,     0,    45,     0,
     2587       0,     0,     0,     0,     0,    46,    47,     2,   208,     4,
    22712588       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    22722589      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2273        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2274       30,   820,   408,  1222,     0,     0,   341,     0,     0,     0,
    2275        0,     0,     0,     0,   615,     0,     0,     0,     0,     0,
    2276        0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
    2277      203,    38,     0,     1,     2,     3,     4,     5,     6,     7,
    2278        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2279       18,    19,    20,    21,    22,    23,    24,     0,   359,    25,
    2280       26,    27,    28,     0,     0,    29,   266,    30,    31,     0,
    2281        0,     0,     0,     0,   622,     0,     0,     0,     0,     0,
    2282        0,   773,     0,   980,     0,     0,     0,    32,     0,   985,
    2283       33,     0,    34,     0,    35,    36,   994,    37,    38,    39,
    2284        0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
    2285        0,     0,     0,   510,     0,     0,     0,     0,   337,     0,
    2286        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2287      510,    42,     0,    43,     0,     0,     0,   359,     0,  1010,
    2288     1011,    44,   341,     0,     0,     0,     0,     0,     0,     0,
    2289        0,     0,     0,     0,     0,     0,     0,   341,     0,     0,
    2290        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2291       18,    19,    20,    21,    22,    23,    24,     0,     0,     0,
    2292        0,     0,     0,     0,     0,   359,   359,    30,     0,     0,
    2293        0,     0,     0,   510,   510,     0,     0,  1041,     0,     0,
    2294        0,   377,     0,     0,     0,     0,     0,     0,     0,     0,
    2295       33,     0,     0,     0,     1,     2,   202,     4,     5,     6,
     2590      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2591       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2592       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2593       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2594      34,     0,    35,     0,    36,    37,     0,   209,    39,    40,
     2595       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
     2596       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2597       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2598       0,     0,    44,     0,   210,     0,     0,     0,     0,     0,
     2599       0,    46,    47,     2,   208,     4,     5,     6,     7,     8,
     2600       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2601      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2602      27,    28,     0,     0,     0,     0,     0,     0,    31,     0,
     2603       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2604       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2605       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2606      36,     0,     0,    38,    39,     0,     0,     0,     0,     0,
     2607       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2608       0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
     2609       0,     0,     0,     0,     0,     0,     0,     0,     0,  -403,
     2610     679,     0,     0,     0,     0,     0,     0,    46,    47,     2,
     2611     208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2612      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2613      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2614       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
     2615       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2616       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2617       0,     0,    34,     0,    35,     0,    36,     0,     0,    38,
     2618      39,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2619       0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
     2620       0,  1369,     0,     0,     0,     0,     0,     0,     0,     0,
     2621       0,     0,     0,     0,     0,     0,   679,     0,     0,     0,
     2622       0,     0,     0,    46,    47,     2,   208,     4,     5,     6,
    22962623       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2297       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2298       25,    26,    27,    28,     0,     0,    29,   278,    30,  1050,
    2299     1051,     0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,
    2300     1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
    2301      280,    33,     0,    34,     0,    35,   642,   317,    37,    38,
    2302      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2303      287,   288,  1124,  1125,     0,     0,     0,     0,   289,   377,
    2304        0,     0,   359,     0,     0,   985,     0,     0,  1134,     0,
    2305      760,     0,   290,     0,  1063,     0,   278,   167,   279,     0,
    2306        0,   292,   293,   294,   295,   296,   297,     0,     0,  1150,
    2307        0,     0,     0,     0,     0,  -126,     0,     0,     0,   280,
    2308     1165,     0,     0,     0,     0,   281,     0,     0,     0,   282,
    2309        0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
    2310      288,     0,   377,     0,  1183,     0,     0,   289,     0,     0,
    2311        0,     0,     0,     0,     0,     0,     0,     0,     0,  1205,
    2312        0,   290,   408,   374,     0,     0,   375,     0,     0,     0,
    2313      292,   376,   294,   295,   296,   297,     0,   278,  1214,   279,
    2314     1051,     0,  1052,   408,   408,  1053,  1054,  1055,  1056,  1057,
    2315     1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
    2316      280,     0,     0,     0,     0,   408,   642,     0,     0,     0,
    2317      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2318      287,   288,     0,     0,   985,     0,     0,     0,   289,     0,
    2319        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2320        0,     0,   290,   879,   374,     0,     0,   167,     0,     0,
    2321        0,   292,   376,   294,   295,   296,   297,     0,  1265,  1266,
    2322        0,     0,     1,     2,   202,     4,     5,     6,     7,     8,
    2323        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2324       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2325       27,    28,     0,     0,    29,   278,    30,   279,     0,     0,
    2326        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2327        0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
    2328        0,    34,     0,    35,   281,     0,    37,    38,   282,     0,
    2329        0,   283,   284,   285,   286,    40,    41,   985,   287,   288,
    2330        0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
    2331        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2332      290,     0,  1063,     0,     0,     0,     0,     0,     0,   292,
    2333      293,   294,   295,   296,   297,     0,     0,     0,     0,     0,
    2334        0,     0,     0,  -126,     1,     2,   202,     4,     5,     6,
    2335        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2336       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2337       25,    26,    27,    28,     0,     0,    29,   278,    30,   279,
    2338        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2339        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2340      280,    33,     0,    34,     0,    35,   281,     0,    37,    38,
    2341      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2342      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    2343        0,     0,     0,     0,     0,     0,     0,     0,  1420,     0,
    2344        0,     0,   290,     0,    43,     0,     0,     0,     0,     0,
    2345        0,   292,   293,   294,   295,   296,   297,     2,   202,     4,
     2624      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2625       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
     2626      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2627       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2628       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
     2629      35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
     2630       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2631       0,     0,     0,     0,     0,    43,     0,  1371,     0,     0,
     2632       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2633       0,     0,   679,     0,     0,     0,     0,     0,     0,    46,
     2634      47,     2,   208,     4,     5,     6,     7,     8,     9,    10,
     2635      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2636      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2637       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
     2638       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2639       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2640       0,     0,     0,     0,    34,     0,    35,     0,    36,     0,
     2641       0,   209,    39,     0,     0,     0,     0,     0,     0,     0,
     2642       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2643       0,    43,     0,     0,     0,     0,     0,     0,     0,     0,
     2644       0,     0,     0,     0,     0,     0,     0,     0,   272,     0,
     2645       0,     0,     0,     0,     0,    46,    47,     2,   208,     4,
    23462646       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    23472647      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2348        0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
    2349       30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
    2350        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2351     1477,     0,   280,    33,     0,    34,     0,    35,   281,     0,
    2352       37,    38,   282,     0,     0,   283,   284,   285,   286,    40,
    2353       41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
    2354      289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2355        0,     0,     0,     0,   290,   317,   339,     0,     0,     0,
    2356        0,   772,     0,   292,   340,   294,   295,   296,   297,     2,
    2357      202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2648      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2649       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
     2650       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2651       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2652      34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
     2653       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2654       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2655       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2656       0,     0,     0,     0,   679,     0,     0,     0,     0,     0,
     2657       0,    46,    47,     2,   208,     4,     5,     6,     7,     8,
     2658       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2659      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2660      27,    28,     0,     0,     0,     0,     0,     0,    31,     0,
     2661       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2662       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2663       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
     2664      36,     0,     0,    38,    39,     0,     0,     0,     0,     0,
     2665       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2666       0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
     2667       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2668     593,     0,     0,     0,     0,     0,     0,    46,    47,     2,
     2669     208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    23582670      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2359       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2360        0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
    2361        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2362        0,     0,     0,     0,   280,    33,     0,    34,     0,    35,
    2363      281,     0,    37,    38,   282,     0,     0,   283,   284,   285,
    2364      286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
    2365        0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
    2366        0,     0,     0,     0,     0,     0,   290,     0,   921,     0,
    2367        0,     0,     0,   772,     0,   292,   340,   294,   295,   296,
    2368      297,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2671      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2672       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
     2673       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2674       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2675       0,     0,    34,     0,    35,     0,    36,     0,     0,   209,
     2676      39,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2677      17,    18,    19,    20,    21,    22,    23,    24,    25,    43,
     2678       0,    26,    27,    28,     0,     0,     0,     0,   284,   285,
     2679      31,   286,     0,     0,     0,     0,   210,     0,     0,     0,
     2680       0,     0,     0,    46,    47,     0,     0,     0,     0,     0,
     2681       0,     0,     0,     0,     0,     0,     0,   287,    34,     0,
     2682       0,     0,     0,   288,     0,    38,    39,   289,     0,     0,
     2683     290,   291,   292,   293,    41,    42,     0,   294,   295,     0,
     2684       0,     0,     0,     0,     0,    43,     0,     0,     0,     0,
     2685       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2686     296,     0,   518,     0,     0,   173,     0,     0,     0,    46,
     2687      47,   298,   299,   300,   301,     8,     9,    10,    11,    12,
     2688      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2689      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2690       0,     0,   284,   285,    31,   286,     0,     0,     0,     0,
     2691       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2692       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2693       0,   287,    34,     0,     0,     0,     0,   641,     0,    38,
     2694      39,   289,     0,     0,   290,   291,   292,   293,    41,    42,
     2695       0,   294,   295,     0,     0,     0,     0,     0,     0,    43,
     2696       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2697       0,     0,     0,     0,   296,   -35,   742,     0,     0,     0,
     2698       0,     0,     0,    46,    47,   298,   299,   300,   301,     8,
     2699       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2700      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
     2701      27,    28,     0,     0,     0,     0,   284,   285,    31,   286,
     2702       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2703       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2704       0,     0,     0,     0,     0,   287,    34,     0,     0,     0,
     2705       0,   288,     0,    38,    39,   289,     0,     0,   290,   291,
     2706     292,   293,    41,    42,     0,   294,   295,     0,     0,     0,
     2707       0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
     2708       0,     0,     0,     0,     0,     0,     0,     0,   296,     0,
     2709     297,     0,     0,     0,     0,     0,     0,    46,    47,   298,
     2710     299,   300,   301,     8,     9,    10,    11,    12,    13,    14,
     2711      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2712      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2713     284,   285,    31,   286,     0,     0,     0,     0,     0,     0,
     2714       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2715       0,     0,     0,     0,     0,     0,     0,     0,     0,   287,
     2716      34,     0,     0,     0,     0,   288,     0,    38,    39,   289,
     2717       0,     0,   290,   291,   292,   293,    41,    42,     0,   294,
     2718     295,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2719       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2720       0,     0,   296,     0,   159,     0,     0,     0,     0,     0,
     2721       0,    46,    47,   298,   299,   300,   301,     8,     9,    10,
    23692722      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2370       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2371        0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
    2372        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2373        0,     0,     0,     0,     0,     0,   280,    33,     0,    34,
    2374        0,    35,   281,     0,    37,    38,   282,     0,     0,   283,
    2375      284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
    2376        0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
    2377        0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
    2378      921,     0,     0,     0,     0,   772,     0,   292,   593,   294,
    2379      295,   296,   297,     2,   202,     4,     5,     6,     7,     8,
    2380        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2381       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2382       27,     0,     0,     0,     0,   278,    30,   279,     0,     0,
    2383        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2384        0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
    2385        0,    34,     0,    35,   281,     0,    37,    38,   282,     0,
    2386        0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
    2387        0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
    2388        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2389      290,     0,   339,     0,     0,     0,     0,     0,     0,   292,
    2390      340,   294,   295,   296,   297,     2,   202,     4,     5,     6,
    2391        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2392       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2393       25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
    2394        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2395        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2396      280,    33,     0,    34,     0,    35,   281,     0,    37,    38,
    2397      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2398      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    2399        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2400        0,     0,   290,     0,   921,     0,     0,     0,     0,     0,
    2401        0,   292,   340,   294,   295,   296,   297,     2,   202,     4,
     2723      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
     2724       0,     0,     0,     0,   284,   285,    31,   286,     0,     0,
     2725       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2726       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2727       0,     0,     0,   287,    34,     0,     0,     0,     0,   288,
     2728       0,    38,    39,   289,     0,     0,   290,   291,   292,   293,
     2729      41,    42,     0,   294,   295,     0,     0,     0,     0,     0,
     2730       0,    43,     0,     0,     0,     0,     0,     0,     0,     0,
     2731       0,     0,     0,     0,     0,     0,   296,     0,   593,     0,
     2732       0,     0,     0,     0,     0,    46,    47,   298,   299,   300,
     2733     301,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2734      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
     2735       0,    26,    27,    28,     0,     0,     0,     0,   284,   285,
     2736      31,   286,     0,     0,     0,     0,     0,     0,     0,     0,
     2737       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2738       0,     0,     0,     0,     0,     0,     0,   287,    34,     0,
     2739       0,     0,     0,   288,     0,    38,    39,   289,     0,     0,
     2740     290,   291,   292,   293,    41,    42,     0,   294,   295,     0,
     2741       0,     0,     0,     0,     0,    43,     0,     0,     0,     0,
     2742       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2743     296,     0,   380,     0,     0,     0,     0,     0,     0,    46,
     2744      47,   298,   299,   300,   301,   468,     2,   208,     4,     5,
     2745       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2746      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     2747       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
     2748       0,    31,     0,     0,     0,     8,     9,    10,    11,    12,
     2749      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2750      23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
     2751       0,    35,     0,    36,    31,     0,    38,    39,     0,     0,
     2752       0,     0,     0,     8,     9,    10,    11,    12,    13,    14,
     2753      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2754      25,     0,    34,    26,    27,    28,     0,    37,     0,    38,
     2755      39,    40,    31,     0,     0,     0,    -3,     0,    41,    42,
     2756       0,     0,     0,     0,     0,     0,     0,     0,     0,    43,
     2757       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2758      34,     0,     0,     0,    44,    37,   159,    38,    39,    40,
     2759       0,     0,     0,    46,    47,     0,    41,    42,     0,     0,
     2760       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2761       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2762       0,     0,    44,     0,    45,     0,     0,     0,     0,     0,
     2763       0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
     2764      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2765      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2766       0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     2767      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2768      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2769      34,     0,    31,     0,     0,    37,     0,   209,    39,    40,
     2770       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
     2771       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2772      34,     0,     0,     0,     0,    37,     0,   337,   338,    40,
     2773       0,     0,    44,     0,   272,     0,    41,    42,     0,     0,
     2774       0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
     2775       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2776       0,     0,   635,     0,   339,     0,     0,     0,     0,     0,
     2777       0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
     2778      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2779      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2780       0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     2781      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2782      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2783      34,     0,    31,     0,     0,    37,     0,   337,   338,    40,
     2784       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
     2785       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2786      34,     0,     0,     0,     0,   112,     0,    38,    39,     0,
     2787       0,     0,     0,     0,   339,     0,    41,    42,     0,     0,
     2788       0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
     2789       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2790       0,     0,     0,     0,    45,     0,     0,     0,     0,     0,
     2791       0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
     2792      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2793      25,  -295,     0,    26,    27,    28,     0,     0,     0,     0,
     2794       0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     2795      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2796      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2797      34,     0,    31,   686,     0,     0,     0,    38,    39,     0,
     2798       0,  -295,     0,     0,     0,     0,     0,     0,     0,     0,
     2799       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2800      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2801       0,     0,   635,     0,   339,     0,     0,     0,     0,     0,
     2802       0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
     2803       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2804       0,     0,     0,     0,   687,     0,     0,     0,   688,     0,
     2805       0,    46,    47,     8,     9,    10,    11,    12,    13,    14,
     2806      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2807      25,  -295,     0,    26,    27,    28,     0,     0,     0,     0,
     2808       0,     0,    31,     8,     9,    10,    11,    12,    13,    14,
     2809      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2810      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2811      34,     0,    31,   686,     0,     0,     0,    38,    39,     0,
     2812       0,  -295,     0,     0,     0,     0,     0,     0,     0,     0,
     2813       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2814      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
     2815       0,     0,     0,     0,   339,     0,     0,     0,     0,     0,
     2816       0,    46,    47,     0,     0,     0,     0,    43,     0,     0,
     2817       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2818       0,     0,     0,     0,   687,     0,     0,     0,  1101,     0,
     2819       0,    46,    47,     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,     0,     0,     0,     0,
     2822       0,     0,    31,   686,     8,     9,    10,    11,    12,    13,
     2823      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2824      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2825      34,     0,     0,    31,     0,     0,     0,    38,    39,     0,
     2826       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2827       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
     2828       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
     2829       0,     0,     0,     0,   687,     0,     0,     0,  1233,     0,
     2830       0,    46,    47,     0,     0,     0,     0,     0,    43,     0,
     2831       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2832       0,     0,     0,   635,     0,   339,     0,     0,     0,     0,
     2833       0,     0,    46,    47,     8,     9,    10,    11,    12,    13,
     2834      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2835      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2836       0,     0,     0,    31,     8,     9,    10,    11,    12,    13,
     2837      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2838      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2839       0,    34,     0,    31,     0,     0,     0,     0,    38,    39,
     2840       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2841       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
     2842       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
     2843       0,     0,     0,     0,     0,   259,     0,     0,     0,     0,
     2844       0,     0,    46,    47,     0,     0,     0,     0,    43,     0,
     2845       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2846       0,     0,     0,     0,     0,   159,     0,     0,     0,     0,
     2847       0,     0,    46,    47,     8,     9,    10,    11,    12,    13,
     2848      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2849      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2850       0,     0,     0,    31,     8,     9,    10,    11,    12,    13,
     2851      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2852      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2853       0,    34,     0,    31,     0,     0,     0,     0,   209,    39,
     2854       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2855       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
     2856       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
     2857       0,     0,     0,     0,     0,   272,     0,     0,     0,     0,
     2858       0,     0,    46,    47,     0,     0,     0,     0,    43,     0,
     2859       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2860       0,     0,     0,     0,     0,   339,     0,     0,     0,     0,
     2861       0,     0,    46,    47,     8,     9,    10,    11,    12,    13,
     2862      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2863      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2864       0,     0,     0,    31,     8,     9,    10,    11,    12,    13,
     2865      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2866      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2867       0,    34,     0,    31,     0,     0,     0,     0,    38,    39,
     2868       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2869       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
     2870       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
     2871       0,     0,     0,     0,     0,   687,     0,     0,     0,     0,
     2872       0,     0,    46,    47,     0,     0,     0,     0,    43,     0,
     2873       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2874       0,     0,     0,     0,     0,   593,     0,     0,     0,     0,
     2875       0,     0,    46,    47,     8,     9,    10,    11,    12,    13,
     2876      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2877      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2878       0,     0,     0,    31,     8,     9,    10,    11,    12,    13,
     2879      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2880      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
     2881       0,    34,     0,    31,     0,     0,     0,     0,    38,    39,
     2882       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2883       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
     2884       0,    34,     0,     0,     0,     0,     0,     0,   209,    39,
     2885       0,     0,     0,     0,     0,    45,     0,     0,     0,     0,
     2886       0,     0,    46,    47,     0,     0,     0,     0,    43,     0,
     2887       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2888       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2889       0,     0,    46,    47,     2,   208,     4,     5,     6,     7,
     2890       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2891      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2892      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2893       0,   284,   285,     0,   286,  1051,     0,  1052,     0,     0,
     2894    1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,     0,     0,
     2895    1549,  1061,     0,     0,     0,  1062,  1063,    34,    33,    35,
     2896     287,    36,     0,     0,    38,    39,  1064,     0,     0,     0,
     2897     289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
     2898     294,   295,     0,     0,     0,     0,     0,     0,    43,     0,
     2899       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2900    -416,     0,     0,   296,     0,   380,     0,     0,   173,     0,
     2901       0,     0,    46,    47,   298,   299,   300,   301,     0,     0,
     2902       0,     0,  1066,     0,   284,   285,  -130,   286,  1051,     0,
     2903    1052,     0,     0,  1053,  1054,  1055,  1056,  1057,  1058,  1059,
     2904    1060,     0,     0,     0,  1061,     0,     0,     0,  1062,  1063,
     2905       0,    33,     0,   287,     0,     0,     0,     0,     0,  1064,
     2906       0,     0,     0,   289,     0,     0,   290,   291,   292,   293,
     2907      41,    42,     0,   294,   295,     0,     0,     0,     0,     0,
     2908       0,    43,     0,     0,     0,     0,     0,     0,     0,     0,
     2909       0,     0,     0,     0,     0,     0,   296,     0,   380,     0,
     2910       0,   173,     0,     0,     0,    46,    47,   298,   299,   300,
     2911     301,     0,     0,     0,     0,  1066,     0,     0,     0,  -130,
     2912       2,   208,     4,     5,     6,     7,     8,     9,    10,    11,
     2913      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2914      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
     2915       0,     0,     0,     0,     0,    31,     0,   284,   285,     0,
     2916     286,  1051,     0,  1052,  1419,  1420,  1053,  1054,  1055,  1056,
     2917    1057,  1058,  1059,  1060,     0,     0,  1549,  1061,     0,     0,
     2918       0,  1062,  1063,    34,    33,    35,   287,    36,     0,     0,
     2919      38,    39,  1064,     0,     0,     0,   289,     0,     0,   290,
     2920     291,   292,   293,    41,    42,     0,   294,   295,     0,     0,
     2921       0,     0,  1327,     0,    43,     0,     0,     0,     0,     0,
     2922       0,     0,     0,     0,     0,     0,     0,     0,     0,   296,
     2923       0,   380,     0,     0,   173,     0,     0,     0,    46,    47,
     2924     298,   299,   300,   301,     0,     0,   284,   285,  1066,   286,
     2925    1051,     0,  1052,  1419,  1420,  1053,  1054,  1055,  1056,  1057,
     2926    1058,  1059,  1060,     0,     0,     0,  1061,     0,     0,     0,
     2927    1062,  1063,     0,    33,     0,   287,     0,     0,     0,     0,
     2928       0,  1064,     0,     0,     0,   289,     0,     0,   290,   291,
     2929     292,   293,    41,    42,     0,   294,   295,     0,     0,     0,
     2930       0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
     2931       0,     0,     0,     0,     0,     0,     0,     0,   296,     0,
     2932     380,     0,     0,   173,     0,     0,     0,    46,    47,   298,
     2933     299,   300,   301,     0,     0,   284,   285,  1066,   286,  1051,
     2934       0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,  1058,
     2935    1059,  1060,     0,     0,     0,  1061,     0,     0,     0,  1062,
     2936    1063,     0,    33,     0,   287,     0,     0,     0,     0,     0,
     2937    1064,     0,     0,     0,   289,     0,     0,   290,   291,   292,
     2938     293,    41,    42,     0,   294,   295,     0,     0,     0,     0,
     2939       0,     0,    43,   284,   285,     0,   286,     0,     0,     0,
     2940       0,     0,     0,     0,     0,     0,     0,   296,     0,   380,
     2941       0,     0,   173,     0,     0,     0,    46,    47,   298,   299,
     2942     300,   301,   287,     0,     0,     0,  1066,     0,   641,     0,
     2943     141,   142,   289,     0,     0,   290,   642,   292,   293,    41,
     2944      42,     0,   294,   295,     0,     0,     0,     0,     0,     0,
     2945      43,   284,   285,     0,   286,     0,     0,     0,     0,     0,
     2946       0,     0,     0,     0,     0,   296,     0,   643,     0,   644,
     2947     381,     0,     0,     0,    46,    47,   298,   299,   300,   301,
     2948     287,     0,     0,     0,     0,     0,   288,     0,     0,     0,
     2949     289,     0,     0,   290,   291,   292,   293,    41,    42,     0,
     2950     294,   295,     0,     0,     0,     0,     0,     0,    43,   284,
     2951     285,     0,   286,     0,     0,     0,     0,     0,     0,     0,
     2952       0,     0,     0,   296,     0,   380,     0,     0,   284,   285,
     2953       0,   286,   710,    47,   298,   299,   300,   301,   287,     0,
     2954       0,     0,     0,     0,   641,     0,     0,     0,   289,     0,
     2955       0,   290,   291,   292,   293,    41,    42,   287,   294,   295,
     2956       0,     0,     0,   288,     0,     0,    43,   289,     0,     0,
     2957     290,   291,   292,   293,    41,    42,     0,   294,   295,     0,
     2958       0,   296,     0,   765,     0,    43,   284,   285,     0,   286,
     2959      46,    47,   298,   299,   300,   301,     0,     0,     0,     0,
     2960     296,     0,   380,     0,     0,   284,   285,     0,   286,   345,
     2961      47,   298,   299,   300,   301,   287,     0,     0,     0,     0,
     2962       0,   288,     0,     0,     0,   289,     0,     0,   290,   291,
     2963     292,   293,    41,    42,   287,   294,   295,     0,     0,     0,
     2964     288,     0,     0,    43,   289,     0,     0,   290,   291,   292,
     2965     293,    41,    42,     0,   294,   295,     0,     0,   512,     0,
     2966       0,     0,    43,     0,     0,     0,     0,    46,    47,   298,
     2967     299,   300,   301,     0,     0,     0,     0,   515,     0,     0,
     2968       0,     0,     0,     0,     0,     0,    46,    47,   298,   299,
     2969     300,   301,     2,   208,     4,     5,     6,     7,     8,     9,
     2970      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2971      20,    21,    22,    23,    24,    25,     0,     0,     0,     0,
     2972       0,     0,     0,     0,     0,     0,     0,    31,     0,     0,
     2973       0,     0,     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,    34,     0,    35,     0,    36,
     2976      37,     0,   176,   177,    40,     0,     0,     0,     0,     0,
     2977       0,    41,    42,   207,     2,   208,     4,     5,     6,     7,
     2978       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2979      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
     2980      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
     2981       0,     0,     0,     0,     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,    34,     0,    35,
     2984       0,    36,     0,     0,   209,    39,   468,     2,   208,     4,
    24022985       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    24032986      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2404        0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
    2405       30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
    2406        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2407        0,     0,   280,    33,     0,    34,     0,    35,   281,     0,
    2408      203,    38,   282,     0,     0,   283,   284,   285,   286,    40,
    2409       41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
    2410      289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2411        0,     0,     0,     0,   290,     0,  1008,     0,     0,     0,
    2412        0,     0,     0,   292,  1009,   294,   295,   296,   297,     2,
    2413      202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2987      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
     2988       0,     0,    31,     0,     0,     0,     0,     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      34,     0,    35,     0,    36,     0,     0,    38,    39,     2,
     2992     208,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    24142993      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2415       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2416        0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
    2417        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2418        0,     0,     0,     0,   280,    33,     0,    34,     0,    35,
    2419      281,     0,   203,    38,   282,     0,     0,   283,   284,   285,
    2420      286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
    2421        0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
    2422        0,     0,     0,     0,     0,     0,   290,     0,   374,     0,
    2423        0,     0,     0,     0,     0,   292,   376,   294,   295,   296,
    2424      297,     1,     2,     3,     4,     5,     6,     7,     8,     9,
    2425       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2426       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2427       28,     0,     0,    29,     0,    30,    31,     0,     0,     0,
    2428        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2429        0,     0,     0,     0,     0,    32,     0,     0,    33,     0,
    2430       34,     0,    35,    36,     0,    37,    38,    39,     0,     0,
    2431        0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
    2432        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2433        0,     0,     0,     0,     0,     0,     0,     0,     0,    42,
    2434        0,    43,     0,     0,     0,  -509,     0,     0,     0,    44,
    2435        1,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2994      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
     2995       0,     0,     0,     0,    31,     0,     0,     0,     0,     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,    34,     0,    35,     0,    36,     0,     0,   209,
     2999      39
     3000};
     3001
     3002#define yypact_value_is_default(yystate) \
     3003  ((yystate) == (-1414))
     3004
     3005#define yytable_value_is_error(yytable_value) \
     3006  YYID (0)
     3007
     3008static const yytype_int16 yycheck[] =
     3009{
     3010       0,     1,    44,   187,   187,   535,   187,     0,    44,   753,
     3011     187,    44,   206,   241,   648,   187,   522,   753,   188,   881,
     3012       1,   753,   107,   221,   118,   187,   187,   514,   621,   170,
     3013     171,   350,    32,     0,   986,   760,     0,   189,   603,    32,
     3014     350,   601,   601,   493,    44,   188,   281,   497,    44,   993,
     3015      50,    39,  1337,   604,    44,  1419,   603,    50,    44,   610,
     3016     601,   572,    51,    32,    64,    32,    72,    67,    32,    82,
     3017      70,    64,   157,   601,    67,    95,  1050,    70,    39,   346,
     3018     419,    44,    45,   267,   267,  1031,   267,   694,   601,    70,
     3019     267,    63,   107,   601,    50,   267,   296,   110,   268,  1043,
     3020     439,  1062,  1063,   601,   117,   267,   267,   107,   447,   203,
     3021     130,   263,   264,  1526,    39,   115,   131,    82,   118,   119,
     3022     109,   109,    67,   111,    39,   268,   132,    64,   483,  1493,
     3023      72,  1030,  1031,  1546,    39,    44,    45,    39,   365,    84,
     3024    1553,   735,   369,   636,   637,   187,   427,   428,   148,   149,
     3025     111,   187,   115,   881,   187,  1440,   149,   157,   158,   115,
     3026     132,   654,   162,   635,   636,   637,     0,   258,   912,   162,
     3027     489,    28,   109,    39,   119,    82,   912,     0,     1,  1140,
     3028     912,   112,   654,   689,   109,   116,   111,   187,   188,    72,
     3029     132,   187,   148,   110,   109,   188,   111,   187,    32,   116,
     3030       0,   187,    82,   203,   109,   114,   111,   720,    82,    32,
     3031     117,   211,   720,   411,   495,    96,   483,   162,   211,   712,
     3032      82,    78,   720,   223,     0,   267,    58,   427,   428,   109,
     3033     223,   267,    32,   514,   267,   118,   110,   407,   115,   116,
     3034     712,   241,   123,   109,    67,   111,    85,    70,   109,   111,
     3035     111,   109,    67,   253,   131,   211,    32,   342,   818,   818,
     3036     253,   261,   109,  1423,   407,   830,   266,   267,   268,   820,
     3037       1,   996,   283,   273,   113,   268,   108,   818,   223,   111,
     3038     635,   636,   637,   830,   253,   241,   253,   372,   799,   253,
     3039     818,    67,  1238,   603,     0,     1,   296,   931,   579,   654,
     3040     907,    11,  1254,   397,   119,   818,     1,   507,   308,   116,
     3041     818,   481,   512,   109,   807,   515,   261,   273,   491,    50,
     3042     818,   266,  1050,  1475,   324,   132,    32,   109,   419,   329,
     3043    1304,   425,    44,    45,   230,   807,   329,   431,   481,   112,
     3044      80,   112,   342,   116,   683,  1291,   346,   162,   439,   131,
     3045     350,   351,   308,   249,   621,    82,   447,   712,  1510,   626,
     3046    1512,  1521,  1224,   590,    70,   365,  1526,   116,   568,   369,
     3047     697,   111,   372,   113,    96,   940,   107,   117,   110,   939,
     3048     939,   110,   109,   132,   115,   117,  1546,   116,   220,   110,
     3049     346,  1290,  1291,  1553,   749,  1526,   117,   397,   939,   131,
     3050     223,   123,   114,    90,    91,   632,   351,   407,   223,    10,
     3051      11,    12,    13,    14,   407,   114,  1009,   148,   116,   253,
     3052      94,     0,  1553,    80,   258,   425,   157,   427,   428,  1125,
     3053     253,   431,   605,  1129,   434,   109,   609,   111,    39,   126,
     3054     127,   526,   274,   116,   118,   119,   261,   223,   129,   281,
     3055     131,   266,   807,   253,   111,   455,   113,   630,   258,   132,
     3056     117,   634,   116,  1407,  1408,  1059,    67,  1018,  1019,  1415,
     3057     976,   427,   428,   473,     3,   112,   207,   253,   132,   116,
     3058     211,   481,   749,   483,   116,   485,   697,   432,   481,   489,
     3059    1464,    72,   485,     0,   505,   495,  1224,  1471,   948,   734,
     3060     132,   116,    83,    84,   991,  1139,   658,   507,   649,   509,
     3061     241,   830,   512,     3,   514,   515,  1415,   349,   485,   689,
     3062     830,   485,   522,     0,   116,    32,   526,   527,   110,   474,
     3063     111,   109,   116,   111,   366,   117,   351,    44,   370,   495,
     3064     132,    72,   273,    50,  1109,   276,   689,   253,   132,    94,
     3065    1524,   112,    83,    84,   116,   116,   911,    64,   514,   254,
     3066      67,  1496,   656,    70,   109,   296,   111,  1502,   116,   109,
     3067     132,   571,   572,   118,   119,   351,  1304,   308,   131,   579,
     3068     111,   792,   809,    94,   132,   419,   913,   814,  1523,  1095,
     3069     590,   591,   683,  1528,  1100,   595,   116,   917,   109,   919,
     3070     111,   601,   110,   603,   116,   439,   116,   118,   119,   110,
     3071     110,   342,   132,   447,   116,   346,   116,   432,   709,   419,
     3072     132,   621,   132,   579,   116,   944,   626,   591,   628,   112,
     3073     132,   958,   632,   116,   365,   635,   636,   637,   369,   439,
     3074     132,   372,   149,   109,   911,   111,   110,   447,   112,   483,
     3075     595,   485,   116,   109,   654,   162,   656,   668,   869,   474,
     3076     110,    72,   485,   748,   109,   621,   116,   131,   132,   867,
     3077     626,   110,    83,    84,    50,  1030,   903,   116,   623,   852,
     3078     187,   188,    72,   628,   109,   485,   686,   109,   110,   689,
     3079     888,   120,   121,    83,    84,   110,   427,   428,   474,    71,
     3080     111,   116,   913,    75,   211,   109,    78,   111,    80,   485,
     3081    1304,   118,   712,   713,   714,    87,   223,   124,   125,   109,
     3082     720,   721,   950,   109,   455,   111,   109,   738,   912,   912,
     3083     109,   912,   873,    88,    89,   912,  1464,   468,   109,   115,
     3084     912,   110,  1009,  1471,   914,   110,   253,   958,   748,   749,
     3085     912,   912,   110,   753,   754,   700,    72,   110,    74,    75,
     3086     267,   112,   493,    72,   495,   109,   497,    83,    84,   714,
     3087     109,   914,   945,   468,    83,    84,   507,    72,   509,   485,
     3088     595,   512,   115,   514,   515,   996,  1530,  1381,    83,    84,
     3089     622,  1321,   115,   116,  1530,   526,  1524,   110,  1530,   799,
     3090    1127,   109,   111,   116,  1159,   132,   638,   807,   623,   809,
     3091     110,   811,    64,   628,   814,   815,   116,   110,   818,   514,
     3092     109,   653,   329,   116,   507,   910,   509,   110,  1022,   512,
     3093     830,   109,   515,   116,   529,   211,  1047,   532,   112,   534,
     3094     535,   132,   214,   350,    85,    86,    87,   623,   579,   683,
     3095      72,   815,    74,    75,   110,   557,   558,   559,   560,   590,
     3096     116,    83,    84,  1190,  1191,   110,   811,   109,   109,   111,
     3097     111,   116,   113,   114,  1468,   709,  1470,   114,   110,   114,
     3098     110,   881,   132,   683,   116,   700,   116,   110,   583,   111,
     3099     621,   109,  1159,   116,   109,   626,   111,   273,   132,   714,
     3100     407,   632,   734,   903,  1045,   465,   109,  1134,   111,   709,
     3101     910,   911,   912,   110,   914,   749,  1127,   881,   114,   116,
     3102     296,   110,   110,   110,   700,  1095,   926,   116,   116,   116,
     3103    1100,  1525,   308,    82,   109,  1290,   111,   109,   714,   939,
     3104     940,    85,    86,    87,   944,   109,   110,   111,   109,   949,
     3105     950,    82,  1095,    92,    93,   686,   112,  1100,     0,     1,
     3106     655,   119,   657,   116,   117,   109,   966,   111,   949,   113,
     3107     114,  1238,   129,    72,   110,   111,   976,    76,   485,  1190,
     3108    1191,   353,   489,   355,    83,    84,   128,    29,    30,   465,
     3109      32,    58,    59,   724,   950,    94,   811,   115,   116,  1505,
     3110     116,   117,    44,  1203,  1204,    94,  1206,   131,    50,  1009,
     3111     109,   111,   707,  1213,   109,  1215,    58,   748,   109,   118,
     3112     119,   114,    64,  1117,   112,    67,   116,   117,    70,   112,
     3113    1030,  1031,   109,   110,   111,   811,     4,     5,     6,     7,
     3114       8,     9,    84,    85,   109,   110,   111,   881,   112,  1555,
     3115    1050,    44,    45,  1009,   109,   110,   111,   110,   881,    10,
     3116      11,    12,    13,    14,   553,   554,   108,  1012,   109,   111,
     3117      30,   443,   110,   110,  1401,   110,   118,   911,   809,   455,
     3118     110,   881,   110,   814,   555,   556,  1050,   112,    39,   111,
     3119    1090,   131,  1419,   116,   601,  1095,   603,    58,    59,    60,
     3120    1100,    69,   114,    71,   114,   881,   109,   149,   112,  1109,
     3121     561,   562,   672,   110,  1125,   157,    67,  1117,  1129,  1130,
     3122     162,  1263,  1264,  1265,    84,    85,   949,   110,   112,   117,
     3123     112,   507,   112,   509,  1134,  1220,   512,   112,   117,   515,
     3124       3,   117,   116,    94,    29,   187,   188,    10,    11,    12,
     3125      13,    14,   110,   110,   116,   114,   112,   112,   109,  1159,
     3126     111,   203,   115,   110,   132,  1492,  1493,   118,   119,   211,
     3127     115,   115,   903,   109,   116,   881,    39,  1377,   220,   910,
     3128     110,   223,   689,   132,   110,   110,   117,   110,   230,   110,
     3129    1401,   110,   116,   110,   110,   926,   672,  1012,   110,   110,
     3130     110,  1201,  1202,   245,    67,   110,   110,   249,  1419,   110,
     3131     110,   253,   254,   720,   721,   110,  1050,   948,   949,   950,
     3132    1220,  1202,   110,   110,  1224,   267,   268,  1050,   110,    72,
     3133      29,   115,   274,    76,   131,   795,  1012,  1248,  1238,   281,
     3134      83,    84,  1242,   949,   117,   805,    72,   116,    74,    75,
     3135    1050,    94,    72,   110,    74,    75,  1201,    83,    84,   819,
     3136    1224,  1242,   112,    83,    84,   112,   109,   116,   111,   964,
     3137     110,   110,   110,   117,  1050,   118,   119,   112,  1009,   116,
     3138     114,  1492,  1493,   109,   116,   245,   110,   329,   114,   109,
     3139    1290,  1291,   110,   988,   114,   110,   991,   110,   993,  1299,
     3140     112,   110,   116,  1397,  1304,   116,     3,   349,   350,   110,
     3141     686,   818,  1540,    10,    11,    12,    13,    14,   112,   795,
     3142     109,   109,   109,   830,   366,  1159,   109,  1338,   370,   805,
     3143     109,  1342,   117,   115,   112,   132,   110,  1337,   110,   381,
     3144    1304,   110,    39,   819,  1050,   115,  1530,  1530,  1043,  1530,
     3145     115,   114,   129,  1530,  1299,   397,  1337,   112,  1530,  1090,
     3146     110,  1531,   116,   112,   132,   407,   112,   110,  1530,  1530,
     3147      67,     4,     5,     6,     7,     8,     9,   116,  1201,  1202,
     3148     110,   110,    47,   425,   112,  1555,  1201,   112,  1531,   431,
     3149    1224,   433,   112,   110,   112,   132,   112,  1397,   112,   132,
     3150      33,  1224,   115,  1134,  1238,   912,    72,   914,    74,    75,
     3151      76,  1505,  1555,   132,   110,  1415,   115,    83,    84,  1242,
     3152     132,   381,   132,   117,  1224,  1201,   468,   110,   112,   115,
     3153     112,   473,   112,  1444,   112,    56,    69,   944,    71,   481,
     3154    1440,   112,   112,   485,   112,   112,   110,   489,  1224,   110,
     3155     492,   109,   494,   881,    72,   112,    74,    75,    76,  1440,
     3156     112,   109,   109,    60,  1464,    83,    84,  1027,  1028,   110,
     3157    1304,  1471,   514,  1473,   110,  1475,  1299,   114,    99,   132,
     3158     112,  1304,   117,   112,  1299,   110,   112,   529,  1530,  1220,
     3159     532,   109,   534,   535,  1530,   110,  1202,  1530,    96,   109,
     3160    1464,    96,   109,   115,  1304,  1505,   112,  1471,   132,   110,
     3161    1510,  1242,  1512,   116,  1337,    42,   110,   110,  1224,   110,
     3162     110,   117,   110,  1299,  1524,  1085,  1086,   132,  1304,    96,
     3163    1530,  1531,   492,   132,   494,     3,  1242,    96,  1531,   110,
     3164    1540,   583,    10,    11,    12,    13,    14,   132,   590,   132,
     3165     926,  1027,  1028,   117,    72,  1555,   110,     0,    76,   601,
     3166    1524,   603,  1555,   286,  1396,    83,    84,   132,  1263,  1264,
     3167    1265,    39,   110,   110,   195,   115,    94,   112,   112,   132,
     3168     622,   109,   132,   115,  1540,   308,   309,   110,  1095,    32,
     3169     115,   109,    72,  1100,    74,    75,   638,   218,  1304,    67,
     3170     118,   119,   644,    83,    84,   110,  1337,   228,   132,  1085,
     3171    1086,   653,   110,   655,   656,   657,   110,  1440,  1066,   565,
     3172     563,  1224,  1493,   346,   564,  1053,  1321,    70,   566,  1383,
     3173    1464,  1337,   567,  1565,   114,  1314,  1130,  1471,  1342,  1081,
     3174    1471,  1464,   686,   686,   919,  1100,   927,   689,  1471,   699,
     3175     583,   693,   980,   695,   873,   650,   724,   699,   946,   382,
     3176      50,   734,  1242,   485,  1464,   707,    -1,    26,    27,    28,
     3177      -1,  1471,   571,   571,    64,   296,  1236,    67,   720,   721,
     3178      70,   571,    -1,    -1,   644,    -1,    -1,    -1,  1464,    -1,
     3179    1524,    -1,   734,    -1,    -1,  1471,    72,    -1,    74,    75,
     3180      76,  1524,    -1,    58,    -1,     0,     1,    83,    84,  1440,
     3181      -1,  1271,  1407,  1408,  1090,   158,    -1,    -1,    -1,  1279,
     3182    1280,  1281,    -1,    -1,  1524,     4,     5,     6,     7,     8,
     3183       9,    -1,    -1,   693,  1440,   695,    -1,    32,    -1,   699,
     3184      -1,   100,  1473,   102,  1475,    -1,    -1,    -1,  1524,    -1,
     3185    1445,    -1,    -1,   108,    -1,    50,   111,    -1,  1464,   149,
     3186    1236,    67,    -1,    -1,    -1,  1471,   191,    -1,    -1,    -1,
     3187      -1,    77,   162,   198,    -1,    70,   818,    -1,    -1,  1510,
     3188      -1,  1512,    -1,    -1,    -1,  1345,    -1,    -1,   830,   232,
     3189      69,    -1,    71,    -1,    -1,  1271,  1224,    -1,   188,    -1,
     3190      -1,    -1,   157,  1279,  1280,  1281,    -1,    -1,    -1,  1540,
     3191     253,  1506,   107,   119,    -1,   258,    -1,    -1,  1524,    -1,
     3192    1515,   211,    -1,   444,   183,    -1,    -1,   550,   551,   552,
     3193      -1,   873,    -1,   223,   193,   194,    -1,    -1,   880,   198,
     3194      -1,   200,   201,    -1,    -1,   270,    -1,    -1,    72,   470,
     3195      74,    75,    76,    -1,   149,    -1,   162,    -1,    -1,    83,
     3196      84,   903,   157,   158,    -1,   220,    -1,    -1,    -1,  1345,
     3197     912,    -1,   914,    -1,    -1,    -1,    -1,    -1,    72,   921,
     3198      74,    75,    76,    -1,    -1,   109,   507,    -1,    -1,    83,
     3199      84,   512,  1320,   188,   515,    -1,    -1,    -1,    -1,   324,
     3200      94,    -1,   944,    -1,    -1,    -1,    -1,   332,   203,   352,
     3201     335,   206,   207,   873,    -1,   109,   211,   223,    -1,   274,
     3202     880,    -1,   964,    -1,   118,   119,   281,    -1,    -1,    -1,
     3203      -1,    -1,    -1,    -1,    -1,    -1,    -1,   232,   980,   329,
     3204      -1,   236,    -1,   238,    -1,    -1,   988,  1375,    -1,   991,
     3205    1378,   993,   247,    -1,    -1,   261,    -1,    -1,   253,    -1,
     3206     266,   921,    -1,   258,    -1,    -1,    -1,    -1,   672,    -1,
     3207      -1,    -1,    -1,   268,   399,   281,   419,    -1,   403,    -1,
     3208      -1,   276,    -1,    -1,    10,    11,    12,    13,    14,    -1,
     3209      -1,   434,    -1,    -1,   349,  1423,   439,    -1,    -1,    -1,
     3210    1428,  1043,    -1,    -1,   447,    10,    11,    12,    13,    14,
     3211      -1,   366,    -1,    39,    -1,   370,    -1,   407,    -1,    -1,
     3212     980,    -1,   465,  1530,    -1,    -1,    -1,    -1,    -1,    -1,
     3213    1458,    -1,    -1,    -1,    39,    -1,    -1,   760,    -1,  1081,
     3214     483,    67,   485,    -1,    -1,   351,    -1,   342,    -1,    -1,
     3215     671,   346,    -1,  1095,    -1,   480,    -1,   352,  1100,   680,
     3216      -1,    -1,    67,   684,    -1,    -1,    -1,    -1,    94,    -1,
     3217     365,    -1,    -1,    -1,   369,  1117,    -1,   372,   433,    -1,
     3218      -1,    -1,    -1,   109,   527,   111,    -1,    -1,    -1,    94,
     3219      -1,   795,   118,   119,    -1,    -1,    -1,  1473,    -1,  1475,
     3220      -1,   805,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3221      -1,    -1,    -1,   118,   119,   819,  1544,    -1,    -1,    -1,
     3222      -1,  1081,  1550,    -1,   419,    -1,   432,    -1,    -1,    -1,
     3223      -1,    -1,    -1,  1561,  1510,    -1,  1512,  1565,    72,   434,
     3224      74,    75,    76,   449,   439,    -1,   571,   572,   591,    83,
     3225      84,    -1,   447,    -1,    72,  1197,    74,    75,    76,    -1,
     3226      94,    -1,    -1,     0,    -1,    83,    84,    -1,   474,    -1,
     3227     465,    -1,    -1,   468,    -1,   109,    94,   111,  1220,    -1,
     3228      -1,    -1,    -1,   117,   118,   119,    -1,    -1,   483,    -1,
     3229     485,   109,   635,   636,   637,    32,    -1,    -1,   493,    -1,
     3230     118,   119,   497,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3231      -1,   654,    -1,    -1,    -1,    -1,   575,   576,    -1,    -1,
     3232      -1,  1263,  1264,  1265,    -1,    -1,    -1,    -1,    -1,   672,
     3233      -1,   526,   527,    70,   659,   590,    -1,  1197,   663,    -1,
     3234     683,    -1,    -1,    -1,    -1,   604,    -1,    -1,   607,   608,
     3235      -1,   610,    -1,   612,   613,    -1,    -1,    -1,   617,   618,
     3236      -1,    -1,    -1,    -1,    -1,    -1,   709,   622,    -1,   712,
     3237      -1,    -1,    -1,    -1,    -1,    -1,    -1,   572,     0,  1321,
     3238      -1,    -1,    -1,   638,   905,    -1,  1009,    -1,    -1,   595,
     3239      -1,    -1,    -1,    -1,    -1,   590,   591,    -1,   653,    -1,
     3240      -1,    -1,    -1,     0,     1,    -1,   749,    -1,   603,    -1,
     3241      32,    -1,    -1,    -1,    -1,    -1,    -1,   623,    -1,    -1,
     3242      -1,   158,   628,  1027,  1028,    -1,   621,  1050,    -1,    -1,
     3243      -1,   626,    -1,    -1,    -1,    32,    -1,   632,    -1,    -1,
     3244     635,   636,   637,    -1,    -1,    -1,    -1,    -1,    70,    -1,
     3245      -1,    -1,   795,    -1,  1396,  1397,    -1,    -1,    -1,   654,
     3246      -1,    -1,   805,    -1,   807,  1407,  1408,    -1,    -1,   812,
     3247      67,    -1,   815,    70,   799,    -1,   819,   672,    -1,   734,
     3248      -1,  1085,  1086,    -1,    -1,    -1,    -1,    -1,   683,    -1,
     3249      -1,    -1,    -1,    -1,   700,    -1,    -1,    -1,    -1,   758,
     3250     759,    -1,    -1,  1445,    -1,    -1,    -1,    -1,   714,    -1,
     3251      -1,    -1,    -1,    -1,   709,    -1,   253,   712,    -1,    -1,
     3252      -1,   258,    -1,    -1,    -1,    -1,   721,    -1,   734,   724,
     3253      72,    -1,    74,    75,    76,    -1,   158,    -1,   881,    -1,
     3254    1061,    83,    84,    -1,    72,    -1,    74,    75,    76,    -1,
     3255      -1,    -1,    94,   748,   749,    83,    84,    -1,    -1,   754,
     3256      -1,   158,    -1,  1505,  1506,    -1,    94,   109,   911,   111,
     3257      -1,    -1,    -1,  1515,    -1,    -1,   118,   119,    -1,    -1,
     3258      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,  1530,  1531,
     3259     118,   119,    -1,   918,    -1,    -1,    -1,    -1,    -1,    -1,
     3260     795,    -1,    -1,    -1,    -1,   811,    -1,    -1,    -1,    -1,
     3261     805,    -1,   807,  1555,   809,   352,    -1,   812,    -1,   814,
     3262     815,    -1,    -1,   966,   819,    -1,   223,    -1,    -1,    -1,
     3263      -1,   253,    -1,    -1,   829,    -1,   258,    97,    98,    99,
     3264     100,   101,   102,   103,   104,   105,   106,    -1,   903,    -1,
     3265      -1,    -1,    -1,    -1,    -1,    -1,   253,    72,    -1,    74,
     3266      75,    76,    -1,    -1,   923,    -1,    -1,  1271,    83,    84,
     3267      -1,   131,    -1,   998,    -1,  1279,  1280,  1281,    -1,    94,
     3268      -1,    -1,   419,    -1,  1027,  1028,   881,  1030,  1031,    -1,
     3269    1015,    -1,    -1,    -1,   109,    -1,   111,   434,    -1,    -1,
     3270      -1,    -1,   439,   118,   119,    -1,    -1,  1050,   903,    -1,
     3271     447,    -1,    -1,    -1,    -1,   910,   911,    -1,    -1,   914,
     3272      -1,    10,    11,    12,    13,    14,    -1,    -1,   465,    -1,
     3273     352,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3274      -1,  1345,  1085,  1086,    -1,   940,   483,    -1,   485,    -1,
     3275      39,    -1,    -1,   948,   949,    -1,    -1,    -1,    -1,    -1,
     3276      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1093,    -1,
     3277      -1,   966,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3278      -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
     3279     527,    -1,  1313,    -1,    83,    84,    -1,   419,    -1,    -1,
     3280      -1,    -1,    -1,    -1,    -1,    94,  1012,    -1,    -1,    -1,
     3281    1135,    -1,   434,    -1,  1009,    -1,  1159,   439,    -1,    -1,
     3282     109,    -1,   111,    -1,    -1,   447,    -1,  1022,  1087,   118,
     3283     119,    -1,  1027,  1028,    -1,  1030,  1031,   434,    -1,    -1,
     3284      -1,    -1,    -1,   465,    -1,    -1,    -1,    -1,    -1,    -1,
     3285      -1,    -1,    -1,    -1,   591,  1050,    -1,    -1,    -1,  1202,
     3286      -1,   483,    -1,   485,    -1,    -1,    -1,    -1,    -1,    -1,
     3287      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3288      -1,  1224,    -1,    -1,    -1,    -1,    -1,    -1,   485,    -1,
     3289    1085,  1086,    -1,  1236,    -1,  1238,    -1,    -1,   635,   636,
     3290     637,    -1,    -1,    -1,    -1,   527,    -1,    -1,    -1,    -1,
     3291      -1,    -1,    -1,    -1,    -1,    -1,    -1,   654,    -1,    -1,
     3292      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1271,    -1,
     3293     527,    -1,    -1,    -1,     0,   672,  1279,  1280,  1281,  1134,
     3294      -1,    -1,    -1,    -1,    -1,    -1,   683,  1290,  1291,    -1,
     3295      -1,  1472,    -1,  1474,    -1,    -1,    -1,    -1,    -1,    -1,
     3296    1219,  1304,    -1,    -1,  1159,  1220,    32,    -1,    -1,   591,
     3297      -1,    -1,   709,    -1,    -1,   712,    -1,    -1,    -1,    -1,
     3298      10,    11,    12,    13,    14,    -1,    -1,    -1,  1509,    -1,
     3299    1511,    -1,    -1,    -1,   591,  1201,    -1,    -1,    -1,    -1,
     3300      -1,    -1,  1345,    -1,    70,    -1,    -1,  1202,    -1,    39,
     3301      -1,    -1,   749,   635,   636,   637,    -1,    -1,    -1,    -1,
     3302      -1,    -1,    -1,    -1,    -1,  1220,    -1,    -1,    -1,  1224,
     3303      -1,    -1,   654,  1554,    -1,  1556,    -1,    67,   635,   636,
     3304     637,  1236,    72,  1238,    74,    75,    76,  1242,  1569,  1570,
     3305     672,    -1,    -1,    83,    84,    -1,    -1,   654,   795,    -1,
     3306      -1,   683,    -1,    -1,    94,    -1,    -1,    -1,   805,    -1,
     3307     807,    -1,  1415,    -1,    -1,   812,  1271,    -1,   815,   109,
     3308      -1,   111,   819,    -1,  1279,  1280,  1281,   709,   118,   119,
     3309     712,    -1,   158,  1299,    -1,  1290,  1291,    -1,    -1,    -1,
     3310      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,  1304,
     3311      -1,    -1,    -1,    -1,    -1,   712,    -1,    -1,    -1,    -1,
     3312      -1,  1464,    -1,    -1,    -1,    -1,    -1,   749,  1471,    -1,
     3313      -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
     3314      -1,  1396,  1337,    -1,   881,    -1,    -1,    -1,    -1,    -1,
     3315    1345,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3316      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
     3317      76,    -1,    -1,   795,   911,    -1,    -1,    83,    84,    -1,
     3318      -1,  1524,    -1,   805,    -1,   807,    -1,   253,    94,    -1,
     3319     812,    -1,   258,   815,    -1,    -1,    -1,   819,    -1,    -1,
     3320      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     3321     807,    -1,   118,   119,    -1,    -1,    -1,    -1,   815,    -1,
     3322    1415,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   966,
     3323      -1,    54,    -1,    56,    -1,    -1,    59,    60,    61,    -1,
     3324      63,    -1,    -1,    -1,    -1,  1440,    10,    11,    12,    13,
     3325      14,    -1,    -1,    -1,    -1,    78,    -1,    -1,    -1,   881,
     3326      -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,  1464,
     3327      -1,    -1,    -1,    -1,    -1,    39,  1471,    10,    11,    12,
     3328      13,    14,    -1,    -1,   881,    -1,   352,    -1,    -1,   911,
     3329    1027,  1028,    -1,  1030,  1031,    -1,    -1,    -1,    -1,    -1,
     3330      -1,    -1,    -1,    67,    -1,    -1,    39,    -1,    72,    -1,
     3331      74,    75,    76,  1050,    -1,    -1,    -1,    -1,    -1,    83,
     3332      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1524,
     3333      94,    -1,    -1,    -1,    67,    -1,  1531,    -1,    -1,    72,
     3334      -1,    74,    75,    76,   966,   109,    -1,    -1,  1085,  1086,
     3335      83,    84,   949,   419,   118,   119,    -1,    -1,    -1,    -1,
     3336      -1,    94,    -1,    10,    11,    12,    13,    14,   434,   966,
     3337      -1,    -1,    -1,   439,    -1,    -1,   109,    -1,    -1,    -1,
     3338      -1,   447,    -1,    -1,    -1,   118,   119,    -1,    -1,    -1,
     3339      -1,    -1,    39,    -1,    10,    11,    12,    13,    14,   465,
     3340      -1,    -1,    -1,    -1,    -1,  1027,  1028,    -1,  1030,  1031,
     3341      -1,    -1,    -1,    -1,    -1,    -1,    -1,   483,    -1,   485,
     3342      67,    -1,  1159,    39,    -1,    72,    -1,    -1,  1050,    76,
     3343      -1,    -1,    -1,  1030,  1031,    -1,    83,    84,    -1,    -1,
     3344      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     3345      -1,    67,    -1,  1050,    -1,    -1,    72,    -1,    -1,    -1,
     3346      76,   527,   109,  1085,  1086,  1202,    -1,    83,    84,    -1,
     3347      -1,   118,   119,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3348      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1224,    -1,    -1,
     3349      -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,  1236,
     3350      -1,  1238,   118,   119,    10,    11,    12,    13,    14,    15,
     3351      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3352      26,    27,   345,    -1,   347,   591,    -1,    -1,    -1,    -1,
     3353      -1,    -1,    -1,    39,  1271,   358,   359,  1159,    -1,    -1,
     3354      -1,    -1,  1279,  1280,  1281,    -1,    -1,    -1,    -1,    -1,
     3355      -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,    -1,
     3356      -1,    67,    -1,    -1,    -1,    -1,    -1,  1304,    -1,   635,
     3357     636,   637,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3358    1202,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   654,    -1,
     3359      37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,
     3360      -1,    -1,  1224,    -1,  1201,  1202,   672,    -1,  1345,    -1,
     3361      -1,    -1,    -1,    -1,  1236,    -1,  1238,   683,    -1,    66,
     3362      -1,    -1,    -1,    -1,    -1,    72,    -1,  1224,    -1,    76,
     3363      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3364      87,    -1,    -1,   709,    -1,  1242,   712,    94,    -1,  1271,
     3365      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1279,  1280,  1281,
     3366      -1,    -1,   109,    -1,   111,    -1,    -1,   114,  1290,  1291,
     3367      -1,   118,   119,   120,   121,   122,   123,    -1,  1415,    -1,
     3368      -1,    -1,  1304,   749,    -1,    -1,    -1,    -1,    -1,    -1,
     3369      -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,    -1,
     3370      -1,    -1,  1299,    -1,    -1,    -1,    -1,  1304,    -1,    -1,
     3371      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3372      -1,    -1,    -1,  1345,    -1,    -1,    -1,  1464,    -1,   795,
     3373      -1,    -1,    -1,    -1,  1471,    -1,    -1,    -1,    -1,   805,
     3374    1337,   807,    -1,    -1,    -1,    -1,   812,    -1,    -1,   815,
     3375      -1,    -1,    -1,   819,    -1,    10,    11,    12,    13,    14,
     3376      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3377      25,    26,    27,    28,    -1,    30,    31,    32,    -1,    -1,
     3378      -1,    -1,    67,    -1,    39,    -1,    -1,  1524,    -1,    -1,
     3379      -1,    -1,    77,  1415,    79,    -1,    81,    -1,    -1,    -1,
     3380      -1,    -1,    -1,    88,    -1,    -1,    -1,    -1,    -1,    -1,
     3381      -1,    -1,    67,    -1,    -1,   881,    -1,    72,  1415,    74,
     3382      75,    76,    -1,    78,    -1,    -1,    -1,    -1,    83,    84,
     3383      -1,    -1,    -1,    -1,   119,    -1,   121,   122,   123,    94,
     3384      -1,    -1,  1464,  1440,    -1,   911,    -1,    -1,    -1,  1471,
     3385      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    26,
     3386      27,    28,    -1,   118,   119,    -1,    -1,  1464,    -1,    -1,
     3387      -1,    -1,    37,    38,  1471,    40,    -1,   162,   701,    -1,
     3388     703,    -1,    -1,    -1,    -1,    -1,    -1,   710,   711,    -1,
     3389      -1,    -1,   715,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3390     966,    66,  1524,    50,   727,    -1,    -1,    72,    -1,   732,
     3391      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3392      67,    86,    87,    -1,    -1,    -1,    -1,  1524,    -1,    94,
     3393      -1,    -1,    -1,   100,    -1,   102,    -1,    -1,   223,   762,
     3394     225,   226,   227,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3395      -1,    -1,   117,   118,   119,   120,   121,   122,   123,    -1,
     3396     127,  1027,  1028,    -1,  1030,  1031,    -1,    -1,   115,    -1,
     3397      -1,    -1,   119,    -1,    -1,    -1,   261,    -1,    -1,    -1,
     3398      -1,   266,    -1,    -1,  1050,    -1,    -1,    -1,   284,    -1,
     3399     286,   287,    -1,    -1,    -1,    -1,   281,    -1,   294,   295,
     3400      -1,   148,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3401      -1,   158,   308,   309,    -1,   162,   183,    -1,    -1,  1085,
     3402    1086,    -1,    -1,    -1,   191,    -1,   193,   194,    -1,    -1,
     3403      -1,   198,    -1,   200,   201,    -1,    -1,    -1,    -1,    -1,
     3404     863,   864,   865,   866,   329,   868,    -1,    -1,    -1,    -1,
     3405     346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3406      -1,   884,    -1,    -1,   211,    -1,   351,    -1,    -1,    -1,
     3407      -1,   356,   357,    -1,    -1,   898,   223,    -1,    -1,   364,
     3408      -1,    -1,    -1,    -1,    -1,    -1,   382,    -1,    -1,    -1,
     3409      -1,    -1,    -1,  1159,   241,    -1,    -1,    -1,    -1,    -1,
     3410      -1,    -1,    -1,   270,    -1,    -1,    -1,    -1,    -1,    -1,
     3411      -1,    -1,    -1,    -1,    -1,   938,    -1,    -1,    -1,   266,
     3412      -1,    -1,   407,    -1,    -1,    -1,   273,    -1,    -1,    -1,
     3413      -1,    -1,    -1,    -1,    -1,    -1,  1202,    -1,    -1,    -1,
     3414     425,    -1,    -1,    -1,    -1,   430,    -1,   432,    -1,   296,
     3415      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1224,    -1,
     3416      -1,   308,   985,    -1,   449,    -1,    -1,   452,   453,   992,
     3417    1236,    -1,  1238,    -1,   997,   460,    -1,    -1,    -1,  1002,
     3418      -1,  1004,    -1,    -1,    -1,  1008,    -1,  1010,  1011,   474,
     3419      -1,  1014,    -1,    -1,    -1,    -1,   481,    -1,    -1,   346,
     3420    1023,    -1,    -1,    -1,   351,  1271,    -1,    -1,    -1,    -1,
     3421      -1,    -1,    -1,  1279,  1280,  1281,    -1,    -1,  1041,  1042,
     3422      -1,    -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,
     3423      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1304,    -1,
     3424      -1,    -1,    -1,    -1,    -1,  1068,    -1,    -1,  1071,    -1,
     3425      -1,    -1,    -1,    -1,   550,   551,   552,   553,   554,   555,
     3426     556,   557,   558,   559,   560,   561,   562,   563,   564,   565,
     3427     566,   567,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1345,
     3428     427,   428,    -1,    -1,    -1,    -1,    -1,   434,    -1,    -1,
     3429      -1,  1114,    -1,    -1,    -1,    -1,    -1,  1120,  1121,    -1,
     3430      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   455,  1132,
     3431     595,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1142,
     3432      -1,    -1,  1145,    -1,  1147,    -1,    -1,  1150,    -1,    -1,
     3433      -1,    -1,    -1,    -1,    -1,    -1,   483,    -1,   623,    -1,
     3434    1163,    -1,    -1,   628,    -1,    -1,    -1,    -1,   495,  1415,
     3435      -1,    -1,    -1,  1176,    -1,  1178,  1179,  1180,  1181,    -1,
     3436     507,    -1,   509,    -1,    -1,   512,    -1,   514,   515,    -1,
     3437      -1,  1194,    -1,  1196,    -1,    -1,    -1,  1200,    -1,    -1,
     3438     527,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3439      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1464,    -1,
     3440      -1,   697,    -1,    -1,    -1,  1471,  1229,  1230,   575,   576,
     3441      -1,    -1,    -1,    -1,    -1,   700,    -1,    -1,    -1,    -1,
     3442      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   714,
     3443      -1,    -1,   579,    -1,    -1,    -1,    -1,   604,    -1,    -1,
     3444     607,   608,    -1,   610,   591,   612,   613,    -1,   595,   734,
     3445     617,   618,    -1,    -1,    -1,    -1,    -1,    -1,  1524,  1282,
     3446    1283,    -1,    -1,    -1,   760,    -1,    -1,    -1,    -1,  1292,
     3447      -1,    -1,    -1,    -1,   621,    -1,    -1,    -1,    -1,   626,
     3448      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   635,   636,
     3449     637,    -1,    -1,    -1,    -1,    -1,   792,    -1,    -1,     7,
     3450      -1,    -1,    10,    11,    12,    13,    14,   654,    -1,    -1,
     3451      -1,    -1,    -1,    -1,   799,    -1,    -1,    -1,    -1,    -1,
     3452    1343,    -1,    45,    -1,    -1,    -1,   811,    -1,    -1,    37,
     3453      38,    39,    40,  1356,    -1,  1358,  1359,  1360,    -1,   686,
     3454      -1,    -1,    -1,    -1,    -1,   830,    -1,  1370,    -1,    -1,
     3455      -1,    -1,    -1,    -1,    -1,    -1,  1379,    -1,    66,    67,
     3456      -1,    -1,    -1,    -1,    72,   712,    -1,   714,    76,    -1,
     3457      93,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3458     103,    -1,    -1,  1406,    -1,    -1,    94,    -1,    -1,    -1,
     3459      -1,   758,   759,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3460      -1,   109,   749,   111,    -1,    -1,    -1,    -1,    -1,    -1,
     3461     118,   119,   120,   121,   122,   123,    -1,   913,    -1,    -1,
     3462      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1451,  1452,
     3463      -1,    -1,    -1,    -1,    -1,    -1,   159,    -1,    -1,    -1,
     3464      -1,  1464,    -1,    -1,    -1,    -1,    -1,    -1,  1471,    -1,
     3465     173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   944,
     3466     807,    -1,   958,    -1,   811,    -1,    -1,    -1,   815,    -1,
     3467      -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,    -1,    -1,
     3468      -1,  1504,    -1,    -1,    -1,  1508,    -1,   210,    -1,    -1,
     3469      -1,   976,    -1,    -1,    -1,    -1,   219,    -1,    -1,    -1,
     3470     996,    -1,    -1,    -1,    -1,    -1,   229,    -1,    -1,    -1,
     3471      -1,    -1,    -1,  1009,  1537,    -1,  1539,    -1,    -1,    -1,
     3472      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1012,    -1,    -1,
     3473      -1,   254,    -1,    -1,    -1,    -1,   259,    -1,  1023,    -1,
     3474      -1,    -1,    -1,    -1,  1567,  1568,    -1,    -1,    -1,   272,
     3475      -1,   918,  1575,  1576,  1050,   278,   923,   280,    -1,    -1,
     3476      -1,    -1,    -1,    -1,   911,    -1,    -1,    -1,    -1,    -1,
     3477      -1,    -1,    -1,    -1,   297,    -1,    -1,    -1,    -1,   926,
     3478      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3479      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
     3480      -1,    -1,    -1,   950,    -1,    -1,    -1,    -1,    -1,    -1,
     3481    1095,    -1,    -1,    -1,    -1,    -1,   339,    -1,    -1,   966,
     3482      -1,   344,    -1,    66,  1109,    -1,    -1,    -1,    -1,    72,
     3483      -1,  1127,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     3484      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3485     373,    94,    -1,    -1,   377,   378,    -1,   380,    -1,    -1,
     3486      -1,    -1,  1009,    -1,   387,   388,   109,   390,   391,    -1,
     3487     393,    -1,   395,    -1,    -1,   118,   119,   120,   121,   122,
     3488     123,    -1,    -1,  1030,  1031,    -1,    -1,    -1,    -1,   412,
     3489      -1,    -1,    -1,    -1,  1190,  1191,    -1,   420,    -1,    -1,
     3490      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3491      -1,    -1,    -1,    -1,    -1,    -1,  1201,    -1,    -1,    -1,
     3492    1087,    -1,   445,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3493      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3494      -1,    -1,    -1,  1090,    -1,    -1,    -1,    -1,   471,    -1,
     3495      -1,    -1,    -1,    -1,   477,    -1,    -1,     0,    -1,   482,
     3496       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3497      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3498      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3499      33,    -1,    -1,    36,    -1,   518,    39,    40,    -1,    -1,
     3500      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3501     533,    -1,  1159,    -1,  1299,    -1,    -1,    -1,    -1,    -1,
     3502      -1,    64,    -1,    -1,    67,    -1,    69,    -1,    71,    72,
     3503      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
     3504      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,   571,    -1,
     3505      -1,    94,  1219,    -1,  1201,    -1,    -1,   580,    -1,   157,
     3506     158,    -1,    -1,    -1,   587,    -1,   109,    -1,   111,    -1,
     3507     593,    -1,    -1,    -1,    -1,   118,   119,    -1,    -1,   602,
     3508      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3509      -1,  1238,    -1,   191,    -1,    -1,    -1,    -1,    -1,    -1,
     3510     198,    -1,    -1,    -1,    -1,  1401,    -1,    -1,    -1,    -1,
     3511      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3512     643,    -1,    -1,  1419,    -1,    -1,    -1,    -1,    -1,    -1,
     3513      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
     3514      -1,    -1,    -1,  1290,  1291,    -1,    -1,    -1,    -1,    -1,
     3515      -1,    -1,  1299,    -1,    -1,    -1,   679,    -1,    -1,    -1,
     3516      66,    -1,    -1,    -1,   687,    -1,    72,    -1,    -1,    -1,
     3517      76,    -1,   270,    79,    80,    81,    82,    83,    84,    -1,
     3518      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     3519      -1,    -1,    -1,    -1,    -1,   718,  1492,  1493,    -1,    -1,
     3520      -1,    -1,    -1,   109,    -1,   728,   729,    -1,    -1,    -1,
     3521      -1,    -1,   118,   119,   120,   121,   122,   123,    -1,   742,
     3522      -1,    -1,    -1,    -1,    -1,    -1,   324,    -1,    -1,    -1,
     3523      -1,    -1,    -1,    -1,   332,   333,    -1,   335,   336,    -1,
     3524     763,    -1,   765,    -1,    -1,    -1,   769,    -1,   346,    -1,
     3525      -1,    -1,   350,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3526      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1415,    -1,
     3527    1555,   369,    -1,    -1,   372,    10,    11,    12,    13,    14,
     3528      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3529      25,    26,    27,    28,    -1,    30,    31,    32,    -1,    -1,
     3530      -1,   399,    -1,    -1,    39,   403,    -1,    -1,    -1,    -1,
     3531      -1,   834,    -1,    -1,    -1,    -1,    -1,    -1,   841,    -1,
     3532      -1,    -1,    -1,    -1,    -1,    -1,  1473,    -1,  1475,    -1,
     3533      -1,   854,    67,   856,    -1,    -1,   434,    72,    -1,    74,
     3534      75,    76,    -1,    78,    -1,    -1,    -1,   870,    83,    84,
     3535      -1,    -1,    -1,    -1,   877,    -1,    -1,    -1,    -1,    94,
     3536      -1,    -1,    -1,  1510,   148,  1512,   889,    -1,    -1,   892,
     3537      -1,    -1,    -1,    -1,   158,    -1,   111,    -1,    -1,    -1,
     3538      -1,    -1,   480,   118,   119,   483,   170,   171,    -1,    -1,
     3539      -1,    -1,    -1,  1540,     3,     4,     5,     6,     7,     8,
     3540       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3541      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3542      -1,    30,    31,    32,   522,    -1,    -1,    -1,   526,   527,
     3543      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3544      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   971,    -1,
     3545      -1,    -1,    -1,    -1,    -1,    -1,    -1,   241,    67,    -1,
     3546      69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
     3547      -1,    -1,    -1,   571,   572,    -1,    -1,    -1,    -1,    -1,
     3548      -1,   265,    -1,    -1,  1007,    94,    -1,    -1,    -1,    -1,
     3549      -1,    -1,   590,   591,    -1,    -1,    -1,    -1,    -1,    -1,
     3550      -1,    -1,   111,   601,    -1,   603,   604,    -1,    -1,   118,
     3551     119,    -1,   610,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3552      -1,    -1,   620,   621,    -1,    -1,    -1,    -1,   626,    -1,
     3553      -1,    -1,    -1,    -1,    -1,    -1,    -1,   635,   636,   637,
     3554      -1,    -1,  1065,    -1,    -1,    -1,    -1,    -1,  1071,    -1,
     3555      -1,    -1,    -1,    -1,    -1,    -1,   654,    -1,    -1,    -1,
     3556      -1,   659,   660,    -1,    -1,   663,   664,    -1,    -1,    -1,
     3557      -1,    -1,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3558      -1,    -1,  1105,    -1,    -1,    -1,    -1,  1110,    -1,    -1,
     3559      -1,   689,    -1,    -1,    -1,  1118,    -1,   381,    -1,    -1,
     3560      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3561      -1,    -1,    -1,    -1,   712,   713,    -1,    -1,    -1,    -1,
     3562      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3563      -1,  1154,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3564      -1,    -1,    -1,  1166,    -1,    -1,  1169,    -1,  1171,    -1,
     3565     748,   749,    -1,    -1,    -1,   753,   754,    -1,    -1,    -1,
     3566      -1,    -1,  1185,  1186,    -1,    -1,    -1,    -1,    -1,    -1,
     3567      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3568      -1,    -1,    -1,    -1,  1207,    -1,    -1,    -1,    -1,    -1,
     3569      -1,   475,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
     3570      -1,   799,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   807,
     3571      -1,    -1,    -1,    -1,    -1,    -1,   814,   815,    -1,    -1,
     3572     818,    66,   820,    -1,    -1,    -1,    -1,    72,    -1,    -1,
     3573     514,    76,   830,  1256,    79,    80,    81,    82,    83,    84,
     3574      -1,    86,    87,   527,    -1,    -1,    -1,    -1,   532,    94,
     3575      -1,   535,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3576      -1,    -1,   546,   547,   109,    -1,   111,    -1,    -1,    -1,
     3577      -1,   116,    -1,   118,   119,   120,   121,   122,   123,    -1,
     3578      -1,    -1,    -1,    -1,    -1,   569,    -1,    -1,    -1,    -1,
     3579      -1,    -1,    -1,    -1,    -1,   579,    -1,    -1,    -1,    -1,
     3580      -1,    -1,   586,    -1,    -1,   903,    -1,   591,    -1,  1332,
     3581      -1,  1334,   910,   911,   912,    -1,   914,    -1,    -1,    -1,
     3582     918,    -1,    -1,    -1,    -1,  1348,    -1,  1350,    -1,    -1,
     3583      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3584      -1,   939,   940,    -1,    -1,  1368,    -1,    -1,    -1,    -1,
     3585      -1,    -1,    -1,    -1,    -1,    -1,   640,    -1,    -1,    -1,
     3586      -1,  1384,  1385,    -1,    -1,   649,    -1,    -1,   966,    -1,
     3587      -1,    -1,  1395,    -1,    -1,  1398,    -1,    -1,   976,    10,
    24363588      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2437       21,    22,    23,    24,  -285,     0,    25,    26,    27,    28,
    2438        0,     0,    29,     0,    30,     0,     0,     0,     0,     0,
    2439        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2440        0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2441        0,    35,     0,     0,    37,    38,     0,     0,  -285,     1,
    2442        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
     3589      21,    22,    23,    24,    25,    26,    27,    28,  1421,    -1,
     3590     998,   999,    -1,    -1,    -1,    -1,    -1,  1430,    39,    -1,
     3591    1433,  1009,  1435,  1436,  1437,    -1,    -1,  1015,  1016,    -1,
     3592    1018,  1019,  1020,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3593      -1,    -1,  1030,  1031,    -1,    -1,    67,    -1,    -1,    -1,
     3594      -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,    -1,
     3595      -1,    -1,    -1,    -1,  1477,    -1,  1479,    -1,  1481,    -1,
     3596      -1,    -1,    -1,    -1,    -1,   749,    -1,   751,    -1,    -1,
     3597      -1,    -1,    -1,    -1,  1497,    -1,    -1,   761,    -1,    -1,
     3598      -1,    -1,    -1,    -1,   768,    -1,    -1,    -1,    -1,    -1,
     3599      -1,    -1,    -1,    -1,    -1,  1093,    -1,  1095,    -1,    -1,
     3600      -1,    -1,  1100,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3601      -1,  1109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     7,
     3602      -1,    -1,    10,    11,    12,    13,    14,   811,   812,    -1,
     3603      -1,   815,    -1,    -1,    -1,    -1,  1134,  1135,  1136,    -1,
     3604      -1,    -1,    -1,    -1,    -1,   829,    -1,    -1,    -1,    37,
     3605      38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3606      -1,  1159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3607      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,
     3608      -1,    -1,    -1,    -1,    72,   869,    -1,    -1,    76,   873,
     3609      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
     3610      -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
     3611      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3612      -1,   109,  1220,   111,    -1,    -1,    -1,   911,    -1,    -1,
     3613     118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
     3614    1238,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3615      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3616      23,    24,    25,    26,    27,    -1,   950,    30,    31,    32,
     3617      -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
     3618      -1,    -1,   966,   967,    -1,    -1,    -1,    -1,    -1,    -1,
     3619      -1,    -1,  1290,  1291,    -1,    -1,   980,    -1,    -1,    -1,
     3620      -1,    -1,   986,    66,    67,   989,    69,   991,    71,    72,
     3621      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     3622      83,    84,    -1,    86,    87,    -1,    -1,    -1,  1012,    -1,
     3623      -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1023,
     3624      -1,    37,    38,    -1,    40,    -1,   109,    -1,   111,    -1,
     3625      -1,    -1,    -1,   116,    -1,   118,   119,   120,   121,   122,
     3626     123,  1045,    -1,  1047,    -1,    -1,    -1,    -1,    -1,    -1,
     3627      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,  1062,  1063,
     3628      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     3629      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,  1083,
     3630      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3631      -1,    -1,    -1,   109,    -1,   111,    -1,  1415,   114,    -1,
     3632      -1,    -1,   118,   119,   120,   121,   122,   123,    -1,    -1,
     3633      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    24433634      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2444       22,    23,    24,     0,     0,    25,    26,    27,    28,     0,
    2445       43,    29,     0,    30,     0,     0,     0,     0,   109,     0,
    2446        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2447        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2448       35,     0,     0,    37,    38,     2,   202,     4,     5,     6,
    2449        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2450       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2451       25,    26,    27,     0,     0,     0,     0,     0,    30,    43,
    2452        0,     0,     0,     0,     0,     0,     0,   109,     0,     0,
    2453        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2454        0,    33,     0,    34,     0,    35,    36,     0,   203,    38,
    2455       39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
    2456        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2457        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2458        0,     0,    42,     0,   204,     0,     0,     0,     0,     0,
    2459        0,     0,   205,     2,   202,     4,     5,     6,     7,     8,
    2460        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2461       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2462       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2463        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2464        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2465        0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
    2466        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    2467       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2468       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2469        0,  -390,   679,    30,     0,     0,     0,     0,     0,     0,
    2470      627,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2471        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2472       35,     0,     0,    37,    38,     0,     0,     0,     0,     0,
    2473        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2474        0,     0,     0,     0,     0,  1348,     0,     0,     0,     0,
    2475        0,     0,     0,     0,     0,     0,     0,     0,     0,   679,
    2476        0,     0,     0,     0,     0,     0,     0,   627,     2,   202,
     3635      22,    23,    24,    25,    26,    27,  1140,    -1,    30,    31,
     3636      32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,    -1,
     3637      -1,    -1,    -1,    -1,    -1,  1159,    -1,    -1,    -1,    -1,
     3638      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
     3639    1174,  1175,    64,    -1,    -1,    67,    -1,    69,    -1,    71,
     3640      72,    -1,    74,    75,    76,    -1,    -1,  1505,    -1,    -1,
     3641      66,    83,    84,    -1,    -1,    -1,    72,    -1,    -1,    -1,
     3642      76,    -1,    94,    79,    80,    81,    82,    83,    84,    -1,
     3643      86,    87,  1530,  1531,    -1,    -1,    -1,   109,    94,   111,
     3644      -1,    -1,    -1,   115,    -1,    -1,   118,   119,    -1,    -1,
     3645      -1,    -1,    -1,   109,    -1,   111,    -1,  1555,    -1,    -1,
     3646      -1,    -1,   118,   119,   120,   121,   122,   123,    -1,    -1,
     3647    1254,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
     3648      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3649      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3650      31,    32,    33,    -1,    -1,    36,    37,    38,    39,    40,
     3651      41,    -1,    43,    -1,    -1,    46,    47,    48,    49,    50,
     3652      51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,
     3653      61,    62,    -1,    64,  1318,    66,    67,  1321,    69,    -1,
     3654      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3655      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3656      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
     3657      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3658     111,    -1,    -1,   114,    -1,    -1,    -1,   118,   119,   120,
     3659     121,   122,   123,    -1,    -1,    -1,    -1,   128,    -1,    -1,
     3660      -1,   132,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3661      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3662      -1,  1405,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
     3663       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3664      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3665      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
     3666      -1,    36,    37,    38,    39,    40,    10,    11,    12,    13,
     3667      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3668      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3669      -1,    66,    67,    -1,    69,    39,    71,    72,    -1,    74,
     3670      75,    76,    -1,  1487,    79,    80,    81,    82,    83,    84,
     3671      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3672      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,
     3673      74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,    83,
     3674      84,    -1,    -1,   118,   119,   120,   121,   122,   123,    -1,
     3675      -1,    -1,    -1,    -1,    -1,    -1,  1540,   132,     3,     4,
     3676       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3677      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3678      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
     3679      -1,    36,    37,    38,    39,    40,    -1,    -1,    -1,    10,
     3680      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3681      21,    22,    23,    24,    25,    26,    27,    28,    -1,    -1,
     3682      -1,    66,    67,    -1,    69,    -1,    71,    72,    39,    74,
     3683      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3684      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3685      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
     3686      -1,    -1,    -1,    -1,   109,    -1,   111,    78,    -1,    -1,
     3687      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     4,
     3688       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3689      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3690      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3691      -1,    -1,    37,    38,    39,    40,    10,    11,    12,    13,
     3692      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3693      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3694      -1,    66,    67,    -1,    69,    39,    71,    72,    -1,    74,
     3695      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3696      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3697      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
     3698      74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3699      -1,   116,    -1,   118,   119,   120,   121,   122,   123,     4,
     3700       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3701      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3702      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3703      -1,    -1,    37,    38,    39,    40,    10,    11,    12,    13,
     3704      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3705      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     3706      -1,    66,    67,    -1,    69,    39,    71,    72,    -1,    74,
     3707      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3708      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3709      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
     3710      74,    75,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3711      -1,   116,    -1,   118,   119,   120,   121,   122,   123,     4,
     3712       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3713      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3714      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3715      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3716      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3717      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3718      -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3719      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3720      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3721      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3722      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3723      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     4,
     3724       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3725      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3726      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3727      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3728      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3729      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3730      -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3731      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3732      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3733      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3734      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3735      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     4,
     3736       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3737      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3738      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3739      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3740      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3741      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3742      -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3743      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3744      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3745      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3746      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3747      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     4,
     3748       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3749      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3750      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3751      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3752      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3753      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3754      -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,    74,
     3755      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3756      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3757      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3758      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
     3759      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,     3,
    24773760       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    24783761      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2479       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2480        0,    30,     8,     9,    10,    11,    12,    13,    14,    15,
    2481       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2482        0,    25,    26,    27,    33,     0,    34,     0,    35,    30,
    2483        0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
    2484        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2485        0,     0,    33,  1350,     0,     0,     0,   108,     0,    37,
    2486       38,     0,     0,     0,     0,     0,     0,   679,     0,     0,
    2487        0,     0,     0,     0,     0,   627,     2,   202,     4,     5,
    2488        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2489       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2490        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2491        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2492        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2493        0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2494       38,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     3762      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
     3763      -1,    -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,
     3764      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3765      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3766      64,    -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,
     3767      74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
     3768      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3769      94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3770      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
     3771      -1,    -1,    -1,    -1,   118,   119,     3,     4,     5,     6,
     3772       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3773      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3774      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3775      -1,    -1,    39,    -1,    10,    11,    12,    13,    14,    15,
     3776      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3777      26,    27,    -1,    -1,    30,    31,    32,    33,    34,    35,
     3778      67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
     3779      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
     3780      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     3781      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     3782      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3783      -1,   118,   119,     3,     4,     5,     6,     7,     8,     9,
     3784      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3785      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
     3786      30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,
     3787      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3788      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3789      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     3790      -1,    71,    -1,    -1,    74,    75,    -1,    -1,    78,    -1,
     3791      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3792      -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,
     3793      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3794      -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,
     3795       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3796      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3797      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3798      33,    -1,    -1,    36,    -1,    -1,    39,    -1,    -1,    -1,
     3799      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3800      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3801      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
     3802      -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3803      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3804      -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3805      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3806      -1,    -1,    -1,    -1,    -1,   118,   119,     4,     5,     6,
     3807       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3808      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3809      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3810      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3811      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3812      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3813      67,    -1,    69,    -1,    71,    72,    -1,    74,    75,    76,
     3814      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
     3815      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     3816      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3817      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3818      -1,   118,   119,     4,     5,     6,     7,     8,     9,    10,
    24953819      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2496       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2497        0,     0,     0,     0,    30,   679,     0,     0,     0,     0,
    2498        0,     0,     0,   627,     0,     0,     0,     0,     0,     0,
    2499        0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2500        0,    35,     0,     0,    37,    38,     2,   202,     4,     5,
    2501        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2502       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2503        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2504      592,     0,     0,     0,     0,     0,     0,     0,   627,     0,
    2505        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2506        0,     0,    33,     0,    34,     0,    35,     0,     0,   203,
    2507       38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2508       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2509       25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
    2510        0,     0,     0,     0,     0,   204,     0,     0,     0,     0,
    2511        0,     0,     0,   267,     0,     0,     0,     0,     0,     0,
    2512      280,    33,     0,     0,     0,     0,   281,     0,    37,    38,
    2513      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2514      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    2515        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2516        0,     0,   290,     0,   519,     0,     0,   167,     0,     0,
    2517        0,   292,   293,   294,   295,   296,   297,     8,     9,    10,
    2518       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2519       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2520        0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
    2521        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2522        0,     0,     0,     0,     0,     0,   280,    33,     0,     0,
    2523        0,     0,   281,     0,    37,    38,   282,     0,     0,   283,
    2524      284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
    2525        0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
    2526        0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
    2527      592,    -3,     0,     0,     0,     0,     0,   292,   593,   294,
    2528      295,   296,   297,     8,     9,    10,    11,    12,    13,    14,
    2529       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2530        0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
    2531       30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
    2532        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2533        0,     0,   280,    33,     0,     0,     0,     0,   642,     0,
    2534       37,    38,   282,     0,     0,   283,   284,   285,   286,    40,
    2535       41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
    2536      289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2537        0,     0,     0,     0,   290,   -33,   757,     0,     0,     0,
    2538        0,     0,     0,   292,   293,   294,   295,   296,   297,     8,
    2539        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2540       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2541       27,     0,     0,     0,     0,   278,    30,   279,     0,     0,
    2542        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2543        0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
    2544        0,     0,     0,     0,   281,     0,    37,    38,   282,     0,
    2545        0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
    2546        0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
    2547        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2548      290,     0,   291,     0,     0,     0,     0,     0,     0,   292,
    2549      293,   294,   295,   296,   297,     8,     9,    10,    11,    12,
    2550       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2551       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2552        0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
    2553        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2554        0,     0,     0,     0,   280,    33,     0,     0,     0,     0,
    2555      281,     0,    37,    38,   282,     0,     0,   283,   284,   285,
    2556      286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
    2557        0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
    2558        0,     0,     0,     0,     0,     0,   290,     0,   154,     0,
    2559        0,     0,     0,     0,     0,   292,   293,   294,   295,   296,
    2560      297,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2561       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2562       25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
    2563        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2564        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2565      280,    33,     0,     0,     0,     0,   281,     0,    37,    38,
    2566      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2567      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    2568        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2569        0,     0,   290,     0,   592,     0,     0,     0,     0,     0,
    2570        0,   292,   593,   294,   295,   296,   297,     8,     9,    10,
    2571       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2572       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2573        0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
    2574        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2575        0,     0,     0,     0,     0,     0,   280,    33,     0,     0,
    2576        0,     0,   281,     0,    37,    38,   282,     0,     0,   283,
    2577      284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
    2578        0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
    2579        0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
    2580      374,     0,     0,     0,     0,     0,     0,   292,   376,   294,
    2581      295,   296,   297,     8,     9,    10,    11,    12,    13,    14,
    2582       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2583     -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2584       30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2585        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2586        0,     0,     0,    33,     0,     0,     0,     0,    36,     0,
    2587      332,   333,    39,     0,  -285,     0,     0,     0,     0,    40,
    2588       41,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2589       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2590       25,    26,    27,     0,   636,     0,   334,     0,    30,     0,
    2591        0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
    2592        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2593        0,    33,     0,     0,     0,     0,    36,     0,    37,    38,
    2594       39,     0,     0,     0,     0,     0,     0,    40,    41,     8,
    2595        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2596       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2597       27,     0,    42,     0,   154,     0,    30,     0,     0,     0,
    2598        0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
    2599        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2600        0,     0,     0,     0,    36,     0,    37,    38,    39,     0,
    2601        0,     0,     0,     0,     0,    40,    41,     8,     9,    10,
    2602       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2603       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2604       42,     0,    43,     0,    30,     0,     0,     0,     0,     0,
    2605       44,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2606        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2607        0,     0,    36,     0,   203,    38,    39,     0,     0,     0,
    2608        0,     0,     0,    40,    41,     8,     9,    10,    11,    12,
    2609       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2610       23,    24,     0,     0,    25,    26,    27,     0,    42,     0,
    2611      266,     0,    30,     0,     0,     0,     0,     0,   205,     0,
    2612        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2613        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2614       36,     0,   332,   333,    39,     0,     0,     0,     0,     0,
    2615        0,    40,    41,     8,     9,    10,    11,    12,    13,    14,
    2616       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2617        0,     0,    25,    26,    27,     0,   636,     0,   334,     0,
    2618       30,     0,     0,     0,     0,     0,   627,     0,     0,     0,
    2619        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2620        0,     0,     0,    33,     0,     0,     0,     0,    36,     0,
    2621      332,   333,    39,     0,     0,     0,     0,     0,     0,    40,
    2622       41,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2623       17,    18,    19,    20,    21,    22,    23,    24,  -285,     0,
    2624       25,    26,    27,     0,     0,     0,   334,     0,    30,     0,
    2625        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2626        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2627        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2628        0,     0,  -285,     8,     9,    10,    11,    12,    13,    14,
    2629       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2630     -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2631       30,     0,   636,     0,   334,     0,     0,     0,     0,     0,
    2632        0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
    2633        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2634       37,    38,     0,     0,  -285,     8,     9,    10,    11,    12,
    2635       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2636       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2637        0,     0,    30,   448,   636,     0,   334,     0,     0,     0,
    2638        0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
    2639        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2640        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    2641       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2642       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2643        0,    30,   448,     0,     0,     0,     0,     0,   449,     0,
    2644        0,     0,   703,     0,     0,     0,   109,     0,     0,     0,
    2645        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2646        0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    2647       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2648     -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2649       30,     0,     0,     0,     0,     0,     0,   449,     0,     0,
    2650        0,   937,     0,     0,     0,   109,     0,     0,     0,     0,
    2651        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2652       37,    38,     0,     0,  -285,     8,     9,    10,    11,    12,
    2653       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2654       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2655        0,     0,    30,   448,     0,     0,   334,     0,     0,     0,
    2656        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2657        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2658        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    2659       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2660       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2661        0,    30,     0,     0,     0,     0,     0,     0,   449,     0,
    2662        0,     0,  1219,     0,     0,     0,   109,     0,     0,     0,
    2663        0,     0,     0,     0,    33,     0,     0,     0,     0,   108,
    2664        0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    2665       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2666        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2667       30,   448,     0,     0,     0,     0,     0,    43,     0,     0,
    2668        0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
    2669        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2670       37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
    2671       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2672        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2673        0,     0,     0,     0,     0,     0,   449,     0,     0,     0,
    2674        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2675        0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    2676       38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2677       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2678       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2679        0,     0,     0,   636,     0,   334,     0,     0,     0,     0,
    2680        0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
    2681        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2682        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2683       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2684       26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
    2685        0,     0,   636,     0,   334,     0,     0,     0,     0,     0,
    2686        0,     0,   627,     0,     0,     0,     0,     0,     0,     0,
    2687       33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
    2688        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2689       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2690       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2691        0,     0,     0,   253,     0,     0,     0,     0,     0,     0,
    2692        0,   109,     0,     0,     0,     0,     0,     0,     0,    33,
    2693        0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
    2694       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2695       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2696        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2697        0,     0,   154,     0,     0,     0,     0,     0,     0,     0,
    2698      109,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2699        0,     0,     0,     0,     0,   203,    38,     8,     9,    10,
    2700       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2701       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2702        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2703        0,   266,     0,     0,     0,     0,     0,     0,     0,   267,
    2704        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2705        0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
    2706       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2707       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2708        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
    2709      253,     0,     0,     0,     0,     0,     0,     0,   627,     0,
    2710        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2711        0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
    2712       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2713       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2714        0,     0,    30,     0,     0,     0,     0,     0,     0,   334,
    2715        0,     0,     0,     0,     0,     0,     0,   627,     0,     0,
    2716        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2717        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    2718       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2719       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2720        0,    30,     0,     0,     0,     0,     0,     0,   449,     0,
    2721        0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
    2722        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2723        0,   203,    38,     8,     9,    10,    11,    12,    13,    14,
    2724       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2725        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2726       30,     0,     0,     0,     0,     0,     0,   266,     0,     0,
    2727        0,     0,     0,     0,     0,   622,     0,     0,     0,     0,
    2728        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2729       37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
    2730       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2731        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2732        0,     0,     0,     0,     0,     0,   592,     0,     0,     0,
    2733        0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
    2734        0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    2735       38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2736       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2737       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2738        0,     0,     0,     0,     0,   334,     0,     0,     0,     0,
    2739        0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
    2740        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2741        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    2742       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2743       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2744        0,     0,     0,    30,    43,     0,     0,     0,     0,     0,
    2745        0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
    2746        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2747       35,     0,     0,    37,    38,     0,   278,     0,   279,  1051,
    2748        0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,  1058,
    2749     1059,  1060,  1507,  1061,     0,     0,  1062,    32,     0,   280,
    2750        0,     0,     0,     0,     0,   642,     0,     0,  -403,   282,
    2751        0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
    2752      288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
    2753        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2754        0,   290,     0,   374,     0,     0,   167,     0,     0,     0,
    2755      292,   376,   294,   295,   296,   297,     0,   278,     0,   279,
    2756     1051,     0,  1052,     0,  -126,  1053,  1054,  1055,  1056,  1057,
    2757     1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
    2758      280,     0,     0,     0,     0,     0,   642,     0,     0,     0,
    2759      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2760      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    2761        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2762        0,     0,   290,     0,   374,     0,     0,   167,     0,     0,
    2763        0,   292,   376,   294,   295,   296,   297,     0,     0,     0,
    2764        0,     0,     0,     0,     0,  -126,     2,   202,     4,     5,
    2765        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2766       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2767        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2768        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2769       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2770       26,    27,    33,     0,    34,     0,    35,    30,     0,    37,
    2771       38,     0,   278,     0,   279,  1051,     0,  1052,  1394,  1395,
    2772     1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,  1507,  1061,
    2773       33,  1307,  1062,    32,     0,   280,     0,    37,    38,     0,
    2774        0,   642,     0,     0,     0,   282,     0,     0,   283,   284,
    2775      285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
    2776        0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
    2777        0,     0,     0,     0,     0,     0,     0,   290,     0,   374,
    2778        0,     0,   167,     0,     0,     0,   292,   376,   294,   295,
    2779      296,   297,   278,     0,   279,  1051,     0,  1052,  1394,  1395,
    2780     1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,     0,  1061,
    2781        0,     0,  1062,    32,     0,   280,     0,     0,     0,     0,
    2782        0,   642,     0,     0,     0,   282,     0,     0,   283,   284,
    2783      285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
    2784        0,     0,     0,   289,     0,     0,     0,     0,     0,   278,
    2785        0,   279,     0,     0,     0,     0,     0,   290,     0,   374,
    2786        0,     0,   167,     0,     0,     0,   292,   376,   294,   295,
    2787      296,   297,   280,     0,     0,     0,     0,     0,   281,     0,
    2788        0,     0,   282,     0,     0,   283,   284,   285,   286,    40,
    2789       41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
    2790      289,     0,     0,     0,     0,     0,   278,     0,   279,     0,
    2791        0,     0,     0,     0,   290,     0,   374,     0,     0,     0,
    2792        0,     0,   802,   292,   376,   294,   295,   296,   297,   280,
    2793        0,     0,     0,     0,     0,   281,     0,     0,     0,   282,
    2794        0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
    2795      288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
    2796        0,     0,     0,   278,     0,   279,     0,     0,     0,     0,
    2797        0,   290,     0,   374,     0,     0,   982,     0,     0,     0,
    2798      292,   376,   294,   295,   296,   297,   280,     0,     0,     0,
    2799        0,     0,   281,     0,     0,     0,   282,     0,     0,   283,
    2800      284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
    2801        0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
    2802      278,     0,   279,     0,     0,     0,     0,     0,   290,     0,
    2803      374,     0,     0,     0,     0,     0,     0,   292,   376,   294,
    2804      295,   296,   297,   280,     0,     0,     0,     0,     0,   281,
    2805        0,     0,     0,   282,     0,     0,   283,   284,   285,   286,
    2806       40,    41,     0,   287,   288,     0,     0,     0,     0,     0,
    2807        0,   289,     0,     0,     0,     0,     0,   278,     0,   279,
    2808        0,     0,     0,     0,     0,   290,     0,   374,     0,     0,
    2809        0,     0,     0,     0,   292,   726,   294,   295,   296,   297,
    2810      280,     0,     0,     0,     0,     0,   642,     0,     0,     0,
    2811      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2812      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    2813        0,     0,     0,     0,   278,     0,   279,     0,     0,     0,
    2814        0,     0,   290,     0,   776,     0,     0,     0,     0,     0,
    2815        0,   292,   376,   294,   295,   296,   297,   280,     0,     0,
    2816        0,     0,     0,   281,     0,     0,     0,   282,     0,     0,
    2817      283,   284,   285,   286,    40,    41,     0,   287,   288,     0,
    2818        0,     0,     0,     0,     0,   289,     0,     0,     0,     0,
    2819        0,   278,     0,   279,     0,     0,     0,     0,     0,   290,
    2820        0,   374,     0,     0,     0,     0,     0,     0,   292,   817,
    2821      294,   295,   296,   297,   280,     0,     0,     0,     0,     0,
    2822      281,     0,     0,     0,   282,     0,     0,   283,   284,   285,
    2823      286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
    2824        0,     0,   289,     0,     0,     0,     0,     0,   278,     0,
    2825      279,     0,     0,     0,     0,     0,   508,     0,     0,     0,
    2826        0,     0,     0,     0,     0,   292,   376,   294,   295,   296,
    2827      297,   280,     0,     0,     0,     0,     0,   281,     0,     0,
    2828        0,   282,     0,     0,   283,   284,   285,   286,    40,    41,
    2829        0,   287,   288,     0,     0,     0,     0,     0,     0,   289,
    2830        0,     0,     0,     0,     0,   278,     0,   279,     0,     0,
    2831        0,     0,     0,   290,     0,     0,     0,     0,     0,     0,
    2832        0,     0,   292,   376,   294,   295,   296,   297,   280,     0,
    2833        0,     0,     0,     0,   281,     0,     0,     0,   282,     0,
    2834        0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
    2835        0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
    2836        0,     0,   278,     0,   279,     0,     0,     0,     0,     0,
    2837      512,     0,     0,     0,     0,     0,     0,     0,     0,   292,
    2838      376,   294,   295,   296,   297,   280,     0,     0,     0,     0,
    2839        0,   281,     0,     0,     0,   282,     0,     0,   283,   284,
    2840      285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
    2841        0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
    2842        0,     0,     0,     0,     0,     0,     0,   515,     0,     0,
    2843        0,     0,     0,     0,     0,     0,   292,   376,   294,   295,
    2844      296,   297,     2,   202,     4,     5,     6,     7,     8,     9,
    2845       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2846       20,    21,    22,    23,    24,     0,     0,     0,     0,     0,
    2847        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2848        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2849        0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2850       34,     0,    35,    36,     0,   170,   171,    39,     0,     0,
    2851        0,     0,     0,     0,    40,    41,   201,     2,   202,     4,
     3820      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3821      31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
     3822      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3823      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3824      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
     3825      71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
     3826      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3827      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
     3828      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
     3829     111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,     4,
    28523830       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    28533831      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2854        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2855       30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2856        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2857        0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
    2858      203,    38,   469,     2,   202,     4,     5,     6,     7,     8,
     3832      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3833      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
     3834      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3835      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3836      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3837      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3838      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3839      -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3840      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3841      -1,    -1,    -1,   118,   119,     4,     5,     6,     7,     8,
    28593842       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2860       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2861       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2862        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2863        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2864        0,    34,     0,    35,     0,     0,    37,    38,     2,   202,
     3843      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3844      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
     3845      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3846      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3847      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
     3848      69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
     3849      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3850      -1,    -1,    -1,    -1,    -1,    94,    -1,    96,    -1,    -1,
     3851      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3852      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,
     3853     119,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3854      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3855      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3856      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
     3857      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3858      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3859      -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,
     3860      -1,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3861      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3862      -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3863      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
     3864      -1,    -1,    -1,    -1,    -1,   118,   119,     4,     5,     6,
     3865       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3866      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3867      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3868      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3869      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3870      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3871      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
     3872      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3873      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     3874      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3875      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3876      -1,   118,   119,     4,     5,     6,     7,     8,     9,    10,
     3877      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3878      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3879      31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
     3880      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3881      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3882      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
     3883      71,    -1,    -1,    74,    75,    -1,    -1,    -1,    -1,    -1,
     3884      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3885      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
     3886      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3887     111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,     4,
     3888       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3889      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3890      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3891      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
     3892      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3893      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3894      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     3895      75,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3896      19,    20,    21,    22,    23,    24,    25,    26,    27,    94,
     3897      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
     3898      39,    40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
     3899      -1,    -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    -1,
     3900      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
     3901      -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
     3902      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3903      -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,
     3904      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3905     109,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,
     3906     119,   120,   121,   122,   123,    10,    11,    12,    13,    14,
     3907      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3908      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     3909      -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,    -1,
     3910      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3911      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3912      -1,    66,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
     3913      75,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
     3914      -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3915      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3916      -1,    -1,    -1,    -1,   109,   110,   111,    -1,    -1,    -1,
     3917      -1,    -1,    -1,   118,   119,   120,   121,   122,   123,    10,
     3918      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3919      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
     3920      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
     3921      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3922      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3923      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
     3924      -1,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
     3925      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     3926      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
     3927      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     3928     111,    -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,
     3929     121,   122,   123,    10,    11,    12,    13,    14,    15,    16,
     3930      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3931      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3932      37,    38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,
     3933      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3934      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
     3935      67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,
     3936      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
     3937      87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     3938      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3939      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3940      -1,   118,   119,   120,   121,   122,   123,    10,    11,    12,
     3941      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3942      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
     3943      -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
     3944      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3945      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3946      -1,    -1,    -1,    66,    67,    -1,    -1,    -1,    -1,    72,
     3947      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
     3948      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     3949      -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3950      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     3951      -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,   122,
     3952     123,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3953      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3954      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
     3955      39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3956      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3957      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
     3958      -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
     3959      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     3960      -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,
     3961      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3962     109,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,   118,
     3963     119,   120,   121,   122,   123,     3,     4,     5,     6,     7,
     3964       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3965      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
     3966      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
     3967      -1,    39,    -1,    -1,    -1,    10,    11,    12,    13,    14,
     3968      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3969      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
     3970      -1,    69,    -1,    71,    39,    -1,    74,    75,    -1,    -1,
     3971      -1,    -1,    -1,    10,    11,    12,    13,    14,    15,    16,
     3972      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3973      27,    -1,    67,    30,    31,    32,    -1,    72,    -1,    74,
     3974      75,    76,    39,    -1,    -1,    -1,   114,    -1,    83,    84,
     3975      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,
     3976      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3977      67,    -1,    -1,    -1,   109,    72,   111,    74,    75,    76,
     3978      -1,    -1,    -1,   118,   119,    -1,    83,    84,    -1,    -1,
     3979      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     3980      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3981      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3982      -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
     3983      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3984      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3985      -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
     3986      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3987      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3988      67,    -1,    39,    -1,    -1,    72,    -1,    74,    75,    76,
     3989      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
     3990      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     3991      67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,    76,
     3992      -1,    -1,   109,    -1,   111,    -1,    83,    84,    -1,    -1,
     3993      -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     3994      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3995      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     3996      -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
     3997      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3998      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     3999      -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
     4000      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4001      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4002      67,    -1,    39,    -1,    -1,    72,    -1,    74,    75,    76,
     4003      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
     4004      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4005      67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,    -1,
     4006      -1,    -1,    -1,    -1,   111,    -1,    83,    84,    -1,    -1,
     4007      -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4008      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4009      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4010      -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
     4011      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4012      27,    28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4013      -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
     4014      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4015      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4016      67,    -1,    39,    40,    -1,    -1,    -1,    74,    75,    -1,
     4017      -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4018      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4019      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     4020      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4021      -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4022      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4023      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,   115,    -1,
     4024      -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
     4025      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4026      27,    28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4027      -1,    -1,    39,    10,    11,    12,    13,    14,    15,    16,
     4028      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4029      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4030      67,    -1,    39,    40,    -1,    -1,    -1,    74,    75,    -1,
     4031      -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4032      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4033      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
     4034      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
     4035      -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4036      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4037      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,   115,    -1,
     4038      -1,   118,   119,    10,    11,    12,    13,    14,    15,    16,
     4039      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     4040      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4041      -1,    -1,    39,    40,    10,    11,    12,    13,    14,    15,
     4042      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4043      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     4044      67,    -1,    -1,    39,    -1,    -1,    -1,    74,    75,    -1,
     4045      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4046      -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,
     4047      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     4048      -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,   115,    -1,
     4049      -1,   118,   119,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     4050      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4051      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,
     4052      -1,    -1,   118,   119,    10,    11,    12,    13,    14,    15,
     4053      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4054      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     4055      -1,    -1,    -1,    39,    10,    11,    12,    13,    14,    15,
     4056      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4057      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     4058      -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,
     4059      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4060      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     4061      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     4062      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     4063      -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,
     4064      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4065      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     4066      -1,    -1,   118,   119,    10,    11,    12,    13,    14,    15,
     4067      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4068      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     4069      -1,    -1,    -1,    39,    10,    11,    12,    13,    14,    15,
     4070      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4071      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     4072      -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,
     4073      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4074      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     4075      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     4076      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     4077      -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,
     4078      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4079      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     4080      -1,    -1,   118,   119,    10,    11,    12,    13,    14,    15,
     4081      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4082      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     4083      -1,    -1,    -1,    39,    10,    11,    12,    13,    14,    15,
     4084      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4085      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     4086      -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,
     4087      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4088      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     4089      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     4090      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     4091      -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,
     4092      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4093      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     4094      -1,    -1,   118,   119,    10,    11,    12,    13,    14,    15,
     4095      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4096      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     4097      -1,    -1,    -1,    39,    10,    11,    12,    13,    14,    15,
     4098      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     4099      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
     4100      -1,    67,    -1,    39,    -1,    -1,    -1,    -1,    74,    75,
     4101      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4102      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     4103      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
     4104      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
     4105      -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    94,    -1,
     4106      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4107      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4108      -1,    -1,   118,   119,     4,     5,     6,     7,     8,     9,
     4109      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     4110      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     4111      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     4112      -1,    37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,
     4113      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
     4114      56,    57,    -1,    -1,    -1,    61,    62,    67,    64,    69,
     4115      66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,    -1,
     4116      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     4117      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    -1,
     4118      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4119     110,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
     4120      -1,    -1,   118,   119,   120,   121,   122,   123,    -1,    -1,
     4121      -1,    -1,   128,    -1,    37,    38,   132,    40,    41,    -1,
     4122      43,    -1,    -1,    46,    47,    48,    49,    50,    51,    52,
     4123      53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    61,    62,
     4124      -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    -1,    72,
     4125      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
     4126      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
     4127      -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4128      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
     4129      -1,   114,    -1,    -1,    -1,   118,   119,   120,   121,   122,
     4130     123,    -1,    -1,    -1,    -1,   128,    -1,    -1,    -1,   132,
    28654131       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    28664132      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2867       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2868        0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    2869        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2870        0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
    2871        0,   203,    38,     8,     9,    10,    11,    12,    13,    14,
    2872       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2873        0,     0,    25,    26,    27,   487,   488,   489,     0,     0,
    2874       30,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2875       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2876       25,    26,    27,    33,     0,     0,     0,     0,    30,     0,
    2877       37,    38,     0,     0,     0,     0,     0,     0,     0,     0,
    2878        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2879        0,    33,     0,     0,     0,     0,     0,     0,   203,    38
    2880 };
    2881 
    2882 #define yypact_value_is_default(yystate) \
    2883   ((yystate) == (-1318))
    2884 
    2885 #define yytable_value_is_error(yytable_value) \
    2886   YYID (0)
    2887 
    2888 static const yytype_int16 yycheck[] =
    2889 {
    2890        1,    42,     0,    42,     0,   181,    42,   235,   181,   165,
    2891      181,     1,   451,   200,   182,   182,   215,   648,   690,   181,
    2892      181,   484,   181,   181,   275,   602,   344,   113,   103,   751,
    2893      252,   622,   690,    31,   494,    31,   690,    31,   498,   604,
    2894      457,   892,   988,   359,    42,   602,    44,   363,    44,  1317,
    2895        1,   534,   602,   995,  1031,     0,    54,    37,    37,   183,
    2896      602,   604,    60,   602,    60,    63,   450,    63,    66,   605,
    2897       66,   344,    37,   572,   101,   611,    66,   152,    65,    65,
    2898      771,  1398,    65,    49,   715,   261,    31,    75,   261,    42,
    2899      261,  1394,   412,    44,   262,   262,   768,   691,    42,   261,
    2900      261,  1043,   261,   261,   602,    37,   104,  1030,  1031,   107,
    2901      768,   197,   432,   101,   768,   113,    27,    75,    57,   713,
    2902      440,    42,   101,   103,   103,   111,     0,    89,    75,   340,
    2903       42,    43,    37,   257,   258,   101,   101,   124,   103,   523,
    2904      181,   124,   181,  1411,   602,   181,   144,   892,   144,   101,
    2905      102,     0,   103,   115,   152,  1458,   103,    31,   109,   157,
    2906       71,   157,   101,   420,   421,  1482,    42,    43,    65,   101,
    2907     1487,   103,   101,   636,   637,   638,    37,    65,   290,   736,
    2908        0,     1,    31,   181,   182,  1050,   182,  1504,   277,    88,
    2909      412,   654,   143,    65,  1511,   107,    44,   892,    65,   197,
    2910       75,   152,    75,    37,    29,   404,   103,   205,    78,   205,
    2911      432,    31,    11,     0,    63,   103,   214,   490,   440,   217,
    2912      261,   217,   261,   122,   101,   261,   689,   102,   181,   102,
    2913      106,   103,   400,   400,   109,   105,   103,   181,   736,   496,
    2914      101,   104,   103,    63,    31,   108,    66,   248,  1225,   247,
    2915      201,   247,   829,   247,   205,    80,    81,   514,     0,     1,
    2916      181,   109,   337,   261,   262,   728,   262,   101,   104,   103,
    2917      268,   710,   829,   484,   590,   106,   841,   275,   736,   829,
    2918      108,    75,   450,   450,   235,   236,   604,   829,   289,    31,
    2919      829,   366,   492,    73,  1240,   831,   124,  1274,   841,     0,
    2920        1,   764,   247,  1487,   390,  1050,   997,   101,   420,   421,
    2921      809,    73,    42,    43,   482,   482,   267,   633,    75,   270,
    2922     1504,    63,   579,   103,    66,   105,   324,  1511,   324,   109,
    2923       31,   829,   418,   153,    54,    89,  1487,  1059,   424,   290,
    2924      108,   103,   293,   105,     0,   343,   344,   109,   111,   123,
    2925     1273,  1274,   109,   116,   117,   818,   124,   205,  1053,  1210,
    2926     1511,   115,   360,   683,   224,    66,   364,    65,   217,    67,
    2927       68,   829,   949,   247,   968,    31,   106,   104,   252,   101,
    2928      108,   108,   593,   243,   104,   950,   337,   107,   236,   340,
    2929        3,    65,   390,    67,    68,     3,   508,   217,   247,   949,
    2930      512,   123,   400,   515,   400,   103,   606,   949,   359,   108,
    2931      610,   622,   363,  1390,   239,   366,   627,   506,  1009,   267,
    2932      418,    65,  1287,    67,    68,   124,   424,   247,   426,   102,
    2933       67,   631,   106,   108,    71,   635,   109,    74,   102,    76,
    2934     1382,  1383,   290,    65,   108,   293,    83,    69,   108,   124,
    2935      123,   526,   450,     0,    76,    77,   568,   101,   107,   108,
    2936      247,   683,   106,     0,    52,  1210,   102,  1390,   469,   420,
    2937      421,   101,   108,   508,   123,   217,   474,   512,   689,   101,
    2938      515,   103,  1018,  1019,   482,   102,   482,   101,   486,   111,
    2939      486,   108,   490,   649,   214,  1126,   345,   448,   958,   750,
    2940      451,   918,   102,   725,   820,   247,   457,    95,   824,   109,
    2941      993,   108,   123,   514,   690,  1210,   102,   690,   469,   690,
    2942      113,   114,   108,   841,   692,   692,  1120,   124,   690,   690,
    2943      531,   690,   690,   534,   658,   536,   101,  1102,   412,   101,
    2944      108,   486,  1287,   494,   928,   496,   247,   498,   268,   121,
    2945      375,   123,   936,   764,   102,   275,   124,   508,   432,    83,
    2946       84,   512,   108,   514,   515,  1287,   440,  1030,   841,  1434,
    2947      656,   208,   108,   108,   108,   526,  1441,   108,   124,   668,
    2948      107,   102,   583,  1177,  1178,     0,   108,   108,   124,   124,
    2949      124,   247,   590,   124,   118,   119,   252,   981,   914,   101,
    2950      448,   189,   124,   451,   602,  1300,   604,   427,   466,   457,
    2951      484,   101,   486,   688,   637,   638,    31,   108,   104,   101,
    2952     1485,   103,   108,   343,   212,   623,   475,    42,   579,    44,
    2953      455,   654,   101,   124,   222,   460,    44,   486,  1360,   590,
    2954      360,   639,   593,   102,   364,    60,   102,   104,    63,  1088,
    2955      109,    66,   108,   108,   655,   653,   657,   104,   656,  1354,
    2956      508,   108,  1357,   863,   512,   754,   486,   515,   493,   124,
    2957      495,   622,   102,   636,   637,   638,   627,   102,   108,   878,
    2958      102,   954,   633,  1146,    65,   102,    67,    68,   763,  1434,
    2959      102,   654,   690,   104,   692,   102,  1441,   108,  1461,   486,
    2960      899,   109,   290,  1398,  1467,   728,   101,   527,  1403,   102,
    2961      347,   104,   349,    81,    82,   108,  1438,   101,  1440,   103,
    2962      101,  1484,   723,    85,    86,   106,  1489,   111,   884,   144,
    2963      123,   124,   960,  1428,   101,   143,   103,   688,   736,   737,
    2964     1485,   101,   157,   103,   486,     4,     5,     6,     7,     8,
    2965        9,   111,   750,   101,  1118,   955,   412,   102,  1122,   710,
    2966      928,   928,   101,   108,  1486,   728,   181,   182,   936,   936,
    2967      124,   591,   101,  1089,   103,   624,   432,   101,   102,   103,
    2968      102,   102,   111,  1377,   440,   486,   108,   108,   102,   740,
    2969      205,   101,   102,   103,   108,   818,    57,   205,  1009,   436,
    2970     1394,   101,   217,    62,   591,    64,   101,  1502,   103,   683,
    2971     1273,   101,   763,  1508,   672,   689,   636,   637,   638,  1491,
    2972      645,   104,  1517,   102,   108,   109,  1521,   235,   124,   108,
    2973      486,   829,   247,  1491,   654,  1022,    65,  1491,    67,    68,
    2974       69,    65,   106,   841,   102,    69,   261,    76,    77,   437,
    2975      108,   725,    76,    77,   102,   818,   101,   102,   103,   267,
    2976      108,   124,   710,  1457,  1458,   124,   101,   716,   103,   820,
    2977      102,   124,   101,   824,   103,   106,   108,   101,    44,    65,
    2978      705,   730,   111,   471,   106,   293,   711,   111,   101,  1045,
    2979      764,   892,   102,   102,    60,   102,   102,    63,   108,   108,
    2980       66,   108,   108,   623,   557,   558,   559,   560,   728,   324,
    2981       10,    11,    12,    13,    14,    65,   914,    67,    68,   639,
    2982      508,   101,   102,   103,   512,   101,   101,   515,   103,   344,
    2983      928,   104,   340,   653,   101,  1146,   103,    37,   936,     4,
    2984        5,     6,     7,     8,     9,    75,   101,   805,   103,    75,
    2985       65,     0,     1,   101,    69,   103,   954,   815,   102,   103,
    2986       60,    76,    77,   914,  1246,  1247,  1248,   918,   101,   959,
    2987      103,   112,   830,   822,   695,   120,   697,    87,   144,    78,
    2988       79,    80,    31,    54,    55,   400,   101,   108,   109,   990,
    2989      121,   157,   993,   101,   995,    44,   111,    62,   818,    64,
    2990      123,   101,   101,   103,   103,   825,   105,   958,   959,   960,
    2991      103,   111,   420,   421,  1225,   101,   182,    66,   892,    65,
    2992      104,    67,    68,    69,  1110,   108,   109,   683,   104,  1118,
    2993      750,    42,    43,  1122,  1123,   450,   553,   554,   825,   205,
    2994      555,   556,  1043,   892,   102,   561,   562,   102,   102,   102,
    2995      102,   217,  1053,   101,   103,  1056,  1057,  1058,  1009,   884,
    2996      102,   104,   103,   108,   104,   101,   891,   123,   106,   725,
    2997      918,   486,   892,   104,   102,   490,   102,   104,  1190,  1191,
    2998      104,  1193,   104,   671,   104,   108,  1470,  1199,   496,    28,
    2999     1202,   109,   680,   109,    63,   144,   684,    10,    11,    12,
    3000       13,    14,   102,   152,   153,   892,   514,   102,   104,   106,
    3001      109,    80,  1110,   107,    10,    11,    12,    13,    14,   102,
    3002      107,   107,   101,   108,    37,   102,   124,   102,   102,  1513,
    3003      102,  1206,   102,   182,   102,   466,   109,  1088,  1089,   959,
    3004      102,    37,   108,   102,   102,   114,  1235,    60,   197,   102,
    3005      892,   200,   201,   102,   102,   975,   205,   982,   324,   102,
    3006      102,   102,   102,  1012,    60,   102,   102,   102,    28,  1027,
    3007     1028,   579,   123,   107,   104,   102,  1050,   226,   102,   102,
    3008      102,   230,   107,   232,   104,   593,     3,   602,   157,   604,
    3009      108,   892,   241,    10,    11,    12,    13,    14,   247,  1189,
    3010      104,  1050,   102,   252,   102,   101,   108,   103,  1206,  1210,
    3011     1030,  1031,   102,   262,   622,   111,   109,   959,   106,   627,
    3012       37,   270,   108,   108,   104,  1083,  1084,   102,   102,  1318,
    3013     1050,   108,   108,  1322,   400,   102,   892,   101,   104,  1229,
    3014     1088,   104,   101,    60,  1356,  1246,  1247,  1248,   217,    65,
    3015      101,    67,    68,    69,  1079,  1206,   101,   101,   959,   109,
    3016       76,    77,    65,  1050,    67,    68,    69,   124,   107,   102,
    3017     1498,   102,  1146,    76,    77,   690,   102,   692,  1229,   121,
    3018      107,   106,   104,   124,   108,     3,   255,  1373,   337,   104,
    3019      259,   340,    10,    11,    12,    13,    14,   346,   101,  1300,
    3020      108,   102,   104,   102,     0,   102,   104,    45,  1050,   104,
    3021      359,   104,   102,   104,   363,  1491,   104,   366,  1491,    37,
    3022     1491,   736,   737,   104,  1492,  1492,  1415,  1317,   916,  1491,
    3023     1491,   107,  1491,  1491,   102,    31,  1210,   124,   124,  1188,
    3024      124,   672,    60,   107,   124,  1513,  1513,   124,   109,  1050,
    3025      102,  1225,   107,  1354,   104,   104,  1357,   104,   104,  1184,
    3026      104,  1210,   104,   412,   104,  1223,  1317,   104,  1188,  1189,
    3027       66,   102,   102,   101,  1372,  1373,   345,   104,   427,   104,
    3028      101,  1382,  1383,   432,  1470,    55,    54,   102,   102,   106,
    3029     1210,   440,   124,   109,  1050,   104,  1254,  1398,   104,   102,
    3030      104,   102,  1403,    89,  1262,  1263,  1264,   101,   107,  1229,
    3031      102,   104,   102,  1287,   829,  1416,    40,   466,   102,   102,
    3032      469,  1411,   109,  1210,   124,   102,   841,  1428,   108,   124,
    3033       89,   102,     3,  1282,   109,   484,   102,   486,  1287,    10,
    3034       11,    12,    13,    14,   102,   494,  1188,  1189,  1306,   498,
    3035     1491,   124,  1491,  1273,  1274,  1491,   425,   153,   107,   124,
    3036     1411,   104,  1282,   104,   124,   101,    37,  1287,  1210,   124,
    3037     1471,   124,  1470,  1061,   805,  1476,   107,   526,   527,   672,
    3038      107,  1482,   102,   691,   815,   102,  1487,  1229,  1189,    60,
    3039      563,   565,  1443,  1491,  1492,   564,  1492,  1317,   566,   830,
    3040     1287,  1502,  1127,  1504,   567,   713,   475,  1508,    54,  1210,
    3041     1511,  1362,  1458,   928,  1210,  1513,  1517,  1513,  1521,  1296,
    3042     1521,   936,  1473,   572,  1473,  1123,  1322,  1441,  1229,  1079,
    3043      226,   448,   448,   936,   697,   884,   938,   982,   650,   954,
    3044     1282,   590,   591,   740,   593,  1287,   460,  1498,   583,  1229,
    3045      956,   247,   960,   486,  1210,   604,   252,   571,   104,    63,
    3046     1434,   107,   750,   571,   571,    -1,    -1,  1441,    -1,    -1,
    3047     1390,    -1,    -1,   622,    -1,  1317,    -1,    -1,   627,    -1,
    3048       -1,    -1,    -1,    -1,   633,  1434,  1287,   636,   637,   638,
    3049       -1,  1411,  1441,    -1,   802,  1443,    65,    -1,    67,    68,
    3050       69,  1009,    -1,    -1,    -1,   654,   152,    76,    77,    -1,
    3051      114,  1485,   805,    -1,  1434,     0,  1317,    -1,    -1,    -1,
    3052       -1,  1441,   815,   672,    -1,  1473,    -1,   596,    -1,    -1,
    3053       -1,  1287,   101,    -1,   683,    -1,  1485,   830,    -1,   688,
    3054      689,    -1,   111,   692,    -1,    -1,    31,  1434,    -1,    -1,
    3055      346,    -1,  1372,   157,  1441,   624,    -1,    -1,    -1,    -1,
    3056      629,    -1,    -1,    -1,    -1,  1485,    -1,    -1,   214,  1411,
    3057      185,    -1,   880,    -1,    -1,    -1,   725,   192,    -1,   728,
    3058       -1,    66,    65,    -1,    67,    68,    69,    -1,   737,    -1,
    3059       -1,   740,  1434,    76,    77,    -1,  1027,  1028,  1485,  1441,
    3060       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1295,    -1,    -1,
    3061     1411,    -1,    -1,   217,   763,   764,   412,    -1,   101,    -1,
    3062      769,    -1,   268,    65,    -1,    67,    68,    69,   111,   275,
    3063       -1,   427,    -1,  1434,    76,    77,   432,    -1,    -1,    -1,
    3064     1441,    -1,    -1,  1485,   440,    -1,    -1,   716,    -1,   264,
    3065       -1,   255,  1083,  1084,    -1,   259,   805,    -1,    -1,   101,
    3066      968,   730,    -1,    -1,    -1,    -1,   815,    -1,   153,   818,
    3067      466,   820,    -1,    -1,   823,   824,   825,    -1,  1434,    -1,
    3068       -1,   830,    -1,    -1,  1485,  1441,    -1,    -1,   484,   997,
    3069      486,   840,    10,    11,    12,    13,    14,   343,    -1,    -1,
    3070       -1,    -1,    -1,    -1,   319,    10,    11,    12,    13,    14,
    3071       -1,    -1,   327,    -1,   360,   330,    -1,    -1,   364,    37,
    3072       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1485,
    3073       -1,   527,    37,    -1,  1027,  1028,    -1,    -1,    -1,  1047,
    3074       -1,   345,    60,   892,    -1,    -1,    -1,    65,    -1,    67,
    3075       68,    69,    -1,   822,  1442,    60,    -1,    -1,    76,    77,
    3076       65,    -1,   247,    -1,    69,   914,    -1,   252,    -1,    -1,
    3077       -1,    76,    77,    -1,    -1,    -1,    -1,   392,    -1,    -1,
    3078      426,   396,    -1,   101,  1472,   103,    -1,    -1,    -1,    -1,
    3079     1083,  1084,  1223,   111,    -1,   591,   101,    -1,     0,    -1,
    3080       -1,   950,    -1,    -1,    -1,    -1,   111,    -1,    -1,   958,
    3081      959,    -1,  1120,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3082       -1,   425,    -1,  1254,  1512,     0,   975,    -1,    -1,    31,
    3083       -1,  1262,  1263,  1264,    -1,    -1,  1524,    -1,    -1,    -1,
    3084      636,   637,   638,    -1,    -1,    -1,    -1,    -1,    -1,   279,
    3085       -1,    -1,    -1,    -1,    -1,    -1,    31,    -1,   654,    -1,
    3086     1009,   346,   292,   293,    66,    -1,   481,    -1,    -1,  1177,
    3087     1178,   475,    -1,  1022,   304,  1306,   672,    -1,  1027,  1028,
    3088       -1,  1030,  1031,    -1,    -1,    -1,    -1,   683,    -1,    -1,
    3089       -1,    66,    -1,   689,    -1,    10,    11,    12,    13,    14,
    3090       -1,  1050,     4,     5,     6,     7,     8,     9,    -1,    -1,
    3091      340,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
    3092       -1,    -1,    37,    76,    77,    -1,    -1,   412,    -1,   725,
    3093       32,    -1,   728,    -1,  1083,  1084,    -1,    -1,    -1,    -1,
    3094     1089,    -1,   427,  1012,   590,    60,   376,   432,   101,    -1,
    3095      103,   153,    -1,    -1,    -1,   440,   571,   572,   111,    -1,
    3096       62,  1254,    64,    -1,    -1,    -1,    -1,    -1,   764,  1262,
    3097     1263,  1264,    -1,    -1,    -1,    -1,  1491,   623,   153,    -1,
    3098       -1,   466,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3099     1498,    -1,   596,   639,    -1,    -1,   111,  1146,    -1,   484,
    3100       65,   486,    67,    68,    69,    -1,    -1,   653,    -1,   805,
    3101       -1,    76,    77,  1306,    -1,    -1,    63,    -1,    -1,   815,
    3102      624,    -1,   818,    -1,    -1,   629,    73,   823,    -1,   825,
    3103       -1,    -1,    -1,    -1,   830,    -1,   101,    -1,   103,    -1,
    3104     1189,    -1,   527,    -1,   659,   247,   111,    -1,   663,    -1,
    3105      252,    65,    -1,    67,    68,    69,    -1,  1206,    -1,    -1,
    3106       -1,  1210,    76,    77,    -1,    -1,    -1,   114,    -1,  1377,
    3107       -1,    -1,   247,    -1,  1223,    -1,  1225,   252,    -1,    -1,
    3108     1229,   696,    -1,    -1,    -1,    -1,  1394,   101,    -1,   103,
    3109       -1,    -1,    -1,    -1,    -1,   109,   892,   111,    -1,    -1,
    3110       -1,    -1,    -1,    -1,   750,  1254,   591,    -1,    -1,    -1,
    3111      157,    -1,   716,  1262,  1263,  1264,    -1,    -1,    -1,  1188,
    3112      550,   551,   552,    -1,  1273,  1274,   730,    90,    91,    92,
    3113       93,    94,    95,    96,    97,    98,    99,    -1,  1287,    -1,
    3114       -1,    -1,    -1,    -1,   346,    -1,    -1,    -1,    -1,  1457,
    3115     1458,   636,   637,   638,    -1,    -1,    -1,  1306,    -1,    -1,
    3116      123,    -1,    -1,   593,    -1,    -1,    -1,    -1,  1317,   654,
    3117      217,   346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   975,
    3118       -1,    -1,    -1,    -1,    -1,    -1,    -1,   672,    -1,    10,
    3119       11,    12,    13,    14,   809,    -1,    -1,    -1,   683,    -1,
    3120       -1,    -1,    -1,    -1,   689,    -1,    -1,    -1,   255,    -1,
    3121      412,    -1,   259,  1282,    -1,    -1,    37,    -1,   822,    -1,
    3122       -1,    -1,    -1,    -1,    -1,   427,    -1,    -1,   275,    -1,
    3123      432,  1027,  1028,    -1,  1030,  1031,    -1,   412,   440,    60,
    3124      725,  1390,    -1,   728,    65,    -1,    67,    68,    69,    -1,
    3125       -1,    -1,   427,    -1,  1050,    76,    77,   432,    -1,    -1,
    3126       -1,    -1,  1411,    -1,   466,   440,    -1,    -1,   914,    -1,
    3127       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   764,
    3128      101,    -1,   484,    -1,   486,  1434,    -1,  1083,  1084,    -1,
    3129      111,   466,  1441,    -1,    -1,    -1,   726,    -1,   345,    -1,
    3130       -1,    -1,    -1,    -1,    -1,    -1,    -1,   922,    -1,   484,
    3131       -1,   486,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3132      805,    -1,    -1,    -1,    -1,   527,    -1,    -1,    -1,    -1,
    3133      815,    -1,    -1,   818,    -1,    -1,  1485,    -1,   823,    -1,
    3134      825,   771,    -1,  1492,    -1,   830,    -1,    -1,    -1,    -1,
    3135     1146,    -1,   527,    -1,     3,     4,     5,     6,     7,     8,
    3136        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3137       19,    20,    21,    22,    23,    24,    25,    26,   425,    -1,
    3138       29,    30,    31,    -1,   999,    -1,    -1,   817,    37,   591,
    3139       -1,    -1,    -1,  1189,    -1,   442,    -1,    -1,    -1,    -1,
    3140     1015,    -1,    -1,    -1,    -1,    -1,    -1,   892,  1012,    -1,
    3141       -1,    60,    -1,    62,  1210,    64,   591,    -1,    67,    68,
    3142       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1223,   475,  1225,
    3143       -1,    -1,    -1,    -1,   636,   637,   638,    -1,    -1,    -1,
    3144       -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3145       14,    -1,   654,    -1,    -1,    -1,    -1,   106,  1254,    -1,
    3146       -1,   636,   637,   638,    -1,    -1,  1262,  1263,  1264,    -1,
    3147      672,    -1,    -1,    37,    -1,  1090,    -1,  1273,  1274,   654,
    3148       -1,   683,    -1,    -1,    -1,    -1,    -1,   689,    -1,    -1,
    3149      975,  1287,    -1,    50,    -1,    52,    60,   672,    55,    56,
    3150       57,    65,    59,    67,    68,    69,    -1,    -1,   683,    -1,
    3151     1306,    -1,    76,    77,   689,    -1,    -1,    74,    -1,    -1,
    3152       -1,    -1,    -1,   725,    -1,    -1,   728,    -1,    -1,    86,
    3153       87,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3154       -1,    -1,  1027,  1028,    -1,  1030,  1031,   111,    -1,   596,
    3155      725,    -1,    -1,   728,    -1,    -1,    -1,    -1,    -1,    -1,
    3156     1206,    -1,   764,    -1,    -1,  1050,    -1,    -1,    -1,    -1,
    3157       -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,  1009,
    3158       -1,    -1,   629,    -1,  1188,    -1,    -1,    -1,    -1,   764,
    3159       -1,    -1,    -1,    -1,  1390,    -1,    -1,    -1,  1083,  1084,
    3160       -1,    -1,    -1,   805,    -1,    -1,    -1,    10,    11,    12,
    3161       13,    14,    -1,   815,    -1,    -1,   818,    -1,    -1,    -1,
    3162     1050,   823,    -1,   825,    -1,    -1,    -1,    -1,   830,    -1,
    3163      805,    -1,    -1,    -1,    37,    -1,    -1,    -1,  1434,    -1,
    3164      815,    -1,    -1,   818,    -1,  1441,    -1,    -1,   823,    -1,
    3165      825,    -1,    -1,    -1,    -1,   830,    -1,    60,    -1,    -1,
    3166       -1,  1146,    65,    -1,    67,    68,    69,    -1,    -1,   716,
    3167       -1,    -1,    -1,    76,    77,    -1,    -1,    -1,  1282,    -1,
    3168       -1,    -1,    -1,   730,    -1,    -1,    -1,    -1,    -1,  1485,
    3169      892,    10,    11,    12,    13,    14,    -1,    -1,   101,    -1,
    3170      103,    -1,    -1,   750,  1189,    -1,    -1,    -1,   111,    -1,
    3171       -1,    -1,    -1,    -1,    -1,    -1,    -1,   892,    37,    -1,
    3172       -1,    -1,    -1,    -1,    -1,  1210,  1372,    -1,    -1,    -1,
    3173       -1,    -1,    -1,  1163,    -1,    -1,    -1,    -1,  1223,    -1,
    3174     1225,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
    3175       69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
    3176       -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,  1254,
    3177       -1,    -1,    -1,   975,    -1,   822,    -1,  1262,  1263,  1264,
    3178       -1,    -1,   101,   340,   341,    -1,    -1,    -1,  1273,  1274,
    3179       -1,    -1,   111,    -1,    -1,   352,   353,    -1,    -1,    -1,
    3180      975,    -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3181       -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
    3182       -1,  1306,    -1,    -1,    44,  1027,  1028,    -1,  1030,  1031,
    3183       -1,    -1,    -1,    96,    -1,    98,    -1,    10,    11,    12,
    3184       13,    14,    -1,    63,    -1,    -1,    -1,    -1,  1050,    -1,
    3185       -1,    -1,  1027,  1028,    -1,  1030,  1031,    -1,    -1,   122,
    3186       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    3187       -1,    -1,    -1,    -1,    -1,  1050,    -1,    -1,    -1,    -1,
    3188       -1,  1083,  1084,    96,    -1,    98,    -1,    60,    -1,   109,
    3189       -1,    -1,    65,    -1,   114,    -1,    69,    -1,    -1,    -1,
    3190       -1,    -1,    -1,    76,    77,  1390,    -1,    -1,  1083,  1084,
    3191       -1,    -1,    -1,    -1,   177,    -1,    -1,    -1,    -1,    -1,
    3192       -1,    -1,   185,   143,   187,   188,    -1,    -1,   101,   192,
    3193       -1,   194,   195,   153,    -1,    -1,    -1,   157,   111,    -1,
    3194       -1,    -1,    -1,    -1,  1146,    -1,    -1,    -1,    -1,  1434,
    3195       -1,    -1,    -1,    -1,    -1,    36,  1441,    38,    -1,    -1,
    3196       -1,    -1,    -1,    -1,   177,  1012,    -1,    -1,    -1,    -1,
    3197       -1,  1146,    -1,    -1,   187,   188,    -1,    -1,    59,   192,
    3198       -1,   194,   195,    -1,    65,   205,    -1,  1189,    69,    -1,
    3199       -1,    72,    73,    74,    75,    76,    77,   217,    79,    80,
    3200     1485,   264,    -1,    -1,    -1,    -1,    87,    -1,  1210,    -1,
    3201       -1,    -1,    -1,    -1,  1189,   235,   236,    -1,    -1,    -1,
    3202      101,  1223,   103,  1225,    -1,    -1,    -1,    -1,    -1,   110,
    3203      111,   112,   113,   114,   115,  1210,    -1,    -1,    -1,   259,
    3204       -1,    -1,    -1,   124,    -1,    -1,    -1,   267,  1223,    -1,
    3205     1225,    -1,  1254,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3206     1262,  1263,  1264,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3207      290,  1273,  1274,   293,    -1,    -1,    -1,     7,    -1,  1254,
    3208       10,    11,    12,    13,    14,  1287,    -1,  1262,  1263,  1264,
    3209       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,
    3210       -1,    -1,    -1,    -1,  1306,    -1,    36,    37,    38,    -1,
    3211       -1,    -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3212      340,    -1,    -1,    -1,    -1,   345,    -1,    -1,    -1,    59,
    3213       60,  1306,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
    3214       -1,  1188,    72,    73,    74,    75,    76,    77,    -1,    79,
    3215       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    3216      717,    -1,   719,    -1,    -1,    -1,    -1,    -1,    -1,   726,
    3217      727,   101,    -1,   103,   731,    -1,    -1,    -1,    -1,    -1,
    3218      110,   111,   112,   113,   114,   115,   743,    -1,  1390,    -1,
    3219       -1,   748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3220      420,   421,    -1,    -1,    -1,    -1,    -1,   427,    -1,    -1,
    3221       -1,    -1,    -1,    -1,    -1,  1390,   773,    -1,    -1,    -1,
    3222       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   448,    -1,
    3223       -1,   451,  1434,    -1,    -1,  1282,    -1,   457,    -1,  1441,
     4133      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
     4134      -1,    -1,    -1,    -1,    -1,    39,    -1,    37,    38,    -1,
     4135      40,    41,    -1,    43,    44,    45,    46,    47,    48,    49,
     4136      50,    51,    52,    53,    -1,    -1,    56,    57,    -1,    -1,
     4137      -1,    61,    62,    67,    64,    69,    66,    71,    -1,    -1,
     4138      74,    75,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
     4139      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
     4140      -1,    -1,    96,    -1,    94,    -1,    -1,    -1,    -1,    -1,
     4141      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
     4142      -1,   111,    -1,    -1,   114,    -1,    -1,    -1,   118,   119,
     4143     120,   121,   122,   123,    -1,    -1,    37,    38,   128,    40,
     4144      41,    -1,    43,    44,    45,    46,    47,    48,    49,    50,
     4145      51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,
     4146      61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,
     4147      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
     4148      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
     4149      -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,
     4150      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
     4151     111,    -1,    -1,   114,    -1,    -1,    -1,   118,   119,   120,
     4152     121,   122,   123,    -1,    -1,    37,    38,   128,    40,    41,
     4153      -1,    43,    -1,    -1,    46,    47,    48,    49,    50,    51,
     4154      52,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    61,
     4155      62,    -1,    64,    -1,    66,    -1,    -1,    -1,    -1,    -1,
     4156      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,
     4157      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
     4158      -1,    -1,    94,    37,    38,    -1,    40,    -1,    -1,    -1,
     4159      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
     4160      -1,    -1,   114,    -1,    -1,    -1,   118,   119,   120,   121,
     4161     122,   123,    66,    -1,    -1,    -1,   128,    -1,    72,    -1,
     4162      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
     4163      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
     4164      94,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
     4165      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,   113,
     4166     114,    -1,    -1,    -1,   118,   119,   120,   121,   122,   123,
     4167      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
     4168      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
     4169      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    94,    37,
     4170      38,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4171      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    37,    38,
     4172      -1,    40,   118,   119,   120,   121,   122,   123,    66,    -1,
     4173      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
     4174      -1,    79,    80,    81,    82,    83,    84,    66,    86,    87,
     4175      -1,    -1,    -1,    72,    -1,    -1,    94,    76,    -1,    -1,
     4176      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
     4177      -1,   109,    -1,   111,    -1,    94,    37,    38,    -1,    40,
     4178     118,   119,   120,   121,   122,   123,    -1,    -1,    -1,    -1,
     4179     109,    -1,   111,    -1,    -1,    37,    38,    -1,    40,   118,
     4180     119,   120,   121,   122,   123,    66,    -1,    -1,    -1,    -1,
     4181      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
     4182      81,    82,    83,    84,    66,    86,    87,    -1,    -1,    -1,
     4183      72,    -1,    -1,    94,    76,    -1,    -1,    79,    80,    81,
     4184      82,    83,    84,    -1,    86,    87,    -1,    -1,   109,    -1,
     4185      -1,    -1,    94,    -1,    -1,    -1,    -1,   118,   119,   120,
     4186     121,   122,   123,    -1,    -1,    -1,    -1,   109,    -1,    -1,
     4187      -1,    -1,    -1,    -1,    -1,    -1,   118,   119,   120,   121,
     4188     122,   123,     4,     5,     6,     7,     8,     9,    10,    11,
     4189      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     4190      22,    23,    24,    25,    26,    27,    -1,    -1,    -1,    -1,
     4191      -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
     4192      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4193      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4194      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
     4195      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
     4196      -1,    83,    84,     3,     4,     5,     6,     7,     8,     9,
    32244197      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3225       20,    21,    22,    23,    24,    25,    26,    27,    -1,  1434,
    3226      817,    -1,    -1,    -1,   484,    -1,  1441,    37,    -1,    -1,
    3227       -1,    -1,    -1,    -1,    -1,    -1,   496,    -1,    -1,    -1,
    3228       -1,    -1,    -1,  1485,    -1,    -1,    -1,    -1,   508,    -1,
    3229       60,    -1,   512,    -1,   514,   515,    -1,    -1,    -1,    -1,
    3230       -1,    71,    -1,    -1,    -1,    -1,    -1,   527,    -1,    -1,
    3231     1485,    -1,   575,   576,    -1,    -1,    -1,   874,   875,   876,
    3232      877,    -1,   879,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3233       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   895,    -1,
    3234       -1,    -1,   605,    -1,    -1,   608,   609,    -1,   611,    -1,
    3235      613,   614,   909,    -1,    -1,   618,   619,    -1,    -1,   579,
    3236       -1,    -1,   575,   576,    -1,    -1,    -1,    -1,    -1,    -1,
    3237       -1,   591,    -1,   593,    -1,    -1,   596,    -1,    -1,    -1,
    3238       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3239       -1,   948,   605,    -1,    -1,   608,   609,    -1,   611,    -1,
    3240      613,   614,   622,    -1,    -1,   618,   619,   627,    -1,    -1,
    3241       -1,    -1,    -1,    -1,    -1,    -1,   636,   637,   638,    -1,
    3242       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3243      987,    -1,    -1,   696,   654,    -1,    -1,   994,   701,   702,
    3244       -1,   998,    -1,    -1,   707,    -1,  1003,    -1,  1005,    -1,
    3245       -1,    -1,  1009,  1010,  1011,    -1,    -1,  1014,    -1,    -1,
    3246       -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,    -1,   689,
    3247       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3248       -1,    -1,    -1,    -1,  1041,  1042,    -1,    -1,   701,   702,
    3249      710,    -1,    -1,    -1,   707,    -1,    -1,    -1,    -1,    -1,
    3250       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   728,  1066,
    3251      730,    -1,  1069,    10,    11,    12,    13,    14,    15,    16,
    3252       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3253       -1,    -1,    29,    30,    31,    -1,    -1,    63,    -1,    -1,
    3254       37,    -1,    -1,    -1,   764,    -1,    -1,    73,    -1,    75,
    3255     1107,    77,    -1,    -1,    -1,    -1,  1113,  1114,    84,    -1,
    3256       -1,    -1,    -1,    60,    -1,    -1,    -1,  1124,    -1,    -1,
    3257       67,    68,  1129,    -1,    -1,  1132,    -1,  1134,    -1,    -1,
    3258     1137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
    3259      116,   117,   118,  1150,    -1,    -1,    -1,    -1,   818,    -1,
    3260       -1,    -1,   822,    -1,    -1,   825,  1163,    -1,  1165,  1166,
    3261     1167,  1168,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3262       -1,    -1,    -1,    -1,  1181,    -1,  1183,    -1,    -1,    -1,
    3263     1187,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3264       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3265       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1215,  1216,
    3266       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3267       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3268       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3269       31,   217,    -1,   219,   220,   221,    37,    -1,   918,    -1,
    3270       -1,    -1,    -1,    -1,    -1,    43,    -1,    -1,  1265,  1266,
    3271       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1275,    60,
    3272       -1,    62,    -1,    64,    65,    -1,    67,    68,    69,   255,
    3273       -1,    -1,    -1,   259,    -1,    76,    77,    -1,    -1,    -1,
    3274      960,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   275,
    3275       -1,    89,    -1,    -1,    -1,   975,    -1,    -1,    -1,    -1,
    3276      101,    99,   103,    -1,    -1,    -1,  1323,    -1,    -1,    -1,
    3277      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1335,    -1,
    3278     1337,  1338,  1339,    -1,    -1,    -1,    -1,    -1,    -1,  1009,
    3279       -1,    -1,  1349,    -1,    -1,    -1,    -1,    -1,   324,    -1,
    3280       -1,  1358,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
    3281     1030,  1031,    -1,  1370,    -1,    -1,   154,    -1,    -1,   345,
    3282       -1,    -1,  1085,    -1,   350,   351,    -1,    59,    -1,   167,
    3283       -1,    -1,   358,    65,    -1,    -1,    -1,    69,    -1,    -1,
    3284       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3285       -1,    -1,   190,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3286       -1,    -1,    -1,    -1,  1421,  1422,   204,    -1,  1088,   101,
    3287       -1,   103,  1085,    -1,   400,   213,   108,  1434,   110,   111,
    3288      112,   113,   114,   115,  1441,   223,    -1,    -1,    -1,    -1,
    3289       -1,    -1,   418,    -1,    -1,    -1,    -1,   423,    -1,   425,
    3290       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3291      248,    -1,  1469,    -1,    -1,   253,   442,    -1,    -1,   445,
    3292      446,    -1,    -1,    -1,    -1,    -1,  1146,    -1,   266,    -1,
    3293       -1,    -1,    -1,    -1,   272,   461,   274,    -1,    -1,    -1,
    3294     1497,    -1,    -1,    -1,  1207,    -1,    -1,    -1,    -1,   475,
    3295       -1,    -1,    -1,   291,    -1,    -1,   482,    -1,    -1,    -1,
    3296       -1,    -1,    -1,    -1,    -1,    -1,  1523,    -1,  1188,    -1,
    3297       -1,  1528,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3298       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3299       -1,    -1,    -1,    -1,  1207,    -1,   334,    -1,    -1,    -1,
    3300       -1,   339,    -1,    -1,    -1,  1225,    -1,    -1,    -1,    -1,
    3301       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3302       19,    20,    21,    22,    23,    24,    25,    26,    -1,   367,
    3303       29,    30,    31,   371,   372,    -1,   374,    -1,    37,    -1,
    3304       -1,    -1,   380,   381,    -1,   383,   384,    -1,   386,    -1,
    3305      388,    -1,     7,  1273,  1274,    10,    11,    12,    13,    14,
    3306       -1,    60,  1282,    -1,    -1,    -1,    -1,   405,    67,    68,
    3307      596,    -1,    -1,    -1,    -1,   413,    -1,    -1,    -1,    -1,
    3308       -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    3309       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,
    3310      438,    -1,    -1,   629,    59,    60,    -1,    -1,    -1,    -1,
    3311       65,   449,   111,    -1,    69,    -1,    -1,    72,    73,    74,
    3312       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3313       -1,    -1,    87,    -1,   472,    -1,    -1,    -1,    -1,    -1,
    3314      478,    -1,    -1,    -1,    -1,   483,   101,    -1,   103,    -1,
    3315       -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3316      115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3317     1390,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3318       -1,   519,    -1,    -1,   278,   279,   280,    -1,    -1,    -1,
    3319      716,    -1,    -1,   287,   288,    -1,    -1,   535,   292,   293,
    3320       -1,    -1,    -1,    -1,   730,    -1,    -1,    -1,    -1,    -1,
    3321      304,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3322       -1,    -1,    -1,  1443,   750,    -1,    -1,    -1,    -1,    -1,
    3323       -1,    -1,    -1,   571,   152,   153,    -1,    -1,    -1,    -1,
    3324       -1,    -1,   580,    -1,    -1,    -1,   340,    -1,    -1,   587,
    3325       -1,    -1,    -1,  1473,   592,    -1,    -1,    -1,    -1,    -1,
    3326       -1,    -1,    -1,    -1,    -1,   603,    -1,   185,    -1,    -1,
    3327       -1,    -1,    -1,    -1,   192,    -1,    -1,    -1,  1498,    -1,
    3328       -1,    -1,   376,   809,    -1,    -1,    -1,    -1,    -1,    -1,
    3329       -1,    -1,    -1,    -1,    -1,    -1,   822,    -1,    -1,    -1,
    3330       -1,    -1,    -1,    -1,    -1,    -1,   644,    -1,    -1,    -1,
    3331       -1,    -1,    -1,     0,    -1,   841,     3,     4,     5,     6,
     4198      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
     4199      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
     4200      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4201      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4202      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
     4203      -1,    71,    -1,    -1,    74,    75,     3,     4,     5,     6,
    33324204       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    33334205      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3334       -1,   679,    29,    30,    31,    32,   264,    -1,    35,    -1,
    3335       37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3336       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3337       57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
    3338       67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
    3339       77,    -1,    -1,    -1,    -1,    -1,   734,    -1,    -1,    -1,
    3340       -1,   319,   928,    -1,    -1,    -1,   744,   745,    -1,   327,
    3341      328,    -1,   330,   331,   101,    -1,   103,    -1,    -1,   757,
    3342       -1,    -1,   340,    -1,   111,    -1,   344,    -1,   954,    -1,
    3343       -1,    -1,    -1,    -1,    -1,    -1,   774,    -1,   776,    -1,
    3344       -1,    -1,   780,    -1,    -1,   363,    -1,    -1,   366,    -1,
    3345       -1,    -1,    -1,    -1,    -1,   981,   550,   551,   552,   553,
    3346      554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
    3347      564,   565,   566,   567,   392,    -1,    -1,    -1,   396,    36,
    3348       -1,    38,    -1,    -1,    -1,    -1,  1012,    -1,    -1,    -1,
    3349       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,   593,
    3350       -1,    -1,    59,    -1,    -1,    -1,    -1,   845,    65,   427,
    3351       67,    68,    69,    -1,   852,    72,    73,    74,    75,    76,
    3352       77,    -1,    79,    80,    -1,    -1,    -1,   865,    -1,   867,
    3353       87,    -1,   450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3354       -1,    -1,    -1,   881,   101,    -1,   103,    -1,   105,   106,
    3355      888,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
    3356       -1,    -1,   900,   481,    -1,   903,   484,    -1,    -1,    -1,
    3357       -1,    -1,    -1,    -1,    -1,    -1,  1102,    -1,    -1,    -1,
    3358       -1,    -1,    -1,   921,    -1,    -1,    -1,    -1,    -1,    -1,
    3359       -1,    -1,    -1,    -1,    -1,    -1,    -1,   691,    -1,    -1,
    3360       -1,    -1,    -1,    -1,    -1,   523,    -1,    -1,   526,   527,
    3361       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   713,
    3362       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3363      143,    -1,   726,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3364      153,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3365       -1,    -1,   165,   571,   572,    -1,    -1,    -1,    -1,    -1,
    3366       -1,    -1,  1188,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3367     1008,    -1,   590,   591,    -1,   593,    -1,   771,    -1,    -1,
    3368       -1,    -1,    -1,    -1,   602,    -1,   604,   605,    -1,    -1,
    3369       -1,    -1,    -1,   611,    -1,    -1,    -1,    -1,    -1,    -1,
    3370       -1,    -1,    -1,   621,   622,    -1,    -1,    -1,   802,   627,
    3371       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   636,   637,
    3372      638,    -1,   235,   817,    -1,  1063,    -1,    -1,    -1,    -1,
    3373       -1,  1069,    -1,    -1,    -1,    -1,   654,    -1,    -1,    -1,
    3374       -1,   659,   660,    -1,    -1,   663,   664,   260,    -1,    -1,
    3375       -1,    -1,   670,    -1,    -1,    -1,  1282,    -1,    -1,    -1,
    3376     1098,    -1,    -1,    -1,    -1,  1103,    -1,    -1,    -1,    -1,
    3377      688,   689,   690,  1111,   692,    -1,    -1,    -1,   696,     3,
    3378        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3379       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3380       24,    25,    26,  1141,    -1,    29,    30,    31,    -1,    -1,
    3381      728,   729,    -1,    37,    -1,  1153,    -1,    -1,  1156,    -1,
    3382     1158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3383       -1,    -1,    -1,    -1,  1172,  1173,    60,    -1,    62,    -1,
    3384       64,    -1,    -1,    67,    68,   763,   764,    -1,    -1,    -1,
    3385      768,   769,    -1,    -1,    -1,    -1,  1194,    -1,    -1,    -1,
    3386       -1,    -1,   375,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3387       -1,    -1,    -1,    -1,   968,    -1,    -1,    -1,    -1,   103,
    3388       -1,    -1,  1220,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    3389       -1,   809,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3390      818,    -1,    -1,   997,    -1,    -1,   824,   825,    -1,    -1,
    3391       -1,   829,    -1,   831,    -1,  1009,    -1,    -1,    -1,    -1,
    3392       -1,    -1,    -1,   841,    -1,    -1,    -1,    10,    11,    12,
    3393       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3394       23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
    3395       -1,    -1,    -1,    -1,    37,    -1,  1050,    -1,    -1,    -1,
    3396       -1,    -1,    -1,   476,    -1,    -1,    -1,    -1,    -1,    -1,
    3397       -1,    -1,    -1,    -1,  1312,    -1,  1314,    60,    -1,    -1,
    3398       -1,    -1,    65,    -1,    67,    68,    69,  1513,    71,  1327,
    3399       -1,  1329,    -1,    76,    77,    -1,   914,    -1,    -1,    -1,
    3400       -1,   514,    -1,    -1,   922,    -1,    -1,    -1,    -1,  1347,
    3401      928,    -1,    -1,    -1,   527,    -1,    -1,    -1,   936,    -1,
    3402      103,   534,    -1,    -1,    -1,  1363,  1120,    -1,   111,    -1,
    3403       -1,   949,   950,  1371,   547,   548,  1374,    -1,    10,    11,
    3404       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3405       22,    23,    24,    25,    26,    27,   569,   975,  1396,    -1,
    3406       -1,    -1,    -1,   981,    -1,    37,   579,  1405,    -1,  1163,
    3407     1408,  1409,    -1,   586,    -1,    -1,    -1,    -1,   591,    -1,
    3408       -1,   999,  1000,  1177,  1178,    -1,    -1,    -1,    60,    -1,
    3409       -1,  1009,    -1,    -1,    -1,    -1,    -1,  1015,  1016,    71,
    3410     1018,  1019,  1020,    -1,    -1,    -1,    -1,  1445,    -1,  1447,
    3411       -1,    -1,  1030,  1031,    -1,    -1,    -1,    -1,    -1,    -1,
    3412       -1,    -1,    -1,    -1,  1462,    -1,    -1,    -1,   641,    -1,
    3413       -1,    -1,    -1,    -1,    -1,    -1,   649,     4,     5,     6,
    3414        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3415       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3416       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3417       37,  1089,  1090,  1091,    -1,    -1,   689,    -1,    -1,    -1,
    3418       -1,    -1,    -1,    -1,  1102,    -1,    -1,    -1,    -1,    -1,
    3419       -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
    3420       67,    68,    -1,     3,     4,     5,     6,     7,     8,     9,
    3421       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3422       20,    21,    22,    23,    24,    25,    26,    -1,  1146,    29,
    3423       30,    31,    32,    -1,    -1,    35,   103,    37,    38,    -1,
    3424       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3425       -1,   764,    -1,   766,    -1,    -1,    -1,    57,    -1,   772,
    3426       60,    -1,    62,    -1,    64,    65,   779,    67,    68,    69,
    3427       -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
    3428       -1,    -1,    -1,  1377,    -1,    -1,    -1,    -1,  1206,    -1,
    3429       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3430     1394,   101,    -1,   103,    -1,    -1,    -1,  1225,    -1,   822,
    3431      823,   111,   825,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3432       -1,    -1,    -1,    -1,    -1,    -1,    -1,   840,    -1,    -1,
    3433       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3434       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
    3435       -1,    -1,    -1,    -1,    -1,  1273,  1274,    37,    -1,    -1,
    3436       -1,    -1,    -1,  1457,  1458,    -1,    -1,   880,    -1,    -1,
    3437       -1,   884,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3438       60,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
    3439        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3440       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3441       29,    30,    31,    32,    -1,    -1,    35,    36,    37,    38,
    3442       39,    -1,    41,    -1,    -1,    44,    45,    46,    47,    48,
    3443       49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
    3444       59,    60,    -1,    62,    -1,    64,    65,   960,    67,    68,
    3445       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3446       79,    80,   975,   976,    -1,    -1,    -1,    -1,    87,   982,
    3447       -1,    -1,  1390,    -1,    -1,   988,    -1,    -1,   991,    -1,
    3448      993,    -1,   101,    -1,   103,    -1,    36,   106,    38,    -1,
    3449       -1,   110,   111,   112,   113,   114,   115,    -1,    -1,  1012,
    3450       -1,    -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,    59,
    3451     1023,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
    3452       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3453       80,    -1,  1045,    -1,  1047,    -1,    -1,    87,    -1,    -1,
    3454       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1062,
    3455       -1,   101,  1470,   103,    -1,    -1,   106,    -1,    -1,    -1,
    3456      110,   111,   112,   113,   114,   115,    -1,    36,  1081,    38,
    3457       39,    -1,    41,  1491,  1492,    44,    45,    46,    47,    48,
    3458       49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
    3459       59,    -1,    -1,    -1,    -1,  1513,    65,    -1,    -1,    -1,
    3460       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3461       79,    80,    -1,    -1,  1127,    -1,    -1,    -1,    87,    -1,
    3462       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3463       -1,    -1,   101,  1146,   103,    -1,    -1,   106,    -1,    -1,
    3464       -1,   110,   111,   112,   113,   114,   115,    -1,  1161,  1162,
    3465       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3466       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3467       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3468       31,    32,    -1,    -1,    35,    36,    37,    38,    -1,    -1,
    3469       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3470       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3471       -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
    3472       -1,    72,    73,    74,    75,    76,    77,  1240,    79,    80,
    3473       -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3474       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3475      101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    3476      111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,
    3477       -1,    -1,    -1,   124,     3,     4,     5,     6,     7,     8,
    3478        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3479       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3480       29,    30,    31,    32,    -1,    -1,    35,    36,    37,    38,
    3481       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3482       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3483       59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    3484       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3485       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3486       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1381,    -1,
    3487       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3488       -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
    3489        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3490       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3491       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
    3492       37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3493       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3494     1453,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
    3495       67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3496       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3497       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3498       -1,    -1,    -1,    -1,   101,  1498,   103,    -1,    -1,    -1,
    3499       -1,   108,    -1,   110,   111,   112,   113,   114,   115,     4,
     4206      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
     4207      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4208      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4209      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4210      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     4,
    35004211       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    35014212      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3502       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3503       -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    3504       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3505       -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
    3506       65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
    3507       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3508       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3509       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3510       -1,    -1,    -1,   108,    -1,   110,   111,   112,   113,   114,
    3511      115,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3512       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3513       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3514       -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
    3515       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3516       -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,
    3517       -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,    72,
    3518       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3519       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3520       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3521      103,    -1,    -1,    -1,    -1,   108,    -1,   110,   111,   112,
    3522      113,   114,   115,     4,     5,     6,     7,     8,     9,    10,
    3523       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3524       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3525       31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    3526       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3527       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3528       -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
    3529       -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3530       -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3531       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3532      101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    3533      111,   112,   113,   114,   115,     4,     5,     6,     7,     8,
    3534        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3535       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3536       29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    3537       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3538       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3539       59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    3540       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3541       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3542       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3543       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3544       -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
    3545        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3546       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3547       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
    3548       37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3549       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3550       -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
    3551       67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3552       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3553       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3554       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3555       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,     4,
    3556        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3557       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3558       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3559       -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    3560       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3561       -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
    3562       65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
    3563       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3564       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3565       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3566       -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3567      115,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3568       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3569       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3570       32,    -1,    -1,    35,    -1,    37,    38,    -1,    -1,    -1,
    3571       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3572       -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,
    3573       62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
    3574       -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
    3575       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3576       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3577       -1,   103,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,
    3578        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3579       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3580       23,    24,    25,    26,    27,    -1,    29,    30,    31,    32,
    3581       -1,    -1,    35,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    3582       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3583       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
    3584       -1,    64,    -1,    -1,    67,    68,    -1,    -1,    71,     3,
    3585        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3586       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3587       24,    25,    26,    -1,    -1,    29,    30,    31,    32,    -1,
    3588      103,    35,    -1,    37,    -1,    -1,    -1,    -1,   111,    -1,
    3589       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3590       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
    3591       64,    -1,    -1,    67,    68,     4,     5,     6,     7,     8,
    3592        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3593       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3594       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,   103,
    3595       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    3596       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3597       -1,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    3598       69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
    3599       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3600       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3601       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3602       -1,    -1,   111,     4,     5,     6,     7,     8,     9,    10,
    3603       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3604       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3605       31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    3606       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3607       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3608       -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,
    3609        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3610       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3611       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3612       -1,   102,   103,    37,    -1,    -1,    -1,    -1,    -1,    -1,
    3613      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3614       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
    3615       64,    -1,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,
    3616       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3617       -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,
    3618       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
    3619       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     4,     5,
    3620        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3621       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3622       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3623       -1,    37,    10,    11,    12,    13,    14,    15,    16,    17,
    3624       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3625       -1,    29,    30,    31,    60,    -1,    62,    -1,    64,    37,
    3626       -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3627       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3628       -1,    -1,    60,    89,    -1,    -1,    -1,    65,    -1,    67,
    3629       68,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    3630       -1,    -1,    -1,    -1,    -1,   111,     4,     5,     6,     7,
    3631        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3632       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3633       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3634       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3635       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3636       -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
    3637       68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3638       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3639       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3640       -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,
    3641       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3642       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
    3643       -1,    64,    -1,    -1,    67,    68,     4,     5,     6,     7,
    3644        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3645       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3646       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3647      103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3648       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3649       -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
    3650       68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3651       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3652       29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    3653       -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
    3654       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3655       59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
    3656       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3657       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3658       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3659       -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,
    3660       -1,   110,   111,   112,   113,   114,   115,    10,    11,    12,
    3661       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3662       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3663       -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
    3664       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3665       -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
    3666       -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
    3667       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3668       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3669       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3670      103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    3671      113,   114,   115,    10,    11,    12,    13,    14,    15,    16,
    3672       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3673       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
    3674       37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3675       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3676       -1,    -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,
    3677       67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3678       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3679       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3680       -1,    -1,    -1,    -1,   101,   102,   103,    -1,    -1,    -1,
    3681       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    10,
    3682       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3683       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3684       31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    3685       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3686       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3687       -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
    3688       -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3689       -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3690       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3691      101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    3692      111,   112,   113,   114,   115,    10,    11,    12,    13,    14,
    3693       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3694       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3695       -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    3696       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3697       -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,
    3698       65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
    3699       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3700       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3701       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3702       -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3703      115,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3704       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3705       29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    3706       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3707       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3708       59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
    3709       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3710       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3711       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3712       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3713       -1,   110,   111,   112,   113,   114,   115,    10,    11,    12,
    3714       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3715       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3716       -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
    3717       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3718       -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
    3719       -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
    3720       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3721       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3722       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3723      103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    3724      113,   114,   115,    10,    11,    12,    13,    14,    15,    16,
    3725       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3726       27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3727       37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3728       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3729       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
    3730       67,    68,    69,    -1,    71,    -1,    -1,    -1,    -1,    76,
    3731       77,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3732       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3733       29,    30,    31,    -1,   101,    -1,   103,    -1,    37,    -1,
    3734       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3735       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3736       -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
    3737       69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    10,
    3738       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3739       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3740       31,    -1,   101,    -1,   103,    -1,    37,    -1,    -1,    -1,
    3741       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3742       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3743       -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
    3744       -1,    -1,    -1,    -1,    -1,    76,    77,    10,    11,    12,
    3745       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3746       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3747      101,    -1,   103,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    3748      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3749       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    3750       -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
    3751       -1,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
    3752       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3753       25,    26,    -1,    -1,    29,    30,    31,    -1,   101,    -1,
    3754      103,    -1,    37,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3755       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3756       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3757       65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
    3758       -1,    76,    77,    10,    11,    12,    13,    14,    15,    16,
    3759       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3760       -1,    -1,    29,    30,    31,    -1,   101,    -1,   103,    -1,
    3761       37,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3762       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3763       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
    3764       67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
    3765       77,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3766       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3767       29,    30,    31,    -1,    -1,    -1,   103,    -1,    37,    -1,
    3768       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3769       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3770       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
    3771       -1,    -1,    71,    10,    11,    12,    13,    14,    15,    16,
    3772       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3773       27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3774       37,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3775       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3776       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    3777       67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
    3778       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3779       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3780       -1,    -1,    37,    38,   101,    -1,   103,    -1,    -1,    -1,
    3781       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3782       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3783       -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
    3784       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3785       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3786       -1,    37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,
    3787       -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3788       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
    3789       -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    3790       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3791       27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3792       37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    3793       -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3794       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    3795       67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
    3796       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3797       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3798       -1,    -1,    37,    38,    -1,    -1,   103,    -1,    -1,    -1,
    3799       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3800       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3801       -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
    3802       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3803       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3804       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
    3805       -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3806       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,
    3807       -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    3808       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3809       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3810       37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    3811       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3812       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    3813       67,    68,    10,    11,    12,    13,    14,    15,    16,    17,
    3814       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3815       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3816       -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
    3817       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3818       -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3819       68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3820       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3821       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    3822       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
    3823       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3824       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
    3825       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3826       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3827       30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
    3828       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3829       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3830       60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
    3831       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3832       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3833       31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    3834       -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
    3835       -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3836       -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,
    3837       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3838       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3839       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    3840       -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3841      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3842       -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,
    3843       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3844       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3845       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    3846       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    3847       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    3848       -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
    3849       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3850       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3851       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
    3852      103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3853       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    3854       -1,    -1,    -1,    67,    68,    10,    11,    12,    13,    14,
    3855       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3856       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3857       -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,
    3858       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    3859       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3860       -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
    3861       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3862       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3863       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
    3864       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3865       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
    3866       -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    3867       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3868       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3869       37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    3870       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3871       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    3872       67,    68,    10,    11,    12,    13,    14,    15,    16,    17,
    3873       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3874       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3875       -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
    3876       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3877       -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3878       68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3879       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3880       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    3881       -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
    3882       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3883       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
    3884        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3885       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3886       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3887       -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,    -1,
    3888       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3889       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
    3890       64,    -1,    -1,    67,    68,    -1,    36,    -1,    38,    39,
    3891       -1,    41,    -1,    -1,    44,    45,    46,    47,    48,    49,
    3892       50,    51,    52,    53,    -1,    -1,    56,    57,    -1,    59,
    3893       -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,   102,    69,
    3894       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3895       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    3896       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3897       -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
    3898      110,   111,   112,   113,   114,   115,    -1,    36,    -1,    38,
    3899       39,    -1,    41,    -1,   124,    44,    45,    46,    47,    48,
    3900       49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
    3901       59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    3902       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3903       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3904       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3905       -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,
    3906       -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
    3907       -1,    -1,    -1,    -1,    -1,   124,     4,     5,     6,     7,
    3908        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3909       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3910       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3911       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3912       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3913       30,    31,    60,    -1,    62,    -1,    64,    37,    -1,    67,
    3914       68,    -1,    36,    -1,    38,    39,    -1,    41,    42,    43,
    3915       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
    3916       60,    89,    56,    57,    -1,    59,    -1,    67,    68,    -1,
    3917       -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
    3918       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3919       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3920       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3921       -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
    3922      114,   115,    36,    -1,    38,    39,    -1,    41,    42,    43,
    3923       44,    45,    46,    47,    48,    49,    50,    51,    -1,    53,
    3924       -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,    -1,
    3925       -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
    3926       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3927       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,
    3928       -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3929       -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
    3930      114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    3931       -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3932       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3933       87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
    3934       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3935       -1,    -1,   109,   110,   111,   112,   113,   114,   115,    59,
    3936       -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
    3937       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3938       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    3939       -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
    3940       -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
    3941      110,   111,   112,   113,   114,   115,    59,    -1,    -1,    -1,
    3942       -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
    3943       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3944       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3945       36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3946      103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    3947      113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,
    3948       -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,
    3949       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
    3950       -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,
    3951       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    3952       -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    3953       59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    3954       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3955       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3956       -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
    3957       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3958       -1,   110,   111,   112,   113,   114,   115,    59,    -1,    -1,
    3959       -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
    3960       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3961       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3962       -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,
    3963       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3964      112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,
    3965       65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
    3966       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3967       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,
    3968       38,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
    3969       -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3970      115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
    3971       -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3972       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3973       -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,
    3974       -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
    3975       -1,    -1,   110,   111,   112,   113,   114,   115,    59,    -1,
    3976       -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
    3977       -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3978       -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3979       -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,
    3980      101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    3981      111,   112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,
    3982       -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
    3983       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3984       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3985       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
    3986       -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
    3987      114,   115,     4,     5,     6,     7,     8,     9,    10,    11,
    3988       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3989       22,    23,    24,    25,    26,    -1,    -1,    -1,    -1,    -1,
    3990       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    3991       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3992       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3993       62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
    3994       -1,    -1,    -1,    -1,    76,    77,     3,     4,     5,     6,
    3995        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3996       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3997       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3998       37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3999       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4000       -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
    4001       67,    68,     3,     4,     5,     6,     7,     8,     9,    10,
    4002       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    4003       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    4004       31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    4005       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4006       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    4007       -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,     5,
    4008        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    4009       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    4010       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    4011       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4012       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4013       -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
    4014       -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    4015       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    4016       -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
    4017       37,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    4018       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    4019       29,    30,    31,    60,    -1,    -1,    -1,    -1,    37,    -1,
    4020       67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4021       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4022       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68
     4213      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
     4214      -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
     4215      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4216      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     4217      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
     4218      75
    40234219};
    40244220
     
    40294225       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    40304226      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    4031       22,    23,    24,    25,    26,    29,    30,    31,    32,    35,
    4032       37,    38,    57,    60,    62,    64,    65,    67,    68,    69,
    4033       76,    77,   101,   103,   111,   129,   132,   189,   203,   204,
    4034      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
    4035      215,   216,   217,   218,   219,   220,   222,   223,   224,   225,
    4036      226,   227,   228,   229,   231,   232,   233,   234,   235,   236,
    4037      237,   245,   246,   272,   273,   274,   282,   285,   291,   292,
    4038      294,   296,   297,   303,   308,   312,   313,   314,   315,   316,
    4039      317,   318,   319,   339,   356,   357,   358,   359,    65,   111,
    4040      131,   206,   208,   216,   218,   228,   232,   234,   273,    75,
    4041      101,   301,   302,   303,   301,   301,    65,    67,    68,    69,
    4042      130,   131,   262,   263,   283,   284,    67,    68,   263,   101,
    4043      294,    11,   190,   101,   111,   308,   313,   314,   315,   317,
    4044      318,   319,   104,   126,   103,   209,   216,   218,   312,   316,
    4045      355,   356,   359,   360,   127,   123,   266,   106,   127,   164,
    4046       67,    68,   129,   261,   127,   127,   127,   108,   127,    67,
    4047       68,   101,   111,   298,   307,   308,   309,   310,   311,   312,
    4048      316,   320,   321,   322,   323,   324,   330,     3,    27,    71,
    4049      230,     3,     5,    67,   103,   111,   208,   219,   223,   226,
    4050      235,   274,   312,   316,   359,   206,   208,   218,   228,   232,
    4051      234,   273,   312,   316,    32,   224,   224,   219,   226,   127,
    4052      224,   219,   224,   219,    68,   101,   106,   263,   274,   106,
    4053      263,   224,   219,   108,   127,   127,     0,   126,   101,   164,
    4054      301,   301,   126,   103,   216,   218,   357,   261,   261,   218,
    4055      123,   101,   111,   298,   308,   312,   103,   111,   359,   295,
    4056      221,   303,   101,   279,   101,   101,    49,   101,    36,    38,
    4057       59,    65,    69,    72,    73,    74,    75,    79,    80,    87,
    4058      101,   103,   110,   111,   112,   113,   114,   115,   128,   132,
    4059      133,   134,   135,   140,   141,   142,   143,   144,   145,   146,
    4060      147,   148,   149,   150,   151,   152,   153,   155,   157,   216,
    4061      265,   281,   355,   360,   218,   102,   102,   102,   102,   102,
    4062      102,   102,    67,    68,   103,   216,   261,   339,   357,   103,
    4063      111,   155,   208,   209,   215,   218,   222,   223,   228,   231,
    4064      232,   234,   251,   252,   256,   257,   258,   259,   273,   339,
    4065      351,   352,   353,   354,   359,   360,   104,   101,   312,   316,
    4066      359,   101,   108,   124,   103,   106,   111,   155,   267,   107,
    4067      126,   108,   124,   101,   108,   124,   108,   124,   108,   124,
    4068      301,   124,   308,   309,   310,   311,   321,   322,   323,   324,
    4069      218,   307,   320,    57,   300,   103,   301,   338,   339,   301,
    4070      301,   164,   126,   101,   301,   338,   301,   301,   218,   298,
    4071      101,   101,   217,   218,   216,   218,   104,   126,   216,   355,
    4072      360,   164,   126,   261,   266,   208,   223,   312,   316,   164,
    4073      126,   283,   218,   228,   124,   218,   218,   281,    38,   103,
    4074      216,   238,   239,   240,   241,   355,   359,   106,   247,   263,
    4075      106,   218,   283,   124,   124,   294,   126,   131,   260,     3,
    4076      127,   198,   199,   213,   215,   218,   126,   300,   101,   300,
    4077      155,   308,   218,   101,   126,   261,   106,    32,    33,    34,
    4078      216,   275,   276,   278,   126,   121,   123,   280,   126,   219,
    4079      225,   226,   261,   304,   305,   306,   101,   133,   101,   140,
    4080      140,   142,   101,   140,   101,   101,   140,   140,   131,   103,
    4081      155,   160,   164,   216,   264,   355,   104,   126,   142,   142,
    4082       75,    78,    79,    80,   101,   103,   105,    90,    91,    92,
    4083       93,    94,    95,    96,    97,    98,    99,   123,   159,   142,
    4084      111,   116,   117,   113,   114,    81,    82,    83,    84,   118,
    4085      119,    85,    86,   112,   120,   121,    87,    88,   122,   123,
    4086      362,   101,   111,   334,   335,   336,   337,   338,   102,   108,
    4087      101,   338,   339,   101,   338,   339,   126,   101,   216,   357,
    4088      104,   126,   103,   111,   127,   216,   218,   350,   351,   359,
    4089      360,   127,   101,   103,   111,   308,   325,   326,   327,   328,
    4090      329,   330,   331,   332,   333,   339,   340,   341,   342,   343,
    4091      344,   345,   111,   359,   218,   127,   127,   111,   216,   218,
    4092      352,   261,   216,   339,   352,   261,   101,   126,   126,   126,
    4093      104,   126,    65,    73,   103,   105,   263,   267,   268,   269,
    4094      270,   271,   126,   126,   126,   126,   126,   126,   298,   102,
    4095      102,   102,   102,   102,   102,   102,   307,   320,   101,   266,
    4096      104,   198,   126,   298,   160,   265,   160,   265,   298,   103,
    4097      198,   300,   164,   126,   198,   102,   240,   241,   104,   126,
    4098      101,   109,   111,   242,   244,   307,   308,   320,   338,   346,
    4099      347,   348,   349,   107,   239,   108,   124,   108,   124,   263,
    4100      238,   108,   361,   123,   248,   247,   218,   253,   254,   255,
    4101      258,   259,   102,   108,   164,   126,   111,   155,   126,   215,
    4102      218,   252,   351,   359,   292,   293,   101,   111,   325,   102,
    4103      108,   362,   263,   275,   101,   106,   263,   265,   275,   102,
    4104      108,   101,   133,   102,   109,   264,   264,   103,   131,   137,
    4105      155,   265,   264,   104,   126,   102,   108,   102,   101,   111,
    4106      346,   102,   108,   155,   103,   131,   103,   136,   137,   126,
    4107      103,   131,   155,   155,   142,   142,   142,   143,   143,   144,
    4108      144,   145,   145,   145,   145,   146,   146,   147,   148,   149,
    4109      150,   151,   109,   160,   155,   126,   335,   336,   337,   218,
    4110      334,   301,   301,   155,   265,   126,   260,   111,   126,   216,
    4111      339,   352,   218,   222,   104,   126,   104,   359,   104,   101,
    4112      126,   308,   326,   327,   328,   331,   341,   342,   343,   104,
    4113      126,   218,   325,   329,   340,   101,   301,   344,   362,   301,
    4114      301,   362,   101,   301,   344,   301,   301,   301,   301,   339,
    4115      216,   350,   360,   261,   104,   108,   104,   108,   362,   216,
    4116      352,   362,   249,   250,   251,   252,   249,   249,   261,   155,
    4117      126,   103,   263,   109,   108,   361,   267,    73,   103,   109,
    4118      271,    28,   200,   201,   261,   249,   131,   298,   131,   300,
    4119      101,   338,   339,   101,   338,   339,   133,   339,   164,   253,
    4120      102,   102,   102,   102,   104,   164,   198,   164,   106,   124,
    4121      124,   103,   308,   347,   348,   349,   153,   154,   218,   346,
    4122      243,   244,   243,   301,   301,   263,   301,   107,   263,   107,
    4123      154,   361,   127,   127,   131,   213,   127,   127,   249,   101,
    4124      111,   359,   127,   107,   218,   276,   277,   127,   126,   126,
    4125      101,   127,   102,   305,   160,   161,   109,   124,   103,   133,
    4126      191,   192,   193,   102,   102,   126,   109,   102,   102,   102,
    4127      155,   218,   106,   142,   157,   155,   156,   158,   108,   127,
    4128      126,   126,   102,   108,   155,   126,   153,   109,   253,   102,
    4129      102,   102,   334,   253,   102,   249,   216,   352,   103,   111,
    4130      155,   155,   218,   331,   253,   102,   102,   102,   102,   102,
    4131      102,   102,     7,   218,   325,   329,   340,   126,   126,   362,
    4132      126,   126,   102,   127,   127,   127,   127,   266,   127,   153,
    4133      154,   155,   299,   126,   267,   269,   107,   126,   202,   263,
    4134       38,    39,    41,    44,    45,    46,    47,    48,    49,    50,
    4135       51,    53,    56,   103,   131,   161,   162,   163,   164,   165,
    4136      166,   168,   169,   181,   183,   184,   189,   203,   297,    28,
    4137      127,   123,   266,   126,   126,   102,   127,   164,   238,   104,
    4138      102,   102,   102,   346,   242,   248,   107,   102,   108,   104,
    4139      104,   127,   218,   108,   362,   279,   102,   275,   206,   208,
    4140      216,   287,   288,   289,   290,   281,   102,   102,   109,   154,
    4141      101,   102,   109,   108,   155,   155,   268,   108,   127,   158,
    4142      104,   131,   138,   139,   155,   137,   127,   138,   153,   157,
    4143      127,   101,   338,   339,   127,   127,   126,   127,   127,   127,
    4144      155,   102,   127,   101,   338,   339,   101,   344,   101,   344,
    4145      339,   217,     7,   111,   127,   155,   253,   253,   252,   256,
    4146      256,   257,   108,   108,   102,   102,   104,    89,   115,   127,
    4147      127,   138,   267,   155,   108,   124,   203,   207,   218,   222,
    4148      101,   101,   162,   101,   101,   124,   131,   124,   131,   111,
    4149      131,   161,   101,   164,   124,   155,   104,   109,   124,   127,
    4150      126,   127,   202,   102,   155,   253,   253,   301,   102,   107,
    4151      101,   338,   339,   126,   102,   126,   127,   298,   107,   126,
    4152      127,   127,   102,   106,   191,   104,   154,   124,   191,   193,
    4153      108,   127,   361,   156,   104,   127,    78,   105,   108,   127,
    4154      127,   104,   127,   102,   126,   102,   102,   104,   104,   104,
    4155      127,   102,   126,   126,   126,   155,   155,   127,   104,   127,
    4156      127,   127,   127,   126,   126,   154,   154,   104,   104,   127,
    4157      127,   263,   218,   160,   160,    45,   160,   126,   124,   124,
    4158      160,   124,   124,   160,    54,    55,   185,   186,   187,   124,
    4159      301,   166,   107,   124,   127,   127,   126,    89,   258,   259,
    4160      102,   288,   108,   124,   108,   124,   107,   286,   109,   133,
    4161      102,   102,   109,   158,   104,   107,   104,   103,   139,   103,
    4162      139,   139,   104,   104,   104,   253,   104,   253,   253,   253,
    4163      127,   127,   104,   104,   102,   102,   104,   108,    89,   252,
    4164       89,   127,   104,   104,   102,   102,   101,   102,   161,   182,
    4165      203,   124,   102,   101,   164,   187,    54,   162,   102,   102,
    4166      253,   106,   126,   126,   287,   133,   194,   101,   124,   194,
    4167      127,   109,   126,   126,   127,   127,   127,   127,   104,   104,
    4168      126,   127,   104,   162,    42,    43,   106,   172,   173,   174,
    4169      160,   162,   127,   102,   161,   106,   174,    89,   126,   101,
    4170      127,   126,   261,   298,   107,   108,   109,   154,   102,   104,
    4171      155,   138,   138,   102,   102,   102,   102,   256,    40,   154,
    4172      170,   171,   299,   109,   126,   162,   172,   102,   124,   162,
    4173      124,   126,   102,   126,    89,   126,   102,   287,   133,   131,
    4174      195,   102,   124,   109,   127,   127,   162,    89,   108,   109,
    4175      127,   196,   197,   203,   124,   161,   161,   196,   164,   188,
    4176      216,   355,   102,   126,   107,   102,   108,   155,   104,   104,
    4177      154,   170,   173,   175,   176,   126,   124,   173,   177,   178,
    4178      127,   101,   111,   298,   346,   131,   164,   188,   101,   124,
    4179      131,   162,   167,   107,   173,   203,   161,    52,   167,   180,
    4180      107,   173,   102,   218,   127,   281,   162,   167,   124,   179,
    4181      180,   167,   180,   164,   102,   102,   179,   127,   164,   127
     4227      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
     4228      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
     4229      76,    83,    84,    94,   109,   111,   118,   119,   137,   140,
     4230     149,   198,   212,   213,   214,   215,   216,   217,   218,   219,
     4231     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
     4232     231,   232,   233,   234,   235,   236,   237,   238,   240,   241,
     4233     242,   243,   244,   245,   247,   255,   256,   283,   284,   285,
     4234     293,   296,   302,   303,   305,   307,   308,   314,   319,   323,
     4235     324,   325,   326,   327,   328,   329,   330,   350,   367,   368,
     4236     369,   370,    72,   139,   140,   149,   215,   217,   225,   227,
     4237     237,   241,   243,   284,    82,   109,   312,   313,   314,   312,
     4238     312,    72,    74,    75,    76,   138,   139,   273,   274,   294,
     4239     295,    74,    75,   274,   109,   305,    11,   199,   109,   149,
     4240     319,   324,   325,   326,   328,   329,   330,   112,   134,   111,
     4241     218,   225,   227,   323,   327,   366,   367,   370,   371,   135,
     4242     107,   131,   277,   114,   135,   173,    74,    75,   137,   272,
     4243     135,   135,   135,   116,   135,    74,    75,   109,   149,   309,
     4244     318,   319,   320,   321,   322,   323,   327,   331,   332,   333,
     4245     334,   335,   341,     3,    28,    78,   239,     3,     5,    74,
     4246     111,   149,   217,   228,   232,   235,   244,   285,   323,   327,
     4247     370,   215,   217,   227,   237,   241,   243,   284,   323,   327,
     4248      33,   233,   233,   228,   235,   135,   233,   228,   233,   228,
     4249      75,   109,   114,   274,   285,   114,   274,   233,   228,   116,
     4250     135,   135,     0,   134,   109,   173,   312,   312,   134,   111,
     4251     225,   227,   368,   272,   272,   131,   227,   109,   149,   309,
     4252     319,   323,   111,   149,   370,   306,   230,   314,   109,   290,
     4253     109,   109,    51,   109,    37,    38,    40,    66,    72,    76,
     4254      79,    80,    81,    82,    86,    87,   109,   111,   120,   121,
     4255     122,   123,   136,   140,   141,   142,   143,   148,   149,   150,
     4256     151,   152,   153,   154,   155,   156,   157,   158,   159,   160,
     4257     161,   162,   164,   166,   225,   276,   292,   366,   371,   227,
     4258     110,   110,   110,   110,   110,   110,   110,    74,    75,   111,
     4259     225,   272,   350,   368,   111,   118,   149,   164,   217,   218,
     4260     224,   227,   231,   232,   237,   240,   241,   243,   262,   263,
     4261     267,   268,   269,   270,   284,   350,   362,   363,   364,   365,
     4262     370,   371,   112,   109,   323,   327,   370,   109,   116,   132,
     4263     111,   114,   149,   164,   278,   278,   115,   134,   116,   132,
     4264     109,   116,   132,   116,   132,   116,   132,   312,   132,   319,
     4265     320,   321,   322,   332,   333,   334,   335,   227,   318,   331,
     4266      64,   311,   111,   312,   349,   350,   312,   312,   173,   134,
     4267     109,   312,   349,   312,   312,   227,   309,   109,   109,   226,
     4268     227,   225,   227,   112,   134,   225,   366,   371,   173,   134,
     4269     272,   277,   217,   232,   323,   327,   173,   134,   294,   227,
     4270     237,   132,   227,   227,   292,   248,   246,   258,   274,   257,
     4271     227,   294,   132,   132,   305,   134,   139,   271,     3,   135,
     4272     207,   208,   222,   224,   227,   134,   311,   109,   311,   164,
     4273     319,   227,   109,   134,   272,   114,    33,    34,    35,   225,
     4274     286,   287,   289,   134,   129,   131,   291,   134,   228,   234,
     4275     235,   272,   315,   316,   317,   109,   141,   109,   148,   109,
     4276     148,   151,   109,   148,   109,   109,   148,   148,   111,   164,
     4277     169,   173,   225,   275,   366,   370,   112,   134,    82,    85,
     4278      86,    87,   109,   111,   113,   114,    97,    98,    99,   100,
     4279     101,   102,   103,   104,   105,   106,   131,   168,   151,   151,
     4280     118,   124,   125,   120,   121,    88,    89,    90,    91,   126,
     4281     127,    92,    93,   119,   128,   129,    94,    95,   130,   131,
     4282     373,   109,   149,   345,   346,   347,   348,   349,   110,   116,
     4283     109,   349,   350,   109,   349,   350,   134,   109,   225,   368,
     4284     112,   134,   135,   111,   225,   227,   361,   362,   370,   371,
     4285     135,   109,   111,   149,   319,   336,   337,   338,   339,   340,
     4286     341,   342,   343,   344,   350,   351,   352,   353,   354,   355,
     4287     356,   149,   370,   227,   135,   135,   149,   225,   227,   363,
     4288     272,   225,   350,   363,   272,   109,   134,   134,   134,   112,
     4289     134,    72,    80,   111,   113,   140,   274,   278,   279,   280,
     4290     281,   282,   134,   134,   134,   134,   134,   134,   309,   110,
     4291     110,   110,   110,   110,   110,   110,   318,   331,   109,   277,
     4292     112,   207,   134,   309,   169,   276,   169,   276,   309,   111,
     4293     207,   311,   173,   134,   207,   110,    40,   111,   115,   225,
     4294     249,   250,   251,   366,   114,   116,   372,   131,   259,   114,
     4295     227,   264,   265,   266,   269,   270,   110,   116,   173,   134,
     4296     118,   164,   134,   224,   227,   263,   362,   370,   303,   304,
     4297     109,   149,   336,   110,   116,   373,   274,   286,   109,   114,
     4298     274,   276,   286,   110,   116,   109,   141,   110,   117,   275,
     4299     275,   275,   111,   139,   145,   164,   276,   275,   112,   134,
     4300     110,   116,   110,   109,   149,   349,   357,   358,   359,   360,
     4301     110,   116,   164,   111,   139,   111,   144,   145,   134,   111,
     4302     139,   144,   164,   164,   151,   151,   151,   152,   152,   153,
     4303     153,   154,   154,   154,   154,   155,   155,   156,   157,   158,
     4304     159,   160,   117,   169,   164,   134,   346,   347,   348,   227,
     4305     345,   312,   312,   164,   276,   134,   271,   134,   225,   350,
     4306     363,   227,   231,   112,   112,   134,   370,   112,   109,   134,
     4307     319,   337,   338,   339,   342,   352,   353,   354,   112,   134,
     4308     227,   336,   340,   351,   109,   312,   355,   373,   312,   312,
     4309     373,   109,   312,   355,   312,   312,   312,   312,   350,   225,
     4310     361,   371,   272,   112,   116,   112,   116,   373,   225,   363,
     4311     373,   260,   261,   262,   263,   260,   260,   272,   164,   134,
     4312     111,   274,   117,   116,   372,   278,    80,   111,   117,   282,
     4313      29,   209,   210,   272,   260,   139,   309,   139,   311,   109,
     4314     349,   350,   109,   349,   350,   141,   350,   173,   264,   110,
     4315     110,   110,   110,   112,   173,   207,   173,   114,   250,   251,
     4316     112,   134,   109,   117,   149,   252,   254,   318,   319,   331,
     4317     357,   116,   132,   116,   132,   274,   248,   274,   115,   162,
     4318     163,   258,   135,   135,   139,   222,   135,   135,   260,   109,
     4319     149,   370,   135,   115,   227,   287,   288,   135,   134,   134,
     4320     109,   135,   110,   316,   169,   170,   117,   132,   111,   141,
     4321     200,   201,   202,   110,   116,   110,   134,   117,   110,   110,
     4322     110,   111,   164,   358,   359,   360,   227,   357,   312,   312,
     4323     114,   151,   166,   164,   165,   167,   116,   135,   134,   134,
     4324     110,   116,   164,   134,   115,   162,   117,   264,   110,   110,
     4325     110,   345,   264,   110,   260,   225,   363,   111,   118,   149,
     4326     164,   164,   227,   342,   264,   110,   110,   110,   110,   110,
     4327     110,   110,     7,   227,   336,   340,   351,   134,   134,   373,
     4328     134,   134,   110,   135,   135,   135,   135,   277,   135,   162,
     4329     163,   164,   310,   134,   278,   280,   115,   134,   211,   274,
     4330      40,    41,    43,    46,    47,    48,    49,    50,    51,    52,
     4331      53,    57,    61,    62,    72,   111,   128,   170,   171,   172,
     4332     173,   174,   175,   177,   178,   190,   192,   193,   198,   212,
     4333     308,    29,   135,   131,   277,   134,   134,   110,   135,   173,
     4334     248,   132,   132,   319,   163,   227,   253,   254,   253,   274,
     4335     312,   115,   259,   372,   110,   116,   112,   112,   135,   227,
     4336     116,   373,   290,   110,   286,   215,   217,   225,   298,   299,
     4337     300,   301,   292,   110,   110,   117,   163,   109,   110,   117,
     4338     116,   139,   164,   164,   112,   110,   110,   110,   357,   279,
     4339     116,   135,   167,   112,   139,   146,   147,   164,   145,   135,
     4340     146,   162,   166,   135,   109,   349,   350,   135,   135,   134,
     4341     135,   135,   135,   164,   110,   135,   109,   349,   350,   109,
     4342     355,   109,   355,   350,   226,     7,   118,   135,   164,   264,
     4343     264,   263,   267,   267,   268,   116,   116,   110,   110,   112,
     4344      96,   123,   135,   135,   146,   278,   164,   116,   132,   212,
     4345     216,   227,   231,   109,   109,   171,   109,   109,    72,   132,
     4346      72,   132,    72,   118,   170,   109,   173,   165,   165,   117,
     4347     112,   143,   132,   135,   134,   135,   211,   110,   164,   264,
     4348     264,   312,   110,   115,   252,   115,   134,   110,   134,   135,
     4349     309,   115,   134,   135,   135,   110,   114,   200,   112,   163,
     4350     132,   200,   202,   110,   116,   135,   109,   349,   350,   372,
     4351     165,   112,   135,    85,   113,   116,   135,   135,   112,   135,
     4352     110,   134,   110,   110,   112,   112,   112,   135,   110,   134,
     4353     134,   134,   164,   164,   135,   112,   135,   135,   135,   135,
     4354     134,   134,   163,   163,   112,   112,   135,   135,   274,   227,
     4355     169,   169,    47,   169,   134,   132,   132,   132,   169,   132,
     4356     169,    58,    59,    60,   194,   195,   196,   132,    63,   132,
     4357     312,   114,   175,   115,   132,   135,   135,    96,   269,   270,
     4358     110,   299,   116,   132,   116,   132,   115,   297,   117,   141,
     4359     110,   110,   117,   167,   112,   134,   115,   112,   111,   147,
     4360     111,   147,   147,   112,   112,   112,   264,   112,   264,   264,
     4361     264,   135,   135,   112,   112,   110,   110,   112,   116,    96,
     4362     263,    96,   135,   112,   112,   110,   110,   109,   110,   170,
     4363     191,   212,   132,   110,   109,   109,   173,   196,    58,    59,
     4364     164,   171,   144,   110,   110,   114,   134,   134,   298,   141,
     4365     203,   109,   132,   203,   135,   117,   264,   134,   134,   135,
     4366     135,   135,   135,   112,   112,   134,   135,   112,   171,    44,
     4367      45,   114,   181,   182,   183,   169,   171,   135,   110,   170,
     4368     114,   183,    96,   134,    96,   134,   109,   109,   132,   115,
     4369     134,   272,   309,   115,   116,   117,   163,   110,   112,   164,
     4370     135,   146,   146,   110,   110,   110,   110,   267,    42,   163,
     4371     179,   180,   310,   117,   134,   171,   181,   110,   132,   171,
     4372     132,   134,   110,   134,   110,   134,    96,   134,    96,   134,
     4373     132,   298,   141,   139,   204,   110,   132,   117,   110,   135,
     4374     135,   171,    96,   116,   117,   135,   205,   206,   212,   132,
     4375     170,   170,   205,   173,   197,   225,   366,   173,   197,   110,
     4376     134,   110,   134,   115,   110,   116,   164,   112,   112,   163,
     4377     179,   182,   184,   185,   134,   132,   182,   186,   187,   135,
     4378     109,   149,   309,   357,   139,   135,   173,   197,   173,   197,
     4379     109,   132,   139,   171,   176,   115,   182,   212,   170,    56,
     4380     176,   189,   115,   182,   110,   227,   110,   135,   135,   292,
     4381     171,   176,   132,   188,   189,   176,   189,   173,   173,   110,
     4382     110,   110,   188,   135,   135,   173,   173,   135,   135
    41824383};
    41834384
     
    50165217
    50175218/* Line 1806 of yacc.c  */
    5018 #line 288 "parser.yy"
     5219#line 292 "parser.yy"
    50195220    {
    50205221                        typedefTable.enterScope();
     
    50255226
    50265227/* Line 1806 of yacc.c  */
    5027 #line 294 "parser.yy"
     5228#line 298 "parser.yy"
    50285229    {
    50295230                        typedefTable.leaveScope();
     
    50345235
    50355236/* Line 1806 of yacc.c  */
    5036 #line 303 "parser.yy"
    5037     { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
     5237#line 307 "parser.yy"
     5238    { (yyval.constant) = makeConstantInteger( *(yyvsp[(1) - (1)].tok) ); }
    50385239    break;
    50395240
     
    50415242
    50425243/* Line 1806 of yacc.c  */
    5043 #line 304 "parser.yy"
    5044     { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
     5244#line 308 "parser.yy"
     5245    { (yyval.constant) = makeConstantFloat( *(yyvsp[(1) - (1)].tok) ); }
    50455246    break;
    50465247
     
    50485249
    50495250/* Line 1806 of yacc.c  */
    5050 #line 305 "parser.yy"
    5051     { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    5052     break;
    5053 
    5054   case 15:
    5055 
    5056 /* Line 1806 of yacc.c  */
    5057 #line 329 "parser.yy"
    5058     { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
     5251#line 309 "parser.yy"
     5252    { (yyval.constant) = makeConstantChar( *(yyvsp[(1) - (1)].tok) ); }
    50595253    break;
    50605254
     
    50625256
    50635257/* Line 1806 of yacc.c  */
    5064 #line 330 "parser.yy"
     5258#line 334 "parser.yy"
     5259    { (yyval.constant) = makeConstantStr( *(yyvsp[(1) - (1)].tok) ); }
     5260    break;
     5261
     5262  case 17:
     5263
     5264/* Line 1806 of yacc.c  */
     5265#line 335 "parser.yy"
    50655266    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    50665267    break;
    50675268
    5068   case 17:
    5069 
    5070 /* Line 1806 of yacc.c  */
    5071 #line 337 "parser.yy"
     5269  case 18:
     5270
     5271/* Line 1806 of yacc.c  */
     5272#line 342 "parser.yy"
    50725273    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50735274    break;
    50745275
    5075   case 18:
    5076 
    5077 /* Line 1806 of yacc.c  */
    5078 #line 339 "parser.yy"
     5276  case 19:
     5277
     5278/* Line 1806 of yacc.c  */
     5279#line 344 "parser.yy"
    50795280    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50805281    break;
    50815282
    5082   case 19:
    5083 
    5084 /* Line 1806 of yacc.c  */
    5085 #line 341 "parser.yy"
     5283  case 20:
     5284
     5285/* Line 1806 of yacc.c  */
     5286#line 346 "parser.yy"
    50865287    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    50875288    break;
    50885289
    5089   case 20:
    5090 
    5091 /* Line 1806 of yacc.c  */
    5092 #line 343 "parser.yy"
     5290  case 21:
     5291
     5292/* Line 1806 of yacc.c  */
     5293#line 348 "parser.yy"
    50935294    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    50945295    break;
    50955296
    5096   case 22:
    5097 
    5098 /* Line 1806 of yacc.c  */
    5099 #line 353 "parser.yy"
    5100     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
    5101     break;
    5102 
    51035297  case 23:
    51045298
    51055299/* Line 1806 of yacc.c  */
    5106 #line 355 "parser.yy"
     5300#line 358 "parser.yy"
     5301    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
     5302    break;
     5303
     5304  case 24:
     5305
     5306/* Line 1806 of yacc.c  */
     5307#line 360 "parser.yy"
    51075308    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    51085309    break;
    51095310
    5110   case 24:
    5111 
    5112 /* Line 1806 of yacc.c  */
    5113 #line 357 "parser.yy"
    5114     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    5115     break;
    5116 
    5117   case 26:
    5118 
    5119 /* Line 1806 of yacc.c  */
    5120 #line 360 "parser.yy"
    5121     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    5122     break;
    5123 
    5124   case 28:
    5125 
    5126 /* Line 1806 of yacc.c  */
    5127 #line 363 "parser.yy"
    5128     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
     5311  case 25:
     5312
     5313/* Line 1806 of yacc.c  */
     5314#line 364 "parser.yy"
     5315    { (yyval.en) = new CompositeExprNode2( build_fieldSel( (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) ) ) ); }
     5316    break;
     5317
     5318  case 27:
     5319
     5320/* Line 1806 of yacc.c  */
     5321#line 367 "parser.yy"
     5322    { (yyval.en) = new CompositeExprNode2( build_pfieldSel( (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) ) ) ); }
    51295323    break;
    51305324
     
    51325326
    51335327/* Line 1806 of yacc.c  */
    5134 #line 365 "parser.yy"
    5135     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
     5328#line 370 "parser.yy"
     5329    { (yyval.en) = new CompositeExprNode2( build_opr1( OperatorNode::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    51365330    break;
    51375331
     
    51395333
    51405334/* Line 1806 of yacc.c  */
    5141 #line 368 "parser.yy"
     5335#line 372 "parser.yy"
     5336    { (yyval.en) = new CompositeExprNode2( build_opr1( OperatorNode::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
     5337    break;
     5338
     5339  case 31:
     5340
     5341/* Line 1806 of yacc.c  */
     5342#line 374 "parser.yy"
     5343    { (yyval.en) = new CompoundLiteralNode( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ); }
     5344    break;
     5345
     5346  case 32:
     5347
     5348/* Line 1806 of yacc.c  */
     5349#line 376 "parser.yy"
     5350    {
     5351                        Token fn; fn.str = new std::string( "?{}" ); // location undefined
     5352                        (yyval.en) = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_link( (yyvsp[(3) - (4)].en) ) );
     5353                }
     5354    break;
     5355
     5356  case 34:
     5357
     5358/* Line 1806 of yacc.c  */
     5359#line 385 "parser.yy"
     5360    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     5361    break;
     5362
     5363  case 35:
     5364
     5365/* Line 1806 of yacc.c  */
     5366#line 390 "parser.yy"
    51425367    { (yyval.en) = 0; }
    51435368    break;
    51445369
    5145   case 32:
    5146 
    5147 /* Line 1806 of yacc.c  */
    5148 #line 374 "parser.yy"
    5149     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    5150     break;
    5151 
    5152   case 33:
    5153 
    5154 /* Line 1806 of yacc.c  */
    5155 #line 379 "parser.yy"
     5370  case 37:
     5371
     5372/* Line 1806 of yacc.c  */
     5373#line 393 "parser.yy"
     5374    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
     5375    break;
     5376
     5377  case 38:
     5378
     5379/* Line 1806 of yacc.c  */
     5380#line 398 "parser.yy"
     5381    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
     5382    break;
     5383
     5384  case 39:
     5385
     5386/* Line 1806 of yacc.c  */
     5387#line 400 "parser.yy"
     5388    { (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) )))); }
     5389    break;
     5390
     5391  case 41:
     5392
     5393/* Line 1806 of yacc.c  */
     5394#line 405 "parser.yy"
     5395    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5396    break;
     5397
     5398  case 42:
     5399
     5400/* Line 1806 of yacc.c  */
     5401#line 410 "parser.yy"
     5402    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
     5403    break;
     5404
     5405  case 43:
     5406
     5407/* Line 1806 of yacc.c  */
     5408#line 414 "parser.yy"
     5409    { (yyval.en) = new CompositeExprNode2( build_fieldSel( (yyvsp[(3) - (3)].en), new VarRefNode( (yyvsp[(1) - (3)].tok) ) ) ); }
     5410    break;
     5411
     5412  case 44:
     5413
     5414/* Line 1806 of yacc.c  */
     5415#line 416 "parser.yy"
     5416    { (yyval.en) = new CompositeExprNode2( build_fieldSel( (yyvsp[(5) - (7)].en), new VarRefNode( (yyvsp[(1) - (7)].tok) ) ) ); }
     5417    break;
     5418
     5419  case 45:
     5420
     5421/* Line 1806 of yacc.c  */
     5422#line 418 "parser.yy"
     5423    { (yyval.en) = new CompositeExprNode2( build_pfieldSel( (yyvsp[(3) - (3)].en), new VarRefNode( (yyvsp[(1) - (3)].tok) ) ) ); }
     5424    break;
     5425
     5426  case 46:
     5427
     5428/* Line 1806 of yacc.c  */
     5429#line 420 "parser.yy"
     5430    { (yyval.en) = new CompositeExprNode2( build_pfieldSel( (yyvsp[(5) - (7)].en), new VarRefNode( (yyvsp[(1) - (7)].tok) ) ) ); }
     5431    break;
     5432
     5433  case 48:
     5434
     5435/* Line 1806 of yacc.c  */
     5436#line 428 "parser.yy"
     5437    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     5438    break;
     5439
     5440  case 49:
     5441
     5442/* Line 1806 of yacc.c  */
     5443#line 430 "parser.yy"
     5444    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
     5445    break;
     5446
     5447  case 50:
     5448
     5449/* Line 1806 of yacc.c  */
     5450#line 432 "parser.yy"
     5451    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
     5452    break;
     5453
     5454  case 51:
     5455
     5456/* Line 1806 of yacc.c  */
     5457#line 437 "parser.yy"
     5458    { (yyval.en) = (yyvsp[(1) - (2)].op) == OperatorNode::AddressOf ? (ExpressionNode*) new CompositeExprNode2( build_addressOf( (yyvsp[(2) - (2)].en) ) )
     5459                                                                                        : (ExpressionNode*)new CompositeExprNode( new OperatorNode ( (yyvsp[(1) - (2)].op) ), (yyvsp[(2) - (2)].en) ); }
     5460    break;
     5461
     5462  case 52:
     5463
     5464/* Line 1806 of yacc.c  */
     5465#line 440 "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 442 "parser.yy"
     5473    { (yyval.en) = new CompositeExprNode2( build_opr1( OperatorNode::Incr, (yyvsp[(2) - (2)].en) ) ); }
     5474    break;
     5475
     5476  case 54:
     5477
     5478/* Line 1806 of yacc.c  */
     5479#line 444 "parser.yy"
     5480    { (yyval.en) = new CompositeExprNode2( build_opr1( OperatorNode::Decr, (yyvsp[(2) - (2)].en) ) ); }
     5481    break;
     5482
     5483  case 55:
     5484
     5485/* Line 1806 of yacc.c  */
     5486#line 446 "parser.yy"
     5487    { (yyval.en) = new CompositeExprNode2( build_sizeOf( (yyvsp[(2) - (2)].en) ) ); }
     5488    break;
     5489
     5490  case 56:
     5491
     5492/* Line 1806 of yacc.c  */
     5493#line 448 "parser.yy"
     5494    { (yyval.en) = new CompositeExprNode2( build_sizeOf( new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ) ); }
     5495    break;
     5496
     5497  case 57:
     5498
     5499/* Line 1806 of yacc.c  */
     5500#line 450 "parser.yy"
     5501    { (yyval.en) = new CompositeExprNode2( build_offsetOf( new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) ) ) ); }
     5502    break;
     5503
     5504  case 58:
     5505
     5506/* Line 1806 of yacc.c  */
     5507#line 452 "parser.yy"
     5508    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
     5509    break;
     5510
     5511  case 59:
     5512
     5513/* Line 1806 of yacc.c  */
     5514#line 454 "parser.yy"
     5515    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); }
     5516    break;
     5517
     5518  case 60:
     5519
     5520/* Line 1806 of yacc.c  */
     5521#line 456 "parser.yy"
     5522    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
     5523    break;
     5524
     5525  case 61:
     5526
     5527/* Line 1806 of yacc.c  */
     5528#line 458 "parser.yy"
     5529    { (yyval.en) = new CompositeExprNode2( build_alignOf( (yyvsp[(2) - (2)].en) ) ); }
     5530    break;
     5531
     5532  case 62:
     5533
     5534/* Line 1806 of yacc.c  */
     5535#line 460 "parser.yy"
     5536    { (yyval.en) = new CompositeExprNode2( build_alignOf( new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ) ); }
     5537    break;
     5538
     5539  case 63:
     5540
     5541/* Line 1806 of yacc.c  */
     5542#line 466 "parser.yy"
     5543    { (yyval.op) = OperatorNode::PointTo; }
     5544    break;
     5545
     5546  case 64:
     5547
     5548/* Line 1806 of yacc.c  */
     5549#line 467 "parser.yy"
     5550    { (yyval.op) = OperatorNode::AddressOf; }
     5551    break;
     5552
     5553  case 65:
     5554
     5555/* Line 1806 of yacc.c  */
     5556#line 469 "parser.yy"
     5557    { (yyval.op) = OperatorNode::And; }
     5558    break;
     5559
     5560  case 66:
     5561
     5562/* Line 1806 of yacc.c  */
     5563#line 473 "parser.yy"
     5564    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
     5565    break;
     5566
     5567  case 67:
     5568
     5569/* Line 1806 of yacc.c  */
     5570#line 474 "parser.yy"
     5571    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
     5572    break;
     5573
     5574  case 68:
     5575
     5576/* Line 1806 of yacc.c  */
     5577#line 475 "parser.yy"
     5578    { (yyval.en) = new OperatorNode( OperatorNode::Neg ); }
     5579    break;
     5580
     5581  case 69:
     5582
     5583/* Line 1806 of yacc.c  */
     5584#line 476 "parser.yy"
     5585    { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
     5586    break;
     5587
     5588  case 71:
     5589
     5590/* Line 1806 of yacc.c  */
     5591#line 482 "parser.yy"
     5592    { (yyval.en) = new CompositeExprNode2( build_cast( new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ) ); }
     5593    break;
     5594
     5595  case 72:
     5596
     5597/* Line 1806 of yacc.c  */
     5598#line 484 "parser.yy"
     5599    { (yyval.en) = new CompositeExprNode2( build_cast( new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ) ); }
     5600    break;
     5601
     5602  case 74:
     5603
     5604/* Line 1806 of yacc.c  */
     5605#line 490 "parser.yy"
     5606    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5607    break;
     5608
     5609  case 75:
     5610
     5611/* Line 1806 of yacc.c  */
     5612#line 492 "parser.yy"
     5613    { (yyval.en) = new CompositeExprNode2( build_opr2( 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 494 "parser.yy"
     5620    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5621    break;
     5622
     5623  case 78:
     5624
     5625/* Line 1806 of yacc.c  */
     5626#line 500 "parser.yy"
     5627    { (yyval.en) = new CompositeExprNode2( build_opr2( 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 502 "parser.yy"
     5634    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5635    break;
     5636
     5637  case 81:
     5638
     5639/* Line 1806 of yacc.c  */
     5640#line 508 "parser.yy"
     5641    { (yyval.en) = new CompositeExprNode2( build_opr2( 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 510 "parser.yy"
     5648    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5649    break;
     5650
     5651  case 84:
     5652
     5653/* Line 1806 of yacc.c  */
     5654#line 516 "parser.yy"
     5655    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5656    break;
     5657
     5658  case 85:
     5659
     5660/* Line 1806 of yacc.c  */
     5661#line 518 "parser.yy"
     5662    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5663    break;
     5664
     5665  case 86:
     5666
     5667/* Line 1806 of yacc.c  */
     5668#line 520 "parser.yy"
     5669    { (yyval.en) = new CompositeExprNode2( build_opr2( 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 522 "parser.yy"
     5676    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5677    break;
     5678
     5679  case 89:
     5680
     5681/* Line 1806 of yacc.c  */
     5682#line 528 "parser.yy"
     5683    { (yyval.en) = new CompositeExprNode2( build_opr2( 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 530 "parser.yy"
     5690    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5691    break;
     5692
     5693  case 92:
     5694
     5695/* Line 1806 of yacc.c  */
     5696#line 536 "parser.yy"
     5697    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5698    break;
     5699
     5700  case 94:
     5701
     5702/* Line 1806 of yacc.c  */
     5703#line 542 "parser.yy"
     5704    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5705    break;
     5706
     5707  case 96:
     5708
     5709/* Line 1806 of yacc.c  */
     5710#line 548 "parser.yy"
     5711    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5712    break;
     5713
     5714  case 98:
     5715
     5716/* Line 1806 of yacc.c  */
     5717#line 554 "parser.yy"
     5718    { (yyval.en) = new CompositeExprNode2( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
     5719    break;
     5720
     5721  case 100:
     5722
     5723/* Line 1806 of yacc.c  */
     5724#line 560 "parser.yy"
     5725    { (yyval.en) = new CompositeExprNode2( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
     5726    break;
     5727
     5728  case 102:
     5729
     5730/* Line 1806 of yacc.c  */
     5731#line 567 "parser.yy"
     5732    { (yyval.en) = new CompositeExprNode2( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     5733    break;
     5734
     5735  case 103:
     5736
     5737/* Line 1806 of yacc.c  */
     5738#line 569 "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 571 "parser.yy"
     5746    { (yyval.en) = new CompositeExprNode2( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
     5747    break;
     5748
     5749  case 107:
     5750
     5751/* Line 1806 of yacc.c  */
     5752#line 582 "parser.yy"
     5753    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5754    break;
     5755
     5756  case 108:
     5757
     5758/* Line 1806 of yacc.c  */
     5759#line 584 "parser.yy"
     5760    { (yyval.en) = new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
     5761    break;
     5762
     5763  case 109:
     5764
     5765/* Line 1806 of yacc.c  */
     5766#line 586 "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 591 "parser.yy"
     5774    { (yyval.en) = new NullExprNode; }
     5775    break;
     5776
     5777  case 112:
     5778
     5779/* Line 1806 of yacc.c  */
     5780#line 599 "parser.yy"
     5781    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
     5782    break;
     5783
     5784  case 113:
     5785
     5786/* Line 1806 of yacc.c  */
     5787#line 601 "parser.yy"
     5788    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
     5789    break;
     5790
     5791  case 114:
     5792
     5793/* Line 1806 of yacc.c  */
     5794#line 603 "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 605 "parser.yy"
     5802    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
     5803    break;
     5804
     5805  case 117:
     5806
     5807/* Line 1806 of yacc.c  */
     5808#line 611 "parser.yy"
     5809    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     5810    break;
     5811
     5812  case 118:
     5813
     5814/* Line 1806 of yacc.c  */
     5815#line 615 "parser.yy"
     5816    { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
     5817    break;
     5818
     5819  case 119:
     5820
     5821/* Line 1806 of yacc.c  */
     5822#line 616 "parser.yy"
     5823    { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
     5824    break;
     5825
     5826  case 120:
     5827
     5828/* Line 1806 of yacc.c  */
     5829#line 617 "parser.yy"
     5830    { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
     5831    break;
     5832
     5833  case 121:
     5834
     5835/* Line 1806 of yacc.c  */
     5836#line 618 "parser.yy"
     5837    { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
     5838    break;
     5839
     5840  case 122:
     5841
     5842/* Line 1806 of yacc.c  */
     5843#line 619 "parser.yy"
     5844    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
     5845    break;
     5846
     5847  case 123:
     5848
     5849/* Line 1806 of yacc.c  */
     5850#line 620 "parser.yy"
     5851    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
     5852    break;
     5853
     5854  case 124:
     5855
     5856/* Line 1806 of yacc.c  */
     5857#line 621 "parser.yy"
     5858    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
     5859    break;
     5860
     5861  case 125:
     5862
     5863/* Line 1806 of yacc.c  */
     5864#line 622 "parser.yy"
     5865    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
     5866    break;
     5867
     5868  case 126:
     5869
     5870/* Line 1806 of yacc.c  */
     5871#line 623 "parser.yy"
     5872    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
     5873    break;
     5874
     5875  case 127:
     5876
     5877/* Line 1806 of yacc.c  */
     5878#line 624 "parser.yy"
     5879    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
     5880    break;
     5881
     5882  case 129:
     5883
     5884/* Line 1806 of yacc.c  */
     5885#line 631 "parser.yy"
     5886    { (yyval.en) = new CompositeExprNode2( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     5887    break;
     5888
     5889  case 130:
     5890
     5891/* Line 1806 of yacc.c  */
     5892#line 636 "parser.yy"
    51565893    { (yyval.en) = 0; }
    51575894    break;
    51585895
    5159   case 35:
    5160 
    5161 /* Line 1806 of yacc.c  */
    5162 #line 382 "parser.yy"
    5163     { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
    5164     break;
    5165 
    5166   case 36:
    5167 
    5168 /* Line 1806 of yacc.c  */
    5169 #line 387 "parser.yy"
    5170     { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
    5171     break;
    5172 
    5173   case 37:
    5174 
    5175 /* Line 1806 of yacc.c  */
    5176 #line 389 "parser.yy"
    5177     { (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) )))); }
    5178     break;
    5179 
    5180   case 39:
    5181 
    5182 /* Line 1806 of yacc.c  */
    5183 #line 394 "parser.yy"
    5184     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5185     break;
    5186 
    5187   case 40:
    5188 
    5189 /* Line 1806 of yacc.c  */
    5190 #line 399 "parser.yy"
    5191     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    5192     break;
    5193 
    5194   case 41:
    5195 
    5196 /* Line 1806 of yacc.c  */
    5197 #line 401 "parser.yy"
    5198     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5199     break;
    5200 
    5201   case 42:
    5202 
    5203 /* Line 1806 of yacc.c  */
    5204 #line 403 "parser.yy"
    5205     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    5206     break;
    5207 
    5208   case 43:
    5209 
    5210 /* Line 1806 of yacc.c  */
    5211 #line 405 "parser.yy"
    5212     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    5213     break;
    5214 
    5215   case 44:
    5216 
    5217 /* Line 1806 of yacc.c  */
    5218 #line 407 "parser.yy"
    5219     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    5220     break;
    5221 
    5222   case 46:
    5223 
    5224 /* Line 1806 of yacc.c  */
    5225 #line 415 "parser.yy"
    5226     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5227     break;
    5228 
    5229   case 47:
    5230 
    5231 /* Line 1806 of yacc.c  */
    5232 #line 417 "parser.yy"
    5233     { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    5234     break;
    5235 
    5236   case 48:
    5237 
    5238 /* Line 1806 of yacc.c  */
    5239 #line 419 "parser.yy"
    5240     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    5241     break;
    5242 
    5243   case 49:
    5244 
    5245 /* Line 1806 of yacc.c  */
    5246 #line 421 "parser.yy"
    5247     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
    5248     break;
    5249 
    5250   case 50:
    5251 
    5252 /* Line 1806 of yacc.c  */
    5253 #line 423 "parser.yy"
    5254     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    5255     break;
    5256 
    5257   case 51:
    5258 
    5259 /* Line 1806 of yacc.c  */
    5260 #line 425 "parser.yy"
    5261     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    5262     break;
    5263 
    5264   case 52:
    5265 
    5266 /* Line 1806 of yacc.c  */
    5267 #line 427 "parser.yy"
    5268     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
    5269     break;
    5270 
    5271   case 53:
    5272 
    5273 /* Line 1806 of yacc.c  */
    5274 #line 429 "parser.yy"
    5275     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
    5276     break;
    5277 
    5278   case 54:
    5279 
    5280 /* Line 1806 of yacc.c  */
    5281 #line 435 "parser.yy"
    5282     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
    5283     break;
    5284 
    5285   case 55:
    5286 
    5287 /* Line 1806 of yacc.c  */
    5288 #line 437 "parser.yy"
    5289     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5290     break;
    5291 
    5292   case 56:
    5293 
    5294 /* Line 1806 of yacc.c  */
    5295 #line 439 "parser.yy"
    5296     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
    5297     break;
    5298 
    5299   case 57:
    5300 
    5301 /* Line 1806 of yacc.c  */
    5302 #line 441 "parser.yy"
    5303     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5304     break;
    5305 
    5306   case 58:
    5307 
    5308 /* Line 1806 of yacc.c  */
    5309 #line 443 "parser.yy"
    5310     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    5311     break;
    5312 
    5313   case 59:
    5314 
    5315 /* Line 1806 of yacc.c  */
    5316 #line 445 "parser.yy"
    5317     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
    5318     break;
    5319 
    5320   case 60:
    5321 
    5322 /* Line 1806 of yacc.c  */
    5323 #line 447 "parser.yy"
    5324     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5325     break;
    5326 
    5327   case 61:
    5328 
    5329 /* Line 1806 of yacc.c  */
    5330 #line 449 "parser.yy"
    5331     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }
    5332     break;
    5333 
    5334   case 62:
    5335 
    5336 /* Line 1806 of yacc.c  */
    5337 #line 453 "parser.yy"
    5338     { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    5339     break;
    5340 
    5341   case 63:
    5342 
    5343 /* Line 1806 of yacc.c  */
    5344 #line 454 "parser.yy"
    5345     { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    5346     break;
    5347 
    5348   case 64:
    5349 
    5350 /* Line 1806 of yacc.c  */
    5351 #line 455 "parser.yy"
    5352     { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    5353     break;
    5354 
    5355   case 65:
    5356 
    5357 /* Line 1806 of yacc.c  */
    5358 #line 456 "parser.yy"
    5359     { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    5360     break;
    5361 
    5362   case 67:
    5363 
    5364 /* Line 1806 of yacc.c  */
    5365 #line 462 "parser.yy"
    5366     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    5367     break;
    5368 
    5369   case 68:
    5370 
    5371 /* Line 1806 of yacc.c  */
    5372 #line 464 "parser.yy"
    5373     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    5374     break;
    5375 
    5376   case 70:
    5377 
    5378 /* Line 1806 of yacc.c  */
    5379 #line 470 "parser.yy"
    5380     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5381     break;
    5382 
    5383   case 71:
    5384 
    5385 /* Line 1806 of yacc.c  */
    5386 #line 472 "parser.yy"
    5387     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5388     break;
    5389 
    5390   case 72:
    5391 
    5392 /* Line 1806 of yacc.c  */
    5393 #line 474 "parser.yy"
    5394     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5395     break;
    5396 
    5397   case 74:
    5398 
    5399 /* Line 1806 of yacc.c  */
    5400 #line 480 "parser.yy"
    5401     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5402     break;
    5403 
    5404   case 75:
    5405 
    5406 /* Line 1806 of yacc.c  */
    5407 #line 482 "parser.yy"
    5408     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5409     break;
    5410 
    5411   case 77:
    5412 
    5413 /* Line 1806 of yacc.c  */
    5414 #line 488 "parser.yy"
    5415     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5416     break;
    5417 
    5418   case 78:
    5419 
    5420 /* Line 1806 of yacc.c  */
    5421 #line 490 "parser.yy"
    5422     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5423     break;
    5424 
    5425   case 80:
    5426 
    5427 /* Line 1806 of yacc.c  */
    5428 #line 496 "parser.yy"
    5429     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5430     break;
    5431 
    5432   case 81:
    5433 
    5434 /* Line 1806 of yacc.c  */
    5435 #line 498 "parser.yy"
    5436     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5437     break;
    5438 
    5439   case 82:
    5440 
    5441 /* Line 1806 of yacc.c  */
    5442 #line 500 "parser.yy"
    5443     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5444     break;
    5445 
    5446   case 83:
    5447 
    5448 /* Line 1806 of yacc.c  */
    5449 #line 502 "parser.yy"
    5450     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5451     break;
    5452 
    5453   case 85:
    5454 
    5455 /* Line 1806 of yacc.c  */
    5456 #line 508 "parser.yy"
    5457     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5458     break;
    5459 
    5460   case 86:
    5461 
    5462 /* Line 1806 of yacc.c  */
    5463 #line 510 "parser.yy"
    5464     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5465     break;
    5466 
    5467   case 88:
    5468 
    5469 /* Line 1806 of yacc.c  */
    5470 #line 516 "parser.yy"
    5471     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5472     break;
    5473 
    5474   case 90:
    5475 
    5476 /* Line 1806 of yacc.c  */
    5477 #line 522 "parser.yy"
    5478     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5479     break;
    5480 
    5481   case 92:
    5482 
    5483 /* Line 1806 of yacc.c  */
    5484 #line 528 "parser.yy"
    5485     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5486     break;
    5487 
    5488   case 94:
    5489 
    5490 /* Line 1806 of yacc.c  */
    5491 #line 534 "parser.yy"
    5492     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5493     break;
    5494 
    5495   case 96:
    5496 
    5497 /* Line 1806 of yacc.c  */
    5498 #line 540 "parser.yy"
    5499     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5500     break;
    5501 
    5502   case 98:
    5503 
    5504 /* Line 1806 of yacc.c  */
    5505 #line 546 "parser.yy"
    5506     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    5507     break;
    5508 
    5509   case 99:
    5510 
    5511 /* Line 1806 of yacc.c  */
    5512 #line 548 "parser.yy"
    5513     { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5514     break;
    5515 
    5516   case 100:
    5517 
    5518 /* Line 1806 of yacc.c  */
    5519 #line 550 "parser.yy"
    5520     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    5521     break;
    5522 
    5523   case 103:
    5524 
    5525 /* Line 1806 of yacc.c  */
    5526 #line 561 "parser.yy"
    5527     { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5528     break;
    5529 
    5530   case 104:
    5531 
    5532 /* Line 1806 of yacc.c  */
    5533 #line 563 "parser.yy"
    5534     { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5535     break;
    5536 
    5537   case 105:
    5538 
    5539 /* Line 1806 of yacc.c  */
    5540 #line 565 "parser.yy"
    5541     { (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) ); }
    5542     break;
    5543 
    5544   case 106:
    5545 
    5546 /* Line 1806 of yacc.c  */
    5547 #line 570 "parser.yy"
    5548     { (yyval.en) = new NullExprNode; }
    5549     break;
    5550 
    5551   case 108:
    5552 
    5553 /* Line 1806 of yacc.c  */
    5554 #line 578 "parser.yy"
    5555     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    5556     break;
    5557 
    5558   case 109:
    5559 
    5560 /* Line 1806 of yacc.c  */
    5561 #line 580 "parser.yy"
    5562     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    5563     break;
    5564 
    5565   case 110:
    5566 
    5567 /* Line 1806 of yacc.c  */
    5568 #line 582 "parser.yy"
    5569     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    5570     break;
    5571 
    5572   case 111:
    5573 
    5574 /* Line 1806 of yacc.c  */
    5575 #line 584 "parser.yy"
    5576     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    5577     break;
    5578 
    5579   case 113:
    5580 
    5581 /* Line 1806 of yacc.c  */
    5582 #line 590 "parser.yy"
    5583     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    5584     break;
    5585 
    5586   case 114:
    5587 
    5588 /* Line 1806 of yacc.c  */
    5589 #line 594 "parser.yy"
    5590     { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    5591     break;
    5592 
    5593   case 115:
    5594 
    5595 /* Line 1806 of yacc.c  */
    5596 #line 595 "parser.yy"
    5597     { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    5598     break;
    5599 
    5600   case 116:
    5601 
    5602 /* Line 1806 of yacc.c  */
    5603 #line 596 "parser.yy"
    5604     { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    5605     break;
    5606 
    5607   case 117:
    5608 
    5609 /* Line 1806 of yacc.c  */
    5610 #line 597 "parser.yy"
    5611     { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    5612     break;
    5613 
    5614   case 118:
    5615 
    5616 /* Line 1806 of yacc.c  */
    5617 #line 598 "parser.yy"
    5618     { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    5619     break;
    5620 
    5621   case 119:
    5622 
    5623 /* Line 1806 of yacc.c  */
    5624 #line 599 "parser.yy"
    5625     { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    5626     break;
    5627 
    5628   case 120:
    5629 
    5630 /* Line 1806 of yacc.c  */
    5631 #line 600 "parser.yy"
    5632     { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    5633     break;
    5634 
    5635   case 121:
    5636 
    5637 /* Line 1806 of yacc.c  */
    5638 #line 601 "parser.yy"
    5639     { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
    5640     break;
    5641 
    5642   case 122:
    5643 
    5644 /* Line 1806 of yacc.c  */
    5645 #line 602 "parser.yy"
    5646     { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    5647     break;
    5648 
    5649   case 123:
    5650 
    5651 /* Line 1806 of yacc.c  */
    5652 #line 603 "parser.yy"
    5653     { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    5654     break;
    5655 
    5656   case 125:
    5657 
    5658 /* Line 1806 of yacc.c  */
    5659 #line 609 "parser.yy"
    5660     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5661     break;
    5662 
    5663   case 126:
    5664 
    5665 /* Line 1806 of yacc.c  */
    5666 #line 614 "parser.yy"
    5667     { (yyval.en) = 0; }
    5668     break;
    5669 
    5670   case 130:
    5671 
    5672 /* Line 1806 of yacc.c  */
    5673 #line 623 "parser.yy"
     5896  case 134:
     5897
     5898/* Line 1806 of yacc.c  */
     5899#line 645 "parser.yy"
    56745900    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56755901    break;
    56765902
    5677   case 136:
    5678 
    5679 /* Line 1806 of yacc.c  */
    5680 #line 633 "parser.yy"
     5903  case 140:
     5904
     5905/* Line 1806 of yacc.c  */
     5906#line 652 "parser.yy"
     5907    {
     5908                        Token fn; fn.str = new std::string( "^?{}" ); // location undefined
     5909                        (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
     5910                                (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_link( (yyvsp[(4) - (6)].en) ) ), 0 );
     5911                }
     5912    break;
     5913
     5914  case 141:
     5915
     5916/* Line 1806 of yacc.c  */
     5917#line 662 "parser.yy"
    56815918    {
    56825919                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56845921    break;
    56855922
    5686   case 137:
    5687 
    5688 /* Line 1806 of yacc.c  */
    5689 #line 640 "parser.yy"
     5923  case 142:
     5924
     5925/* Line 1806 of yacc.c  */
     5926#line 669 "parser.yy"
    56905927    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    56915928    break;
    56925929
    5693   case 138:
    5694 
    5695 /* Line 1806 of yacc.c  */
    5696 #line 647 "parser.yy"
     5930  case 143:
     5931
     5932/* Line 1806 of yacc.c  */
     5933#line 676 "parser.yy"
    56975934    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    56985935    break;
    56995936
    5700   case 140:
    5701 
    5702 /* Line 1806 of yacc.c  */
    5703 #line 653 "parser.yy"
     5937  case 145:
     5938
     5939/* Line 1806 of yacc.c  */
     5940#line 682 "parser.yy"
    57045941    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    57055942    break;
    57065943
    5707   case 141:
    5708 
    5709 /* Line 1806 of yacc.c  */
    5710 #line 658 "parser.yy"
     5944  case 146:
     5945
     5946/* Line 1806 of yacc.c  */
     5947#line 687 "parser.yy"
    57115948    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57125949    break;
    57135950
    5714   case 142:
    5715 
    5716 /* Line 1806 of yacc.c  */
    5717 #line 660 "parser.yy"
    5718     { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
    5719     break;
    5720 
    5721   case 143:
    5722 
    5723 /* Line 1806 of yacc.c  */
    5724 #line 662 "parser.yy"
     5951  case 147:
     5952
     5953/* Line 1806 of yacc.c  */
     5954#line 689 "parser.yy"
     5955    {   // mark all fields in list
     5956                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     5957                                iter->set_extension( true );
     5958                        (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
     5959                }
     5960    break;
     5961
     5962  case 148:
     5963
     5964/* Line 1806 of yacc.c  */
     5965#line 695 "parser.yy"
    57255966    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57265967    break;
    57275968
    5728   case 146:
    5729 
    5730 /* Line 1806 of yacc.c  */
    5731 #line 669 "parser.yy"
     5969  case 151:
     5970
     5971/* Line 1806 of yacc.c  */
     5972#line 702 "parser.yy"
    57325973    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57335974    break;
    57345975
    5735   case 147:
    5736 
    5737 /* Line 1806 of yacc.c  */
    5738 #line 674 "parser.yy"
     5976  case 152:
     5977
     5978/* Line 1806 of yacc.c  */
     5979#line 707 "parser.yy"
    57395980    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    57405981    break;
    57415982
    5742   case 148:
    5743 
    5744 /* Line 1806 of yacc.c  */
    5745 #line 680 "parser.yy"
     5983  case 153:
     5984
     5985/* Line 1806 of yacc.c  */
     5986#line 713 "parser.yy"
    57465987    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57475988    break;
    57485989
    5749   case 149:
    5750 
    5751 /* Line 1806 of yacc.c  */
    5752 #line 682 "parser.yy"
     5990  case 154:
     5991
     5992/* Line 1806 of yacc.c  */
     5993#line 715 "parser.yy"
    57535994    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    57545995    break;
    57555996
    5756   case 150:
    5757 
    5758 /* Line 1806 of yacc.c  */
    5759 #line 684 "parser.yy"
     5997  case 155:
     5998
     5999/* Line 1806 of yacc.c  */
     6000#line 717 "parser.yy"
    57606001    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57616002    break;
    57626003
    5763   case 151:
    5764 
    5765 /* Line 1806 of yacc.c  */
    5766 #line 686 "parser.yy"
    5767     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
    5768     break;
    5769 
    5770   case 152:
    5771 
    5772 /* Line 1806 of yacc.c  */
    5773 #line 691 "parser.yy"
    5774     { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5775     break;
    5776 
    5777   case 153:
    5778 
    5779 /* Line 1806 of yacc.c  */
    5780 #line 693 "parser.yy"
    5781     { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    5782     break;
    5783 
    5784   case 154:
    5785 
    5786 /* Line 1806 of yacc.c  */
    5787 #line 700 "parser.yy"
     6004  case 156:
     6005
     6006/* Line 1806 of yacc.c  */
     6007#line 719 "parser.yy"
     6008    {
     6009                        StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) );
     6010                        // The semantics of the declaration list is changed to include associated initialization, which is performed
     6011                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     6012                        // statement around the switch.  Statements after the initial declaration list can never be executed, and
     6013                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
     6014                        // statement.
     6015                        (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw;
     6016                }
     6017    break;
     6018
     6019  case 157:
     6020
     6021/* Line 1806 of yacc.c  */
     6022#line 729 "parser.yy"
     6023    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     6024    break;
     6025
     6026  case 158:
     6027
     6028/* Line 1806 of yacc.c  */
     6029#line 731 "parser.yy"
     6030    {
     6031                        StatementNode *sw = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) );
     6032                        (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_link( sw )) ) : sw;
     6033                }
     6034    break;
     6035
     6036  case 159:
     6037
     6038/* Line 1806 of yacc.c  */
     6039#line 741 "parser.yy"
    57886040    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57896041    break;
    57906042
    5791   case 155:
    5792 
    5793 /* Line 1806 of yacc.c  */
    5794 #line 702 "parser.yy"
    5795     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    5796     break;
    5797 
    5798   case 158:
    5799 
    5800 /* Line 1806 of yacc.c  */
    5801 #line 709 "parser.yy"
    5802     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
    5803     break;
    5804 
    5805   case 159:
    5806 
    5807 /* Line 1806 of yacc.c  */
    5808 #line 713 "parser.yy"
    5809     { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
    5810     break;
    5811 
    58126043  case 160:
    58136044
    58146045/* Line 1806 of yacc.c  */
    5815 #line 714 "parser.yy"
     6046#line 743 "parser.yy"
     6047    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Range, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     6048    break;
     6049
     6050  case 162:
     6051
     6052/* Line 1806 of yacc.c  */
     6053#line 748 "parser.yy"
     6054    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(1) - (1)].en), 0 ); }
     6055    break;
     6056
     6057  case 163:
     6058
     6059/* Line 1806 of yacc.c  */
     6060#line 750 "parser.yy"
     6061    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_link( new StatementNode( StatementNode::Case, (yyvsp[(3) - (3)].en), 0 ) ) ); }
     6062    break;
     6063
     6064  case 164:
     6065
     6066/* Line 1806 of yacc.c  */
     6067#line 754 "parser.yy"
     6068    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     6069    break;
     6070
     6071  case 165:
     6072
     6073/* Line 1806 of yacc.c  */
     6074#line 755 "parser.yy"
    58166075    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    58176076    break;
    58186077
    5819   case 162:
    5820 
    5821 /* Line 1806 of yacc.c  */
    5822 #line 720 "parser.yy"
     6078  case 167:
     6079
     6080/* Line 1806 of yacc.c  */
     6081#line 761 "parser.yy"
    58236082    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    58246083    break;
    58256084
    5826   case 163:
    5827 
    5828 /* Line 1806 of yacc.c  */
    5829 #line 724 "parser.yy"
     6085  case 168:
     6086
     6087/* Line 1806 of yacc.c  */
     6088#line 765 "parser.yy"
     6089    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
     6090    break;
     6091
     6092  case 169:
     6093
     6094/* Line 1806 of yacc.c  */
     6095#line 770 "parser.yy"
     6096    { (yyval.sn) = 0; }
     6097    break;
     6098
     6099  case 171:
     6100
     6101/* Line 1806 of yacc.c  */
     6102#line 776 "parser.yy"
     6103    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(2) - (2)].sn) ) ); }
     6104    break;
     6105
     6106  case 172:
     6107
     6108/* Line 1806 of yacc.c  */
     6109#line 778 "parser.yy"
     6110    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( new CompoundStmtNode( (yyvsp[(3) - (3)].sn) ) ) ) ); }
     6111    break;
     6112
     6113  case 173:
     6114
     6115/* Line 1806 of yacc.c  */
     6116#line 783 "parser.yy"
     6117    { (yyval.sn) = 0; }
     6118    break;
     6119
     6120  case 175:
     6121
     6122/* Line 1806 of yacc.c  */
     6123#line 789 "parser.yy"
    58306124    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58316125    break;
    58326126
    5833   case 164:
    5834 
    5835 /* Line 1806 of yacc.c  */
    5836 #line 729 "parser.yy"
    5837     { (yyval.sn) = 0; }
    5838     break;
    5839 
    5840   case 166:
    5841 
    5842 /* Line 1806 of yacc.c  */
    5843 #line 735 "parser.yy"
    5844     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    5845     break;
    5846 
    5847   case 167:
    5848 
    5849 /* Line 1806 of yacc.c  */
    5850 #line 737 "parser.yy"
     6127  case 176:
     6128
     6129/* Line 1806 of yacc.c  */
     6130#line 791 "parser.yy"
     6131    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(2) - (3)].sn), *(yyvsp[(3) - (3)].sn) ) ) ) ); }
     6132    break;
     6133
     6134  case 177:
     6135
     6136/* Line 1806 of yacc.c  */
     6137#line 793 "parser.yy"
    58516138    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58526139    break;
    58536140
    5854   case 168:
    5855 
    5856 /* Line 1806 of yacc.c  */
    5857 #line 742 "parser.yy"
    5858     { (yyval.sn) = 0; }
    5859     break;
    5860 
    5861   case 170:
    5862 
    5863 /* Line 1806 of yacc.c  */
    5864 #line 748 "parser.yy"
    5865     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    5866     break;
    5867 
    5868   case 171:
    5869 
    5870 /* Line 1806 of yacc.c  */
    5871 #line 750 "parser.yy"
    5872     { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
    5873     break;
    5874 
    5875   case 172:
    5876 
    5877 /* Line 1806 of yacc.c  */
    5878 #line 752 "parser.yy"
    5879     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    5880     break;
    5881 
    5882   case 173:
    5883 
    5884 /* Line 1806 of yacc.c  */
    5885 #line 754 "parser.yy"
    5886     { (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) ))))); }
    5887     break;
    5888 
    5889   case 174:
    5890 
    5891 /* Line 1806 of yacc.c  */
    5892 #line 759 "parser.yy"
    5893     { (yyval.sn) = 0; }
    5894     break;
    5895 
    5896   case 176:
    5897 
    5898 /* Line 1806 of yacc.c  */
    5899 #line 764 "parser.yy"
    5900     { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    5901     break;
    5902 
    5903   case 177:
    5904 
    5905 /* Line 1806 of yacc.c  */
    5906 #line 765 "parser.yy"
    5907     { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    5908     break;
    5909 
    59106141  case 178:
    59116142
    59126143/* Line 1806 of yacc.c  */
    5913 #line 770 "parser.yy"
    5914     { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     6144#line 795 "parser.yy"
     6145    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*(yyvsp[(3) - (4)].sn), *(yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    59156146    break;
    59166147
    59176148  case 179:
    5918 
    5919 /* Line 1806 of yacc.c  */
    5920 #line 772 "parser.yy"
    5921     { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    5922     break;
    5923 
    5924   case 180:
    5925 
    5926 /* Line 1806 of yacc.c  */
    5927 #line 774 "parser.yy"
    5928     { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    5929     break;
    5930 
    5931   case 181:
    5932 
    5933 /* Line 1806 of yacc.c  */
    5934 #line 779 "parser.yy"
    5935     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    5936     break;
    5937 
    5938   case 182:
    5939 
    5940 /* Line 1806 of yacc.c  */
    5941 #line 781 "parser.yy"
    5942     { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    5943     break;
    5944 
    5945   case 183:
    5946 
    5947 /* Line 1806 of yacc.c  */
    5948 #line 786 "parser.yy"
    5949     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    5950     break;
    5951 
    5952   case 184:
    5953 
    5954 /* Line 1806 of yacc.c  */
    5955 #line 790 "parser.yy"
    5956     { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    5957     break;
    5958 
    5959   case 185:
    5960 
    5961 /* Line 1806 of yacc.c  */
    5962 #line 793 "parser.yy"
    5963     { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
    5964     break;
    5965 
    5966   case 186:
    5967 
    5968 /* Line 1806 of yacc.c  */
    5969 #line 797 "parser.yy"
    5970     { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    5971     break;
    5972 
    5973   case 187:
    59746149
    59756150/* Line 1806 of yacc.c  */
     
    59786153    break;
    59796154
     6155  case 181:
     6156
     6157/* Line 1806 of yacc.c  */
     6158#line 806 "parser.yy"
     6159    { (yyval.sn) = 0; }
     6160    break;
     6161
     6162  case 182:
     6163
     6164/* Line 1806 of yacc.c  */
     6165#line 808 "parser.yy"
     6166    { (yyval.sn) = 0; }
     6167    break;
     6168
     6169  case 183:
     6170
     6171/* Line 1806 of yacc.c  */
     6172#line 813 "parser.yy"
     6173    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     6174    break;
     6175
     6176  case 184:
     6177
     6178/* Line 1806 of yacc.c  */
     6179#line 815 "parser.yy"
     6180    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
     6181    break;
     6182
     6183  case 185:
     6184
     6185/* Line 1806 of yacc.c  */
     6186#line 817 "parser.yy"
     6187    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
     6188    break;
     6189
     6190  case 186:
     6191
     6192/* Line 1806 of yacc.c  */
     6193#line 822 "parser.yy"
     6194    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
     6195    break;
     6196
     6197  case 187:
     6198
     6199/* Line 1806 of yacc.c  */
     6200#line 824 "parser.yy"
     6201    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
     6202    break;
     6203
    59806204  case 188:
    59816205
    59826206/* Line 1806 of yacc.c  */
    5983 #line 804 "parser.yy"
     6207#line 829 "parser.yy"
     6208    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
     6209    break;
     6210
     6211  case 189:
     6212
     6213/* Line 1806 of yacc.c  */
     6214#line 833 "parser.yy"
     6215    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
     6216    break;
     6217
     6218  case 190:
     6219
     6220/* Line 1806 of yacc.c  */
     6221#line 836 "parser.yy"
     6222    { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
     6223    break;
     6224
     6225  case 191:
     6226
     6227/* Line 1806 of yacc.c  */
     6228#line 840 "parser.yy"
     6229    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
     6230    break;
     6231
     6232  case 192:
     6233
     6234/* Line 1806 of yacc.c  */
     6235#line 843 "parser.yy"
     6236    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
     6237    break;
     6238
     6239  case 193:
     6240
     6241/* Line 1806 of yacc.c  */
     6242#line 847 "parser.yy"
    59846243    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    59856244    break;
    59866245
    5987   case 189:
    5988 
    5989 /* Line 1806 of yacc.c  */
    5990 #line 806 "parser.yy"
     6246  case 194:
     6247
     6248/* Line 1806 of yacc.c  */
     6249#line 849 "parser.yy"
    59916250    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    59926251    break;
    59936252
    5994   case 190:
    5995 
    5996 /* Line 1806 of yacc.c  */
    5997 #line 808 "parser.yy"
     6253  case 195:
     6254
     6255/* Line 1806 of yacc.c  */
     6256#line 851 "parser.yy"
    59986257    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    59996258    break;
    60006259
    6001   case 191:
    6002 
    6003 /* Line 1806 of yacc.c  */
    6004 #line 810 "parser.yy"
    6005     { (yyval.sn) = new StatementNode( StatementNode::Throw ); }
    6006     break;
    6007 
    6008   case 192:
    6009 
    6010 /* Line 1806 of yacc.c  */
    6011 #line 815 "parser.yy"
     6260  case 196:
     6261
     6262/* Line 1806 of yacc.c  */
     6263#line 855 "parser.yy"
     6264    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     6265    break;
     6266
     6267  case 197:
     6268
     6269/* Line 1806 of yacc.c  */
     6270#line 857 "parser.yy"
     6271    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
     6272    break;
     6273
     6274  case 198:
     6275
     6276/* Line 1806 of yacc.c  */
     6277#line 864 "parser.yy"
    60126278    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60136279    break;
    60146280
    6015   case 193:
    6016 
    6017 /* Line 1806 of yacc.c  */
    6018 #line 817 "parser.yy"
     6281  case 199:
     6282
     6283/* Line 1806 of yacc.c  */
     6284#line 866 "parser.yy"
    60196285    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60206286    break;
    60216287
    6022   case 194:
    6023 
    6024 /* Line 1806 of yacc.c  */
    6025 #line 819 "parser.yy"
     6288  case 200:
     6289
     6290/* Line 1806 of yacc.c  */
     6291#line 868 "parser.yy"
    60266292    {
    60276293                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    60306296    break;
    60316297
    6032   case 196:
    6033 
    6034 /* Line 1806 of yacc.c  */
    6035 #line 830 "parser.yy"
     6298  case 202:
     6299
     6300/* Line 1806 of yacc.c  */
     6301#line 879 "parser.yy"
    60366302    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    60376303    break;
    60386304
    6039   case 197:
    6040 
    6041 /* Line 1806 of yacc.c  */
    6042 #line 832 "parser.yy"
     6305  case 203:
     6306
     6307/* Line 1806 of yacc.c  */
     6308#line 881 "parser.yy"
    60436309    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    60446310    break;
    60456311
    6046   case 198:
    6047 
    6048 /* Line 1806 of yacc.c  */
    6049 #line 837 "parser.yy"
     6312  case 204:
     6313
     6314/* Line 1806 of yacc.c  */
     6315#line 883 "parser.yy"
     6316    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6317    break;
     6318
     6319  case 205:
     6320
     6321/* Line 1806 of yacc.c  */
     6322#line 885 "parser.yy"
     6323    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6324    break;
     6325
     6326  case 206:
     6327
     6328/* Line 1806 of yacc.c  */
     6329#line 890 "parser.yy"
    60506330    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    60516331    break;
    60526332
    6053   case 199:
    6054 
    6055 /* Line 1806 of yacc.c  */
    6056 #line 839 "parser.yy"
     6333  case 207:
     6334
     6335/* Line 1806 of yacc.c  */
     6336#line 892 "parser.yy"
    60576337    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    60586338    break;
    60596339
    6060   case 200:
    6061 
    6062 /* Line 1806 of yacc.c  */
    6063 #line 844 "parser.yy"
     6340  case 208:
     6341
     6342/* Line 1806 of yacc.c  */
     6343#line 894 "parser.yy"
     6344    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
     6345    break;
     6346
     6347  case 209:
     6348
     6349/* Line 1806 of yacc.c  */
     6350#line 896 "parser.yy"
     6351    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
     6352    break;
     6353
     6354  case 210:
     6355
     6356/* Line 1806 of yacc.c  */
     6357#line 901 "parser.yy"
    60646358    {
    60656359                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    60686362    break;
    60696363
    6070   case 202:
    6071 
    6072 /* Line 1806 of yacc.c  */
    6073 #line 858 "parser.yy"
     6364  case 212:
     6365
     6366/* Line 1806 of yacc.c  */
     6367#line 915 "parser.yy"
    60746368    {
    60756369                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60786372    break;
    60796373
    6080   case 203:
    6081 
    6082 /* Line 1806 of yacc.c  */
    6083 #line 863 "parser.yy"
     6374  case 213:
     6375
     6376/* Line 1806 of yacc.c  */
     6377#line 920 "parser.yy"
    60846378    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    60856379    break;
    60866380
    6087   case 204:
    6088 
    6089 /* Line 1806 of yacc.c  */
    6090 #line 865 "parser.yy"
     6381  case 214:
     6382
     6383/* Line 1806 of yacc.c  */
     6384#line 922 "parser.yy"
    60916385    {
    60926386                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60956389    break;
    60966390
    6097   case 206:
    6098 
    6099 /* Line 1806 of yacc.c  */
    6100 #line 874 "parser.yy"
     6391  case 216:
     6392
     6393/* Line 1806 of yacc.c  */
     6394#line 931 "parser.yy"
    61016395    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    61026396    break;
    61036397
    6104   case 207:
    6105 
    6106 /* Line 1806 of yacc.c  */
    6107 #line 876 "parser.yy"
     6398  case 217:
     6399
     6400/* Line 1806 of yacc.c  */
     6401#line 933 "parser.yy"
    61086402    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    61096403    break;
    61106404
    6111   case 208:
    6112 
    6113 /* Line 1806 of yacc.c  */
    6114 #line 878 "parser.yy"
     6405  case 218:
     6406
     6407/* Line 1806 of yacc.c  */
     6408#line 935 "parser.yy"
    61156409    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    61166410    break;
    61176411
    6118   case 209:
    6119 
    6120 /* Line 1806 of yacc.c  */
    6121 #line 880 "parser.yy"
     6412  case 219:
     6413
     6414/* Line 1806 of yacc.c  */
     6415#line 937 "parser.yy"
    61226416    { (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) ); }
    61236417    break;
    61246418
    6125   case 210:
    6126 
    6127 /* Line 1806 of yacc.c  */
    6128 #line 882 "parser.yy"
     6419  case 220:
     6420
     6421/* Line 1806 of yacc.c  */
     6422#line 939 "parser.yy"
    61296423    { (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) ); }
    61306424    break;
    61316425
    6132   case 211:
    6133 
    6134 /* Line 1806 of yacc.c  */
    6135 #line 887 "parser.yy"
     6426  case 221:
     6427
     6428/* Line 1806 of yacc.c  */
     6429#line 944 "parser.yy"
    61366430    { (yyval.flag) = false; }
    61376431    break;
    61386432
    6139   case 212:
    6140 
    6141 /* Line 1806 of yacc.c  */
    6142 #line 889 "parser.yy"
     6433  case 222:
     6434
     6435/* Line 1806 of yacc.c  */
     6436#line 946 "parser.yy"
    61436437    { (yyval.flag) = true; }
    61446438    break;
    61456439
    6146   case 213:
    6147 
    6148 /* Line 1806 of yacc.c  */
    6149 #line 894 "parser.yy"
     6440  case 223:
     6441
     6442/* Line 1806 of yacc.c  */
     6443#line 951 "parser.yy"
    61506444    { (yyval.en) = 0; }
    61516445    break;
    61526446
    6153   case 216:
    6154 
    6155 /* Line 1806 of yacc.c  */
    6156 #line 901 "parser.yy"
     6447  case 226:
     6448
     6449/* Line 1806 of yacc.c  */
     6450#line 958 "parser.yy"
    61576451    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    61586452    break;
    61596453
    6160   case 217:
    6161 
    6162 /* Line 1806 of yacc.c  */
    6163 #line 906 "parser.yy"
     6454  case 227:
     6455
     6456/* Line 1806 of yacc.c  */
     6457#line 963 "parser.yy"
    61646458    { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
    61656459    break;
    61666460
    6167   case 218:
    6168 
    6169 /* Line 1806 of yacc.c  */
    6170 #line 908 "parser.yy"
     6461  case 228:
     6462
     6463/* Line 1806 of yacc.c  */
     6464#line 965 "parser.yy"
    61716465    { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
    61726466    break;
    61736467
    6174   case 219:
    6175 
    6176 /* Line 1806 of yacc.c  */
    6177 #line 913 "parser.yy"
     6468  case 229:
     6469
     6470/* Line 1806 of yacc.c  */
     6471#line 970 "parser.yy"
    61786472    { (yyval.constant) = 0; }
    61796473    break;
    61806474
    6181   case 220:
    6182 
    6183 /* Line 1806 of yacc.c  */
    6184 #line 915 "parser.yy"
     6475  case 230:
     6476
     6477/* Line 1806 of yacc.c  */
     6478#line 972 "parser.yy"
    61856479    { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
    61866480    break;
    61876481
    6188   case 221:
    6189 
    6190 /* Line 1806 of yacc.c  */
    6191 #line 917 "parser.yy"
     6482  case 231:
     6483
     6484/* Line 1806 of yacc.c  */
     6485#line 974 "parser.yy"
    61926486    { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
    61936487    break;
    61946488
    6195   case 222:
    6196 
    6197 /* Line 1806 of yacc.c  */
    6198 #line 922 "parser.yy"
     6489  case 232:
     6490
     6491/* Line 1806 of yacc.c  */
     6492#line 979 "parser.yy"
    61996493    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    62006494    break;
    62016495
    6202   case 223:
    6203 
    6204 /* Line 1806 of yacc.c  */
    6205 #line 924 "parser.yy"
     6496  case 233:
     6497
     6498/* Line 1806 of yacc.c  */
     6499#line 981 "parser.yy"
    62066500    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    62076501    break;
    62086502
    6209   case 224:
    6210 
    6211 /* Line 1806 of yacc.c  */
    6212 #line 931 "parser.yy"
     6503  case 234:
     6504
     6505/* Line 1806 of yacc.c  */
     6506#line 988 "parser.yy"
    62136507    { (yyval.decl) = 0; }
    62146508    break;
    62156509
    6216   case 227:
    6217 
    6218 /* Line 1806 of yacc.c  */
    6219 #line 938 "parser.yy"
     6510  case 237:
     6511
     6512/* Line 1806 of yacc.c  */
     6513#line 995 "parser.yy"
    62206514    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62216515    break;
    62226516
    6223   case 228:
    6224 
    6225 /* Line 1806 of yacc.c  */
    6226 #line 943 "parser.yy"
     6517  case 238:
     6518
     6519/* Line 1806 of yacc.c  */
     6520#line 1000 "parser.yy"
    62276521    { (yyval.decl) = 0; }
    62286522    break;
    62296523
    6230   case 231:
    6231 
    6232 /* Line 1806 of yacc.c  */
    6233 #line 950 "parser.yy"
     6524  case 241:
     6525
     6526/* Line 1806 of yacc.c  */
     6527#line 1007 "parser.yy"
    62346528    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62356529    break;
    62366530
    6237   case 236:
    6238 
    6239 /* Line 1806 of yacc.c  */
    6240 #line 964 "parser.yy"
     6531  case 246:
     6532
     6533/* Line 1806 of yacc.c  */
     6534#line 1021 "parser.yy"
    62416535    {}
    62426536    break;
    62436537
    6244   case 237:
    6245 
    6246 /* Line 1806 of yacc.c  */
    6247 #line 965 "parser.yy"
     6538  case 247:
     6539
     6540/* Line 1806 of yacc.c  */
     6541#line 1022 "parser.yy"
    62486542    {}
    62496543    break;
    62506544
    6251   case 245:
    6252 
    6253 /* Line 1806 of yacc.c  */
    6254 #line 994 "parser.yy"
     6545  case 255:
     6546
     6547/* Line 1806 of yacc.c  */
     6548#line 1051 "parser.yy"
    62556549    {
    62566550                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6257                         (yyval.decl) = (yyvsp[(1) - (2)].decl);
     6551                        (yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
    62586552                }
    62596553    break;
    62606554
    6261   case 246:
    6262 
    6263 /* Line 1806 of yacc.c  */
    6264 #line 1001 "parser.yy"
     6555  case 256:
     6556
     6557/* Line 1806 of yacc.c  */
     6558#line 1058 "parser.yy"
    62656559    {
    62666560                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6267                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) );
     6561                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
    62686562                }
    62696563    break;
    62706564
    6271   case 247:
    6272 
    6273 /* Line 1806 of yacc.c  */
    6274 #line 1006 "parser.yy"
     6565  case 257:
     6566
     6567/* Line 1806 of yacc.c  */
     6568#line 1063 "parser.yy"
    62756569    {
    62766570                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
    6277                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) ) );
     6571                        (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
    62786572                }
    62796573    break;
    62806574
    6281   case 248:
    6282 
    6283 /* Line 1806 of yacc.c  */
    6284 #line 1016 "parser.yy"
     6575  case 258:
     6576
     6577/* Line 1806 of yacc.c  */
     6578#line 1073 "parser.yy"
    62856579    {
    62866580                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62896583    break;
    62906584
    6291   case 249:
    6292 
    6293 /* Line 1806 of yacc.c  */
    6294 #line 1021 "parser.yy"
     6585  case 259:
     6586
     6587/* Line 1806 of yacc.c  */
     6588#line 1078 "parser.yy"
    62956589    {
    62966590                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62996593    break;
    63006594
    6301   case 250:
    6302 
    6303 /* Line 1806 of yacc.c  */
    6304 #line 1026 "parser.yy"
     6595  case 260:
     6596
     6597/* Line 1806 of yacc.c  */
     6598#line 1083 "parser.yy"
    63056599    {
    63066600                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63096603    break;
    63106604
    6311   case 251:
    6312 
    6313 /* Line 1806 of yacc.c  */
    6314 #line 1034 "parser.yy"
     6605  case 261:
     6606
     6607/* Line 1806 of yacc.c  */
     6608#line 1091 "parser.yy"
    63156609    {
    63166610                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63196613    break;
    63206614
    6321   case 252:
    6322 
    6323 /* Line 1806 of yacc.c  */
    6324 #line 1039 "parser.yy"
     6615  case 262:
     6616
     6617/* Line 1806 of yacc.c  */
     6618#line 1096 "parser.yy"
    63256619    {
    63266620                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63296623    break;
    63306624
    6331   case 253:
    6332 
    6333 /* Line 1806 of yacc.c  */
    6334 #line 1044 "parser.yy"
     6625  case 263:
     6626
     6627/* Line 1806 of yacc.c  */
     6628#line 1101 "parser.yy"
    63356629    {
    63366630                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63396633    break;
    63406634
    6341   case 254:
    6342 
    6343 /* Line 1806 of yacc.c  */
    6344 #line 1049 "parser.yy"
     6635  case 264:
     6636
     6637/* Line 1806 of yacc.c  */
     6638#line 1106 "parser.yy"
    63456639    {
    63466640                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63496643    break;
    63506644
    6351   case 255:
    6352 
    6353 /* Line 1806 of yacc.c  */
    6354 #line 1054 "parser.yy"
     6645  case 265:
     6646
     6647/* Line 1806 of yacc.c  */
     6648#line 1111 "parser.yy"
    63556649    {
    63566650                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    63596653    break;
    63606654
    6361   case 256:
    6362 
    6363 /* Line 1806 of yacc.c  */
    6364 #line 1062 "parser.yy"
     6655  case 266:
     6656
     6657/* Line 1806 of yacc.c  */
     6658#line 1119 "parser.yy"
    63656659    {
    63666660                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    63686662    break;
    63696663
    6370   case 257:
    6371 
    6372 /* Line 1806 of yacc.c  */
    6373 #line 1085 "parser.yy"
     6664  case 267:
     6665
     6666/* Line 1806 of yacc.c  */
     6667#line 1142 "parser.yy"
    63746668    {
    63756669                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63776671    break;
    63786672
    6379   case 258:
    6380 
    6381 /* Line 1806 of yacc.c  */
    6382 #line 1089 "parser.yy"
     6673  case 268:
     6674
     6675/* Line 1806 of yacc.c  */
     6676#line 1146 "parser.yy"
    63836677    {
    63846678                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63866680    break;
    63876681
    6388   case 259:
    6389 
    6390 /* Line 1806 of yacc.c  */
    6391 #line 1096 "parser.yy"
     6682  case 269:
     6683
     6684/* Line 1806 of yacc.c  */
     6685#line 1153 "parser.yy"
    63926686    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    63936687    break;
    63946688
    6395   case 260:
    6396 
    6397 /* Line 1806 of yacc.c  */
    6398 #line 1100 "parser.yy"
     6689  case 270:
     6690
     6691/* Line 1806 of yacc.c  */
     6692#line 1157 "parser.yy"
    63996693    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64006694    break;
    64016695
    6402   case 261:
    6403 
    6404 /* Line 1806 of yacc.c  */
    6405 #line 1105 "parser.yy"
     6696  case 271:
     6697
     6698/* Line 1806 of yacc.c  */
     6699#line 1162 "parser.yy"
    64066700    {
    64076701                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64106704    break;
    64116705
    6412   case 262:
    6413 
    6414 /* Line 1806 of yacc.c  */
    6415 #line 1110 "parser.yy"
     6706  case 272:
     6707
     6708/* Line 1806 of yacc.c  */
     6709#line 1167 "parser.yy"
    64166710    {
    64176711                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64206714    break;
    64216715
    6422   case 263:
    6423 
    6424 /* Line 1806 of yacc.c  */
    6425 #line 1115 "parser.yy"
     6716  case 273:
     6717
     6718/* Line 1806 of yacc.c  */
     6719#line 1172 "parser.yy"
    64266720    {
    64276721                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64306724    break;
    64316725
    6432   case 264:
    6433 
    6434 /* Line 1806 of yacc.c  */
    6435 #line 1126 "parser.yy"
     6726  case 274:
     6727
     6728/* Line 1806 of yacc.c  */
     6729#line 1183 "parser.yy"
    64366730    {
    64376731                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64406734    break;
    64416735
    6442   case 265:
    6443 
    6444 /* Line 1806 of yacc.c  */
    6445 #line 1131 "parser.yy"
     6736  case 275:
     6737
     6738/* Line 1806 of yacc.c  */
     6739#line 1188 "parser.yy"
    64466740    {
    64476741                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64506744    break;
    64516745
    6452   case 266:
    6453 
    6454 /* Line 1806 of yacc.c  */
    6455 #line 1136 "parser.yy"
     6746  case 276:
     6747
     6748/* Line 1806 of yacc.c  */
     6749#line 1193 "parser.yy"
    64566750    {
    64576751                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64606754    break;
    64616755
    6462   case 267:
    6463 
    6464 /* Line 1806 of yacc.c  */
    6465 #line 1141 "parser.yy"
     6756  case 277:
     6757
     6758/* Line 1806 of yacc.c  */
     6759#line 1198 "parser.yy"
    64666760    {
    64676761                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64706764    break;
    64716765
    6472   case 268:
    6473 
    6474 /* Line 1806 of yacc.c  */
    6475 #line 1146 "parser.yy"
     6766  case 278:
     6767
     6768/* Line 1806 of yacc.c  */
     6769#line 1203 "parser.yy"
    64766770    {
    64776771                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64806774    break;
    64816775
    6482   case 269:
    6483 
    6484 /* Line 1806 of yacc.c  */
    6485 #line 1155 "parser.yy"
     6776  case 279:
     6777
     6778/* Line 1806 of yacc.c  */
     6779#line 1212 "parser.yy"
    64866780    {
    64876781                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    64906784    break;
    64916785
    6492   case 270:
    6493 
    6494 /* Line 1806 of yacc.c  */
    6495 #line 1160 "parser.yy"
     6786  case 280:
     6787
     6788/* Line 1806 of yacc.c  */
     6789#line 1217 "parser.yy"
    64966790    {
    64976791                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65006794    break;
    65016795
    6502   case 275:
    6503 
    6504 /* Line 1806 of yacc.c  */
    6505 #line 1177 "parser.yy"
     6796  case 285:
     6797
     6798/* Line 1806 of yacc.c  */
     6799#line 1234 "parser.yy"
    65066800    {
    65076801                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65106804    break;
    65116805
    6512   case 276:
    6513 
    6514 /* Line 1806 of yacc.c  */
    6515 #line 1182 "parser.yy"
     6806  case 286:
     6807
     6808/* Line 1806 of yacc.c  */
     6809#line 1239 "parser.yy"
    65166810    {
    65176811                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65206814    break;
    65216815
    6522   case 285:
    6523 
    6524 /* Line 1806 of yacc.c  */
    6525 #line 1204 "parser.yy"
     6816  case 295:
     6817
     6818/* Line 1806 of yacc.c  */
     6819#line 1261 "parser.yy"
    65266820    { (yyval.decl) = 0; }
    65276821    break;
    65286822
    6529   case 288:
    6530 
    6531 /* Line 1806 of yacc.c  */
    6532 #line 1216 "parser.yy"
     6823  case 298:
     6824
     6825/* Line 1806 of yacc.c  */
     6826#line 1273 "parser.yy"
    65336827    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65346828    break;
    65356829
    6536   case 291:
    6537 
    6538 /* Line 1806 of yacc.c  */
    6539 #line 1227 "parser.yy"
     6830  case 301:
     6831
     6832/* Line 1806 of yacc.c  */
     6833#line 1284 "parser.yy"
    65406834    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65416835    break;
    65426836
    6543   case 292:
    6544 
    6545 /* Line 1806 of yacc.c  */
    6546 #line 1229 "parser.yy"
     6837  case 302:
     6838
     6839/* Line 1806 of yacc.c  */
     6840#line 1286 "parser.yy"
    65476841    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    65486842    break;
    65496843
    6550   case 293:
    6551 
    6552 /* Line 1806 of yacc.c  */
    6553 #line 1231 "parser.yy"
     6844  case 303:
     6845
     6846/* Line 1806 of yacc.c  */
     6847#line 1288 "parser.yy"
    65546848    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    65556849    break;
    65566850
    6557   case 294:
    6558 
    6559 /* Line 1806 of yacc.c  */
    6560 #line 1233 "parser.yy"
     6851  case 304:
     6852
     6853/* Line 1806 of yacc.c  */
     6854#line 1290 "parser.yy"
    65616855    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    65626856    break;
    65636857
    6564   case 295:
    6565 
    6566 /* Line 1806 of yacc.c  */
    6567 #line 1235 "parser.yy"
     6858  case 305:
     6859
     6860/* Line 1806 of yacc.c  */
     6861#line 1292 "parser.yy"
    65686862    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    65696863    break;
    65706864
    6571   case 296:
    6572 
    6573 /* Line 1806 of yacc.c  */
    6574 #line 1237 "parser.yy"
     6865  case 306:
     6866
     6867/* Line 1806 of yacc.c  */
     6868#line 1294 "parser.yy"
    65756869    {
    65766870                        typedefTable.enterScope();
     
    65786872    break;
    65796873
    6580   case 297:
    6581 
    6582 /* Line 1806 of yacc.c  */
    6583 #line 1241 "parser.yy"
     6874  case 307:
     6875
     6876/* Line 1806 of yacc.c  */
     6877#line 1298 "parser.yy"
    65846878    {
    65856879                        typedefTable.leaveScope();
     
    65886882    break;
    65896883
    6590   case 299:
    6591 
    6592 /* Line 1806 of yacc.c  */
    6593 #line 1250 "parser.yy"
     6884  case 309:
     6885
     6886/* Line 1806 of yacc.c  */
     6887#line 1307 "parser.yy"
    65946888    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65956889    break;
    65966890
    6597   case 300:
    6598 
    6599 /* Line 1806 of yacc.c  */
    6600 #line 1252 "parser.yy"
     6891  case 310:
     6892
     6893/* Line 1806 of yacc.c  */
     6894#line 1309 "parser.yy"
    66016895    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66026896    break;
    66036897
    6604   case 302:
    6605 
    6606 /* Line 1806 of yacc.c  */
    6607 #line 1263 "parser.yy"
     6898  case 312:
     6899
     6900/* Line 1806 of yacc.c  */
     6901#line 1320 "parser.yy"
    66086902    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66096903    break;
    66106904
    6611   case 304:
    6612 
    6613 /* Line 1806 of yacc.c  */
    6614 #line 1272 "parser.yy"
     6905  case 314:
     6906
     6907/* Line 1806 of yacc.c  */
     6908#line 1329 "parser.yy"
    66156909    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66166910    break;
    66176911
    6618   case 305:
    6619 
    6620 /* Line 1806 of yacc.c  */
    6621 #line 1274 "parser.yy"
     6912  case 315:
     6913
     6914/* Line 1806 of yacc.c  */
     6915#line 1331 "parser.yy"
    66226916    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66236917    break;
    66246918
    6625   case 306:
    6626 
    6627 /* Line 1806 of yacc.c  */
    6628 #line 1276 "parser.yy"
     6919  case 316:
     6920
     6921/* Line 1806 of yacc.c  */
     6922#line 1333 "parser.yy"
    66296923    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66306924    break;
    66316925
    6632   case 307:
    6633 
    6634 /* Line 1806 of yacc.c  */
    6635 #line 1278 "parser.yy"
     6926  case 317:
     6927
     6928/* Line 1806 of yacc.c  */
     6929#line 1335 "parser.yy"
    66366930    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66376931    break;
    66386932
    6639   case 308:
    6640 
    6641 /* Line 1806 of yacc.c  */
    6642 #line 1280 "parser.yy"
     6933  case 318:
     6934
     6935/* Line 1806 of yacc.c  */
     6936#line 1337 "parser.yy"
    66436937    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    66446938    break;
    66456939
    6646   case 309:
    6647 
    6648 /* Line 1806 of yacc.c  */
    6649 #line 1282 "parser.yy"
     6940  case 319:
     6941
     6942/* Line 1806 of yacc.c  */
     6943#line 1339 "parser.yy"
    66506944    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    66516945    break;
    66526946
    6653   case 310:
    6654 
    6655 /* Line 1806 of yacc.c  */
    6656 #line 1284 "parser.yy"
     6947  case 320:
     6948
     6949/* Line 1806 of yacc.c  */
     6950#line 1341 "parser.yy"
    66576951    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    66586952    break;
    66596953
    6660   case 311:
    6661 
    6662 /* Line 1806 of yacc.c  */
    6663 #line 1286 "parser.yy"
     6954  case 321:
     6955
     6956/* Line 1806 of yacc.c  */
     6957#line 1343 "parser.yy"
    66646958    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    66656959    break;
    66666960
    6667   case 312:
    6668 
    6669 /* Line 1806 of yacc.c  */
    6670 #line 1291 "parser.yy"
     6961  case 322:
     6962
     6963/* Line 1806 of yacc.c  */
     6964#line 1348 "parser.yy"
    66716965    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    66726966    break;
    66736967
    6674   case 313:
    6675 
    6676 /* Line 1806 of yacc.c  */
    6677 #line 1293 "parser.yy"
     6968  case 323:
     6969
     6970/* Line 1806 of yacc.c  */
     6971#line 1350 "parser.yy"
    66786972    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    66796973    break;
    66806974
    6681   case 314:
    6682 
    6683 /* Line 1806 of yacc.c  */
    6684 #line 1295 "parser.yy"
     6975  case 324:
     6976
     6977/* Line 1806 of yacc.c  */
     6978#line 1352 "parser.yy"
    66856979    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    66866980    break;
    66876981
    6688   case 315:
    6689 
    6690 /* Line 1806 of yacc.c  */
    6691 #line 1297 "parser.yy"
     6982  case 325:
     6983
     6984/* Line 1806 of yacc.c  */
     6985#line 1354 "parser.yy"
    66926986    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    66936987    break;
    66946988
    6695   case 316:
    6696 
    6697 /* Line 1806 of yacc.c  */
    6698 #line 1299 "parser.yy"
     6989  case 326:
     6990
     6991/* Line 1806 of yacc.c  */
     6992#line 1356 "parser.yy"
    66996993    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    67006994    break;
    67016995
    6702   case 317:
    6703 
    6704 /* Line 1806 of yacc.c  */
    6705 #line 1301 "parser.yy"
     6996  case 327:
     6997
     6998/* Line 1806 of yacc.c  */
     6999#line 1358 "parser.yy"
    67067000    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    67077001    break;
    67087002
    6709   case 318:
    6710 
    6711 /* Line 1806 of yacc.c  */
    6712 #line 1303 "parser.yy"
     7003  case 328:
     7004
     7005/* Line 1806 of yacc.c  */
     7006#line 1360 "parser.yy"
    67137007    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    67147008    break;
    67157009
    6716   case 319:
    6717 
    6718 /* Line 1806 of yacc.c  */
    6719 #line 1305 "parser.yy"
     7010  case 329:
     7011
     7012/* Line 1806 of yacc.c  */
     7013#line 1362 "parser.yy"
    67207014    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    67217015    break;
    67227016
    6723   case 320:
    6724 
    6725 /* Line 1806 of yacc.c  */
    6726 #line 1307 "parser.yy"
     7017  case 330:
     7018
     7019/* Line 1806 of yacc.c  */
     7020#line 1364 "parser.yy"
    67277021    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    67287022    break;
    67297023
    6730   case 321:
    6731 
    6732 /* Line 1806 of yacc.c  */
    6733 #line 1309 "parser.yy"
     7024  case 331:
     7025
     7026/* Line 1806 of yacc.c  */
     7027#line 1366 "parser.yy"
    67347028    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    67357029    break;
    67367030
    6737   case 322:
    6738 
    6739 /* Line 1806 of yacc.c  */
    6740 #line 1311 "parser.yy"
     7031  case 332:
     7032
     7033/* Line 1806 of yacc.c  */
     7034#line 1368 "parser.yy"
    67417035    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    67427036    break;
    67437037
    6744   case 323:
    6745 
    6746 /* Line 1806 of yacc.c  */
    6747 #line 1313 "parser.yy"
     7038  case 333:
     7039
     7040/* Line 1806 of yacc.c  */
     7041#line 1370 "parser.yy"
    67487042    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    67497043    break;
    67507044
    6751   case 325:
    6752 
    6753 /* Line 1806 of yacc.c  */
    6754 #line 1320 "parser.yy"
     7045  case 334:
     7046
     7047/* Line 1806 of yacc.c  */
     7048#line 1372 "parser.yy"
     7049    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
     7050    break;
     7051
     7052  case 336:
     7053
     7054/* Line 1806 of yacc.c  */
     7055#line 1379 "parser.yy"
    67557056    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67567057    break;
    67577058
    6758   case 326:
    6759 
    6760 /* Line 1806 of yacc.c  */
    6761 #line 1322 "parser.yy"
     7059  case 337:
     7060
     7061/* Line 1806 of yacc.c  */
     7062#line 1381 "parser.yy"
    67627063    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67637064    break;
    67647065
    6765   case 327:
    6766 
    6767 /* Line 1806 of yacc.c  */
    6768 #line 1324 "parser.yy"
     7066  case 338:
     7067
     7068/* Line 1806 of yacc.c  */
     7069#line 1383 "parser.yy"
    67697070    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67707071    break;
    67717072
    6772   case 328:
    6773 
    6774 /* Line 1806 of yacc.c  */
    6775 #line 1326 "parser.yy"
     7073  case 339:
     7074
     7075/* Line 1806 of yacc.c  */
     7076#line 1385 "parser.yy"
    67767077    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    67777078    break;
    67787079
    6779   case 330:
    6780 
    6781 /* Line 1806 of yacc.c  */
    6782 #line 1332 "parser.yy"
     7080  case 341:
     7081
     7082/* Line 1806 of yacc.c  */
     7083#line 1391 "parser.yy"
    67837084    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67847085    break;
    67857086
    6786   case 332:
    6787 
    6788 /* Line 1806 of yacc.c  */
    6789 #line 1339 "parser.yy"
     7087  case 343:
     7088
     7089/* Line 1806 of yacc.c  */
     7090#line 1398 "parser.yy"
    67907091    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67917092    break;
    67927093
    6793   case 333:
    6794 
    6795 /* Line 1806 of yacc.c  */
    6796 #line 1341 "parser.yy"
     7094  case 344:
     7095
     7096/* Line 1806 of yacc.c  */
     7097#line 1400 "parser.yy"
    67977098    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67987099    break;
    67997100
    6800   case 334:
    6801 
    6802 /* Line 1806 of yacc.c  */
    6803 #line 1343 "parser.yy"
     7101  case 345:
     7102
     7103/* Line 1806 of yacc.c  */
     7104#line 1402 "parser.yy"
    68047105    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    68057106    break;
    68067107
    6807   case 335:
    6808 
    6809 /* Line 1806 of yacc.c  */
    6810 #line 1348 "parser.yy"
     7108  case 346:
     7109
     7110/* Line 1806 of yacc.c  */
     7111#line 1407 "parser.yy"
    68117112    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    68127113    break;
    68137114
    6814   case 336:
    6815 
    6816 /* Line 1806 of yacc.c  */
    6817 #line 1350 "parser.yy"
     7115  case 347:
     7116
     7117/* Line 1806 of yacc.c  */
     7118#line 1409 "parser.yy"
    68187119    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    68197120    break;
    68207121
    6821   case 337:
    6822 
    6823 /* Line 1806 of yacc.c  */
    6824 #line 1352 "parser.yy"
     7122  case 348:
     7123
     7124/* Line 1806 of yacc.c  */
     7125#line 1411 "parser.yy"
    68257126    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    68267127    break;
    68277128
    6828   case 338:
    6829 
    6830 /* Line 1806 of yacc.c  */
    6831 #line 1354 "parser.yy"
     7129  case 349:
     7130
     7131/* Line 1806 of yacc.c  */
     7132#line 1413 "parser.yy"
    68327133    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    68337134    break;
    68347135
    6835   case 340:
    6836 
    6837 /* Line 1806 of yacc.c  */
    6838 #line 1360 "parser.yy"
     7136  case 351:
     7137
     7138/* Line 1806 of yacc.c  */
     7139#line 1419 "parser.yy"
    68397140    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68407141    break;
    68417142
    6842   case 341:
    6843 
    6844 /* Line 1806 of yacc.c  */
    6845 #line 1362 "parser.yy"
     7143  case 352:
     7144
     7145/* Line 1806 of yacc.c  */
     7146#line 1421 "parser.yy"
    68467147    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68477148    break;
    68487149
    6849   case 342:
    6850 
    6851 /* Line 1806 of yacc.c  */
    6852 #line 1364 "parser.yy"
     7150  case 353:
     7151
     7152/* Line 1806 of yacc.c  */
     7153#line 1423 "parser.yy"
    68537154    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68547155    break;
    68557156
    6856   case 344:
    6857 
    6858 /* Line 1806 of yacc.c  */
    6859 #line 1370 "parser.yy"
     7157  case 355:
     7158
     7159/* Line 1806 of yacc.c  */
     7160#line 1429 "parser.yy"
    68607161    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68617162    break;
    68627163
    6863   case 345:
    6864 
    6865 /* Line 1806 of yacc.c  */
    6866 #line 1372 "parser.yy"
     7164  case 356:
     7165
     7166/* Line 1806 of yacc.c  */
     7167#line 1431 "parser.yy"
    68677168    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68687169    break;
    68697170
    6870   case 347:
    6871 
    6872 /* Line 1806 of yacc.c  */
    6873 #line 1378 "parser.yy"
     7171  case 358:
     7172
     7173/* Line 1806 of yacc.c  */
     7174#line 1437 "parser.yy"
    68747175    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68757176    break;
    68767177
    6877   case 348:
    6878 
    6879 /* Line 1806 of yacc.c  */
    6880 #line 1380 "parser.yy"
     7178  case 359:
     7179
     7180/* Line 1806 of yacc.c  */
     7181#line 1439 "parser.yy"
    68817182    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68827183    break;
    68837184
    6884   case 349:
    6885 
    6886 /* Line 1806 of yacc.c  */
    6887 #line 1382 "parser.yy"
     7185  case 360:
     7186
     7187/* Line 1806 of yacc.c  */
     7188#line 1441 "parser.yy"
    68887189    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68897190    break;
    68907191
    6891   case 350:
    6892 
    6893 /* Line 1806 of yacc.c  */
    6894 #line 1387 "parser.yy"
     7192  case 361:
     7193
     7194/* Line 1806 of yacc.c  */
     7195#line 1446 "parser.yy"
    68957196    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    68967197    break;
    68977198
    6898   case 351:
    6899 
    6900 /* Line 1806 of yacc.c  */
    6901 #line 1389 "parser.yy"
     7199  case 362:
     7200
     7201/* Line 1806 of yacc.c  */
     7202#line 1448 "parser.yy"
    69027203    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69037204    break;
    69047205
    6905   case 352:
    6906 
    6907 /* Line 1806 of yacc.c  */
    6908 #line 1391 "parser.yy"
     7206  case 363:
     7207
     7208/* Line 1806 of yacc.c  */
     7209#line 1450 "parser.yy"
    69097210    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69107211    break;
    69117212
    6912   case 355:
    6913 
    6914 /* Line 1806 of yacc.c  */
    6915 #line 1401 "parser.yy"
    6916     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
    6917     break;
    6918 
    6919   case 356:
    6920 
    6921 /* Line 1806 of yacc.c  */
    6922 #line 1403 "parser.yy"
    6923     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }
    6924     break;
    6925 
    6926   case 357:
    6927 
    6928 /* Line 1806 of yacc.c  */
    6929 #line 1405 "parser.yy"
    6930     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }
    6931     break;
    6932 
    6933   case 358:
    6934 
    6935 /* Line 1806 of yacc.c  */
    6936 #line 1407 "parser.yy"
    6937     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
    6938     break;
    6939 
    6940   case 359:
    6941 
    6942 /* Line 1806 of yacc.c  */
    6943 #line 1409 "parser.yy"
     7213  case 366:
     7214
     7215/* Line 1806 of yacc.c  */
     7216#line 1460 "parser.yy"
     7217    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
     7218    break;
     7219
     7220  case 367:
     7221
     7222/* Line 1806 of yacc.c  */
     7223#line 1462 "parser.yy"
     7224    {
     7225                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     7226                        (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, false );
     7227                }
     7228    break;
     7229
     7230  case 368:
     7231
     7232/* Line 1806 of yacc.c  */
     7233#line 1467 "parser.yy"
     7234    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7235    break;
     7236
     7237  case 369:
     7238
     7239/* Line 1806 of yacc.c  */
     7240#line 1469 "parser.yy"
     7241    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
     7242    break;
     7243
     7244  case 370:
     7245
     7246/* Line 1806 of yacc.c  */
     7247#line 1471 "parser.yy"
     7248    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     7249    break;
     7250
     7251  case 371:
     7252
     7253/* Line 1806 of yacc.c  */
     7254#line 1473 "parser.yy"
    69447255    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    69457256    break;
    69467257
    6947   case 360:
    6948 
    6949 /* Line 1806 of yacc.c  */
    6950 #line 1414 "parser.yy"
     7258  case 372:
     7259
     7260/* Line 1806 of yacc.c  */
     7261#line 1478 "parser.yy"
    69517262    { (yyval.aggKey) = DeclarationNode::Struct; }
    69527263    break;
    69537264
    6954   case 361:
    6955 
    6956 /* Line 1806 of yacc.c  */
    6957 #line 1416 "parser.yy"
     7265  case 373:
     7266
     7267/* Line 1806 of yacc.c  */
     7268#line 1480 "parser.yy"
    69587269    { (yyval.aggKey) = DeclarationNode::Union; }
    69597270    break;
    69607271
    6961   case 362:
    6962 
    6963 /* Line 1806 of yacc.c  */
    6964 #line 1421 "parser.yy"
    6965     { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    6966     break;
    6967 
    6968   case 363:
    6969 
    6970 /* Line 1806 of yacc.c  */
    6971 #line 1423 "parser.yy"
    6972     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    6973     break;
    6974 
    6975   case 365:
    6976 
    6977 /* Line 1806 of yacc.c  */
    6978 #line 1429 "parser.yy"
    6979     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    6980     break;
    6981 
    6982   case 367:
    6983 
    6984 /* Line 1806 of yacc.c  */
    6985 #line 1432 "parser.yy"
    6986     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    6987     break;
    6988 
    6989   case 369:
    6990 
    6991 /* Line 1806 of yacc.c  */
    6992 #line 1438 "parser.yy"
     7272  case 374:
     7273
     7274/* Line 1806 of yacc.c  */
     7275#line 1485 "parser.yy"
     7276    { (yyval.decl) = 0; }
     7277    break;
     7278
     7279  case 375:
     7280
     7281/* Line 1806 of yacc.c  */
     7282#line 1487 "parser.yy"
     7283    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     7284    break;
     7285
     7286  case 377:
     7287
     7288/* Line 1806 of yacc.c  */
     7289#line 1493 "parser.yy"
     7290    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
     7291    break;
     7292
     7293  case 379:
     7294
     7295/* Line 1806 of yacc.c  */
     7296#line 1496 "parser.yy"
     7297    {   // mark all fields in list
     7298                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     7299                                iter->set_extension( true );
     7300                        (yyval.decl) = (yyvsp[(2) - (3)].decl);
     7301                }
     7302    break;
     7303
     7304  case 381:
     7305
     7306/* Line 1806 of yacc.c  */
     7307#line 1506 "parser.yy"
    69937308    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    69947309    break;
    69957310
    6996   case 370:
    6997 
    6998 /* Line 1806 of yacc.c  */
    6999 #line 1440 "parser.yy"
     7311  case 382:
     7312
     7313/* Line 1806 of yacc.c  */
     7314#line 1508 "parser.yy"
    70007315    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    70017316    break;
    70027317
    7003   case 371:
    7004 
    7005 /* Line 1806 of yacc.c  */
    7006 #line 1442 "parser.yy"
     7318  case 383:
     7319
     7320/* Line 1806 of yacc.c  */
     7321#line 1510 "parser.yy"
    70077322    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70087323    break;
    70097324
    7010   case 372:
    7011 
    7012 /* Line 1806 of yacc.c  */
    7013 #line 1447 "parser.yy"
     7325  case 384:
     7326
     7327/* Line 1806 of yacc.c  */
     7328#line 1515 "parser.yy"
    70147329    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70157330    break;
    70167331
    7017   case 373:
    7018 
    7019 /* Line 1806 of yacc.c  */
    7020 #line 1449 "parser.yy"
     7332  case 385:
     7333
     7334/* Line 1806 of yacc.c  */
     7335#line 1517 "parser.yy"
    70217336    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    70227337    break;
    70237338
    7024   case 374:
    7025 
    7026 /* Line 1806 of yacc.c  */
    7027 #line 1454 "parser.yy"
     7339  case 386:
     7340
     7341/* Line 1806 of yacc.c  */
     7342#line 1522 "parser.yy"
    70287343    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    70297344    break;
    70307345
    7031   case 375:
    7032 
    7033 /* Line 1806 of yacc.c  */
    7034 #line 1456 "parser.yy"
     7346  case 387:
     7347
     7348/* Line 1806 of yacc.c  */
     7349#line 1524 "parser.yy"
    70357350    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    70367351    break;
    70377352
    7038   case 376:
    7039 
    7040 /* Line 1806 of yacc.c  */
    7041 #line 1459 "parser.yy"
     7353  case 388:
     7354
     7355/* Line 1806 of yacc.c  */
     7356#line 1527 "parser.yy"
    70427357    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70437358    break;
    70447359
    7045   case 377:
    7046 
    7047 /* Line 1806 of yacc.c  */
    7048 #line 1462 "parser.yy"
     7360  case 389:
     7361
     7362/* Line 1806 of yacc.c  */
     7363#line 1530 "parser.yy"
    70497364    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70507365    break;
    70517366
    7052   case 379:
    7053 
    7054 /* Line 1806 of yacc.c  */
    7055 #line 1468 "parser.yy"
     7367  case 391:
     7368
     7369/* Line 1806 of yacc.c  */
     7370#line 1536 "parser.yy"
    70567371    { (yyval.en) = 0; }
    70577372    break;
    70587373
    7059   case 380:
    7060 
    7061 /* Line 1806 of yacc.c  */
    7062 #line 1470 "parser.yy"
     7374  case 392:
     7375
     7376/* Line 1806 of yacc.c  */
     7377#line 1538 "parser.yy"
    70637378    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    70647379    break;
    70657380
    7066   case 381:
    7067 
    7068 /* Line 1806 of yacc.c  */
    7069 #line 1475 "parser.yy"
     7381  case 393:
     7382
     7383/* Line 1806 of yacc.c  */
     7384#line 1543 "parser.yy"
    70707385    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    70717386    break;
    70727387
    7073   case 383:
    7074 
    7075 /* Line 1806 of yacc.c  */
    7076 #line 1484 "parser.yy"
     7388  case 395:
     7389
     7390/* Line 1806 of yacc.c  */
     7391#line 1552 "parser.yy"
    70777392    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    70787393    break;
    70797394
    7080   case 384:
    7081 
    7082 /* Line 1806 of yacc.c  */
    7083 #line 1486 "parser.yy"
    7084     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
    7085     break;
    7086 
    7087   case 385:
    7088 
    7089 /* Line 1806 of yacc.c  */
    7090 #line 1488 "parser.yy"
    7091     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    7092     break;
    7093 
    7094   case 386:
    7095 
    7096 /* Line 1806 of yacc.c  */
    7097 #line 1493 "parser.yy"
     7395  case 396:
     7396
     7397/* Line 1806 of yacc.c  */
     7398#line 1554 "parser.yy"
     7399    {
     7400                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     7401                        (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 );
     7402                }
     7403    break;
     7404
     7405  case 397:
     7406
     7407/* Line 1806 of yacc.c  */
     7408#line 1559 "parser.yy"
     7409    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
     7410    break;
     7411
     7412  case 398:
     7413
     7414/* Line 1806 of yacc.c  */
     7415#line 1561 "parser.yy"
     7416    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
     7417    break;
     7418
     7419  case 399:
     7420
     7421/* Line 1806 of yacc.c  */
     7422#line 1566 "parser.yy"
    70987423    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    70997424    break;
    71007425
    7101   case 387:
    7102 
    7103 /* Line 1806 of yacc.c  */
    7104 #line 1495 "parser.yy"
     7426  case 400:
     7427
     7428/* Line 1806 of yacc.c  */
     7429#line 1568 "parser.yy"
    71057430    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71067431    break;
    71077432
    7108   case 388:
    7109 
    7110 /* Line 1806 of yacc.c  */
    7111 #line 1500 "parser.yy"
     7433  case 401:
     7434
     7435/* Line 1806 of yacc.c  */
     7436#line 1573 "parser.yy"
    71127437    { (yyval.en) = 0; }
    71137438    break;
    71147439
    7115   case 389:
    7116 
    7117 /* Line 1806 of yacc.c  */
    7118 #line 1502 "parser.yy"
     7440  case 402:
     7441
     7442/* Line 1806 of yacc.c  */
     7443#line 1575 "parser.yy"
    71197444    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71207445    break;
    71217446
    7122   case 390:
    7123 
    7124 /* Line 1806 of yacc.c  */
    7125 #line 1509 "parser.yy"
     7447  case 403:
     7448
     7449/* Line 1806 of yacc.c  */
     7450#line 1582 "parser.yy"
    71267451    { (yyval.decl) = 0; }
    71277452    break;
    71287453
    7129   case 394:
    7130 
    7131 /* Line 1806 of yacc.c  */
    7132 #line 1517 "parser.yy"
     7454  case 407:
     7455
     7456/* Line 1806 of yacc.c  */
     7457#line 1590 "parser.yy"
    71337458    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71347459    break;
    71357460
    7136   case 395:
    7137 
    7138 /* Line 1806 of yacc.c  */
    7139 #line 1519 "parser.yy"
     7461  case 408:
     7462
     7463/* Line 1806 of yacc.c  */
     7464#line 1592 "parser.yy"
    71407465    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71417466    break;
    71427467
    7143   case 396:
    7144 
    7145 /* Line 1806 of yacc.c  */
    7146 #line 1521 "parser.yy"
     7468  case 409:
     7469
     7470/* Line 1806 of yacc.c  */
     7471#line 1594 "parser.yy"
    71477472    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71487473    break;
    71497474
    7150   case 398:
    7151 
    7152 /* Line 1806 of yacc.c  */
    7153 #line 1529 "parser.yy"
     7475  case 411:
     7476
     7477/* Line 1806 of yacc.c  */
     7478#line 1602 "parser.yy"
    71547479    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71557480    break;
    71567481
    7157   case 399:
    7158 
    7159 /* Line 1806 of yacc.c  */
    7160 #line 1531 "parser.yy"
     7482  case 412:
     7483
     7484/* Line 1806 of yacc.c  */
     7485#line 1604 "parser.yy"
    71617486    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71627487    break;
    71637488
    7164   case 400:
    7165 
    7166 /* Line 1806 of yacc.c  */
    7167 #line 1533 "parser.yy"
     7489  case 413:
     7490
     7491/* Line 1806 of yacc.c  */
     7492#line 1606 "parser.yy"
    71687493    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    71697494    break;
    71707495
    7171   case 402:
    7172 
    7173 /* Line 1806 of yacc.c  */
    7174 #line 1539 "parser.yy"
     7496  case 415:
     7497
     7498/* Line 1806 of yacc.c  */
     7499#line 1612 "parser.yy"
    71757500    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71767501    break;
    71777502
    7178   case 403:
    7179 
    7180 /* Line 1806 of yacc.c  */
    7181 #line 1544 "parser.yy"
     7503  case 416:
     7504
     7505/* Line 1806 of yacc.c  */
     7506#line 1617 "parser.yy"
    71827507    { (yyval.decl) = 0; }
    71837508    break;
    71847509
    7185   case 406:
    7186 
    7187 /* Line 1806 of yacc.c  */
    7188 #line 1551 "parser.yy"
     7510  case 419:
     7511
     7512/* Line 1806 of yacc.c  */
     7513#line 1624 "parser.yy"
    71897514    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71907515    break;
    71917516
    7192   case 409:
    7193 
    7194 /* Line 1806 of yacc.c  */
    7195 #line 1558 "parser.yy"
     7517  case 422:
     7518
     7519/* Line 1806 of yacc.c  */
     7520#line 1631 "parser.yy"
    71967521    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71977522    break;
    71987523
    7199   case 410:
    7200 
    7201 /* Line 1806 of yacc.c  */
    7202 #line 1560 "parser.yy"
     7524  case 423:
     7525
     7526/* Line 1806 of yacc.c  */
     7527#line 1633 "parser.yy"
    72037528    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72047529    break;
    72057530
    7206   case 412:
    7207 
    7208 /* Line 1806 of yacc.c  */
    7209 #line 1569 "parser.yy"
     7531  case 425:
     7532
     7533/* Line 1806 of yacc.c  */
     7534#line 1642 "parser.yy"
    72107535    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72117536    break;
    72127537
    7213   case 413:
    7214 
    7215 /* Line 1806 of yacc.c  */
    7216 #line 1572 "parser.yy"
     7538  case 426:
     7539
     7540/* Line 1806 of yacc.c  */
     7541#line 1645 "parser.yy"
    72177542    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72187543    break;
    72197544
    7220   case 414:
    7221 
    7222 /* Line 1806 of yacc.c  */
    7223 #line 1574 "parser.yy"
     7545  case 427:
     7546
     7547/* Line 1806 of yacc.c  */
     7548#line 1647 "parser.yy"
    72247549    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    72257550    break;
    72267551
    7227   case 419:
    7228 
    7229 /* Line 1806 of yacc.c  */
    7230 #line 1584 "parser.yy"
     7552  case 432:
     7553
     7554/* Line 1806 of yacc.c  */
     7555#line 1657 "parser.yy"
    72317556    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    72327557    break;
    72337558
    7234   case 421:
    7235 
    7236 /* Line 1806 of yacc.c  */
    7237 #line 1590 "parser.yy"
     7559  case 434:
     7560
     7561/* Line 1806 of yacc.c  */
     7562#line 1663 "parser.yy"
    72387563    {
    72397564                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    72427567    break;
    72437568
    7244   case 422:
    7245 
    7246 /* Line 1806 of yacc.c  */
    7247 #line 1595 "parser.yy"
     7569  case 435:
     7570
     7571/* Line 1806 of yacc.c  */
     7572#line 1668 "parser.yy"
    72487573    {
    72497574                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    72527577    break;
    72537578
    7254   case 424:
    7255 
    7256 /* Line 1806 of yacc.c  */
    7257 #line 1604 "parser.yy"
     7579  case 437:
     7580
     7581/* Line 1806 of yacc.c  */
     7582#line 1677 "parser.yy"
    72587583    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72597584    break;
    72607585
    7261   case 425:
    7262 
    7263 /* Line 1806 of yacc.c  */
    7264 #line 1613 "parser.yy"
     7586  case 438:
     7587
     7588/* Line 1806 of yacc.c  */
     7589#line 1686 "parser.yy"
    72657590    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    72667591    break;
    72677592
    7268   case 426:
    7269 
    7270 /* Line 1806 of yacc.c  */
    7271 #line 1615 "parser.yy"
     7593  case 439:
     7594
     7595/* Line 1806 of yacc.c  */
     7596#line 1688 "parser.yy"
    72727597    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    72737598    break;
    72747599
    7275   case 438:
    7276 
    7277 /* Line 1806 of yacc.c  */
    7278 #line 1640 "parser.yy"
     7600  case 451:
     7601
     7602/* Line 1806 of yacc.c  */
     7603#line 1713 "parser.yy"
    72797604    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72807605    break;
    72817606
    7282   case 442:
    7283 
    7284 /* Line 1806 of yacc.c  */
    7285 #line 1648 "parser.yy"
     7607  case 455:
     7608
     7609/* Line 1806 of yacc.c  */
     7610#line 1721 "parser.yy"
    72867611    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72877612    break;
    72887613
    7289   case 443:
    7290 
    7291 /* Line 1806 of yacc.c  */
    7292 #line 1653 "parser.yy"
     7614  case 456:
     7615
     7616/* Line 1806 of yacc.c  */
     7617#line 1726 "parser.yy"
    72937618    { (yyval.in) = 0; }
    72947619    break;
    72957620
    7296   case 444:
    7297 
    7298 /* Line 1806 of yacc.c  */
    7299 #line 1655 "parser.yy"
     7621  case 457:
     7622
     7623/* Line 1806 of yacc.c  */
     7624#line 1728 "parser.yy"
    73007625    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73017626    break;
    73027627
    7303   case 445:
    7304 
    7305 /* Line 1806 of yacc.c  */
    7306 #line 1659 "parser.yy"
     7628  case 458:
     7629
     7630/* Line 1806 of yacc.c  */
     7631#line 1730 "parser.yy"
     7632    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     7633    break;
     7634
     7635  case 459:
     7636
     7637/* Line 1806 of yacc.c  */
     7638#line 1734 "parser.yy"
    73077639    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    73087640    break;
    73097641
    7310   case 446:
    7311 
    7312 /* Line 1806 of yacc.c  */
    7313 #line 1660 "parser.yy"
     7642  case 460:
     7643
     7644/* Line 1806 of yacc.c  */
     7645#line 1735 "parser.yy"
    73147646    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    73157647    break;
    73167648
    7317   case 448:
    7318 
    7319 /* Line 1806 of yacc.c  */
    7320 #line 1665 "parser.yy"
     7649  case 461:
     7650
     7651/* Line 1806 of yacc.c  */
     7652#line 1740 "parser.yy"
     7653    { (yyval.in) = 0; }
     7654    break;
     7655
     7656  case 463:
     7657
     7658/* Line 1806 of yacc.c  */
     7659#line 1742 "parser.yy"
    73217660    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    73227661    break;
    73237662
    7324   case 449:
    7325 
    7326 /* Line 1806 of yacc.c  */
    7327 #line 1666 "parser.yy"
     7663  case 464:
     7664
     7665/* Line 1806 of yacc.c  */
     7666#line 1743 "parser.yy"
    73287667    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    73297668    break;
    73307669
    7331   case 450:
    7332 
    7333 /* Line 1806 of yacc.c  */
    7334 #line 1668 "parser.yy"
     7670  case 465:
     7671
     7672/* Line 1806 of yacc.c  */
     7673#line 1745 "parser.yy"
    73357674    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    73367675    break;
    73377676
    7338   case 452:
    7339 
    7340 /* Line 1806 of yacc.c  */
    7341 #line 1684 "parser.yy"
     7677  case 467:
     7678
     7679/* Line 1806 of yacc.c  */
     7680#line 1761 "parser.yy"
    73427681    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    73437682    break;
    73447683
    7345   case 454:
    7346 
    7347 /* Line 1806 of yacc.c  */
    7348 #line 1690 "parser.yy"
     7684  case 469:
     7685
     7686/* Line 1806 of yacc.c  */
     7687#line 1767 "parser.yy"
    73497688    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    73507689    break;
    73517690
    7352   case 455:
    7353 
    7354 /* Line 1806 of yacc.c  */
    7355 #line 1697 "parser.yy"
     7691  case 470:
     7692
     7693/* Line 1806 of yacc.c  */
     7694#line 1775 "parser.yy"
    73567695    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
    73577696    break;
    73587697
    7359   case 456:
    7360 
    7361 /* Line 1806 of yacc.c  */
    7362 #line 1699 "parser.yy"
     7698  case 471:
     7699
     7700/* Line 1806 of yacc.c  */
     7701#line 1777 "parser.yy"
    73637702    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
    73647703    break;
    73657704
    7366   case 457:
    7367 
    7368 /* Line 1806 of yacc.c  */
    7369 #line 1702 "parser.yy"
     7705  case 472:
     7706
     7707/* Line 1806 of yacc.c  */
     7708#line 1780 "parser.yy"
    73707709    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    73717710    break;
    73727711
    7373   case 458:
    7374 
    7375 /* Line 1806 of yacc.c  */
    7376 #line 1704 "parser.yy"
     7712  case 473:
     7713
     7714/* Line 1806 of yacc.c  */
     7715#line 1782 "parser.yy"
    73777716    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    73787717    break;
    73797718
    7380   case 459:
    7381 
    7382 /* Line 1806 of yacc.c  */
    7383 #line 1706 "parser.yy"
    7384     { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
    7385     break;
    7386 
    7387   case 460:
    7388 
    7389 /* Line 1806 of yacc.c  */
    7390 #line 1708 "parser.yy"
     7719  case 474:
     7720
     7721/* Line 1806 of yacc.c  */
     7722#line 1784 "parser.yy"
     7723    { (yyval.en) = new DesignatorNode( new CompositeExprNode2( build_opr2( OperatorNode::Range, (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ), true ); }
     7724    break;
     7725
     7726  case 475:
     7727
     7728/* Line 1806 of yacc.c  */
     7729#line 1786 "parser.yy"
    73917730    { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
    73927731    break;
    73937732
    7394   case 462:
    7395 
    7396 /* Line 1806 of yacc.c  */
    7397 #line 1732 "parser.yy"
     7733  case 477:
     7734
     7735/* Line 1806 of yacc.c  */
     7736#line 1810 "parser.yy"
    73987737    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73997738    break;
    74007739
    7401   case 463:
    7402 
    7403 /* Line 1806 of yacc.c  */
    7404 #line 1734 "parser.yy"
     7740  case 478:
     7741
     7742/* Line 1806 of yacc.c  */
     7743#line 1812 "parser.yy"
    74057744    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74067745    break;
    74077746
    7408   case 464:
    7409 
    7410 /* Line 1806 of yacc.c  */
    7411 #line 1736 "parser.yy"
     7747  case 479:
     7748
     7749/* Line 1806 of yacc.c  */
     7750#line 1814 "parser.yy"
    74127751    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    74137752    break;
    74147753
    7415   case 466:
    7416 
    7417 /* Line 1806 of yacc.c  */
    7418 #line 1742 "parser.yy"
     7754  case 481:
     7755
     7756/* Line 1806 of yacc.c  */
     7757#line 1820 "parser.yy"
    74197758    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74207759    break;
    74217760
    7422   case 467:
    7423 
    7424 /* Line 1806 of yacc.c  */
    7425 #line 1744 "parser.yy"
     7761  case 482:
     7762
     7763/* Line 1806 of yacc.c  */
     7764#line 1822 "parser.yy"
    74267765    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74277766    break;
    74287767
    7429   case 468:
    7430 
    7431 /* Line 1806 of yacc.c  */
    7432 #line 1749 "parser.yy"
     7768  case 483:
     7769
     7770/* Line 1806 of yacc.c  */
     7771#line 1827 "parser.yy"
    74337772    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    74347773    break;
    74357774
    7436   case 470:
    7437 
    7438 /* Line 1806 of yacc.c  */
    7439 #line 1755 "parser.yy"
     7775  case 485:
     7776
     7777/* Line 1806 of yacc.c  */
     7778#line 1833 "parser.yy"
    74407779    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    74417780    break;
    74427781
    7443   case 471:
    7444 
    7445 /* Line 1806 of yacc.c  */
    7446 #line 1760 "parser.yy"
     7782  case 486:
     7783
     7784/* Line 1806 of yacc.c  */
     7785#line 1838 "parser.yy"
    74477786    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    74487787    break;
    74497788
    7450   case 472:
    7451 
    7452 /* Line 1806 of yacc.c  */
    7453 #line 1762 "parser.yy"
     7789  case 487:
     7790
     7791/* Line 1806 of yacc.c  */
     7792#line 1840 "parser.yy"
    74547793    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    74557794    break;
    74567795
    7457   case 474:
    7458 
    7459 /* Line 1806 of yacc.c  */
    7460 #line 1768 "parser.yy"
     7796  case 489:
     7797
     7798/* Line 1806 of yacc.c  */
     7799#line 1846 "parser.yy"
    74617800    { (yyval.tclass) = DeclarationNode::Type; }
    74627801    break;
    74637802
    7464   case 475:
    7465 
    7466 /* Line 1806 of yacc.c  */
    7467 #line 1770 "parser.yy"
     7803  case 490:
     7804
     7805/* Line 1806 of yacc.c  */
     7806#line 1848 "parser.yy"
    74687807    { (yyval.tclass) = DeclarationNode::Ftype; }
    74697808    break;
    74707809
    7471   case 476:
    7472 
    7473 /* Line 1806 of yacc.c  */
    7474 #line 1772 "parser.yy"
     7810  case 491:
     7811
     7812/* Line 1806 of yacc.c  */
     7813#line 1850 "parser.yy"
    74757814    { (yyval.tclass) = DeclarationNode::Dtype; }
    74767815    break;
    74777816
    7478   case 477:
    7479 
    7480 /* Line 1806 of yacc.c  */
    7481 #line 1777 "parser.yy"
     7817  case 492:
     7818
     7819/* Line 1806 of yacc.c  */
     7820#line 1855 "parser.yy"
    74827821    { (yyval.decl) = 0; }
    74837822    break;
    74847823
    7485   case 478:
    7486 
    7487 /* Line 1806 of yacc.c  */
    7488 #line 1779 "parser.yy"
    7489     { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    7490     break;
    7491 
    7492   case 479:
    7493 
    7494 /* Line 1806 of yacc.c  */
    7495 #line 1784 "parser.yy"
     7824  case 493:
     7825
     7826/* Line 1806 of yacc.c  */
     7827#line 1857 "parser.yy"
     7828    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     7829    break;
     7830
     7831  case 494:
     7832
     7833/* Line 1806 of yacc.c  */
     7834#line 1862 "parser.yy"
    74967835    {
    7497                         typedefTable.openContext( *(yyvsp[(2) - (5)].tok) );
    7498                         (yyval.decl) = DeclarationNode::newContextUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
     7836                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     7837                        (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
    74997838                }
    75007839    break;
    75017840
    7502   case 480:
    7503 
    7504 /* Line 1806 of yacc.c  */
    7505 #line 1789 "parser.yy"
     7841  case 495:
     7842
     7843/* Line 1806 of yacc.c  */
     7844#line 1867 "parser.yy"
    75067845    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    75077846    break;
    75087847
    7509   case 481:
    7510 
    7511 /* Line 1806 of yacc.c  */
    7512 #line 1791 "parser.yy"
     7848  case 496:
     7849
     7850/* Line 1806 of yacc.c  */
     7851#line 1869 "parser.yy"
    75137852    { (yyval.decl) = 0; }
    75147853    break;
    75157854
    7516   case 482:
    7517 
    7518 /* Line 1806 of yacc.c  */
    7519 #line 1796 "parser.yy"
     7855  case 497:
     7856
     7857/* Line 1806 of yacc.c  */
     7858#line 1874 "parser.yy"
    75207859    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    75217860    break;
    75227861
    7523   case 484:
    7524 
    7525 /* Line 1806 of yacc.c  */
    7526 #line 1799 "parser.yy"
     7862  case 499:
     7863
     7864/* Line 1806 of yacc.c  */
     7865#line 1877 "parser.yy"
    75277866    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    75287867    break;
    75297868
    7530   case 485:
    7531 
    7532 /* Line 1806 of yacc.c  */
    7533 #line 1801 "parser.yy"
     7869  case 500:
     7870
     7871/* Line 1806 of yacc.c  */
     7872#line 1879 "parser.yy"
    75347873    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    75357874    break;
    75367875
    7537   case 486:
    7538 
    7539 /* Line 1806 of yacc.c  */
    7540 #line 1806 "parser.yy"
     7876  case 501:
     7877
     7878/* Line 1806 of yacc.c  */
     7879#line 1884 "parser.yy"
    75417880    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    75427881    break;
    75437882
    7544   case 487:
    7545 
    7546 /* Line 1806 of yacc.c  */
    7547 #line 1808 "parser.yy"
     7883  case 502:
     7884
     7885/* Line 1806 of yacc.c  */
     7886#line 1886 "parser.yy"
    75487887    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    75497888    break;
    75507889
    7551   case 488:
    7552 
    7553 /* Line 1806 of yacc.c  */
    7554 #line 1810 "parser.yy"
     7890  case 503:
     7891
     7892/* Line 1806 of yacc.c  */
     7893#line 1888 "parser.yy"
    75557894    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    75567895    break;
    75577896
    7558   case 489:
    7559 
    7560 /* Line 1806 of yacc.c  */
    7561 #line 1815 "parser.yy"
     7897  case 504:
     7898
     7899/* Line 1806 of yacc.c  */
     7900#line 1893 "parser.yy"
    75627901    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    75637902    break;
    75647903
    7565   case 490:
    7566 
    7567 /* Line 1806 of yacc.c  */
    7568 #line 1817 "parser.yy"
     7904  case 505:
     7905
     7906/* Line 1806 of yacc.c  */
     7907#line 1895 "parser.yy"
    75697908    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    75707909    break;
    75717910
    7572   case 491:
    7573 
    7574 /* Line 1806 of yacc.c  */
    7575 #line 1822 "parser.yy"
     7911  case 506:
     7912
     7913/* Line 1806 of yacc.c  */
     7914#line 1900 "parser.yy"
    75767915    {
    75777916                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    75807919    break;
    75817920
    7582   case 492:
    7583 
    7584 /* Line 1806 of yacc.c  */
    7585 #line 1827 "parser.yy"
     7921  case 507:
     7922
     7923/* Line 1806 of yacc.c  */
     7924#line 1905 "parser.yy"
    75867925    {
    75877926                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    75907929    break;
    75917930
    7592   case 493:
    7593 
    7594 /* Line 1806 of yacc.c  */
    7595 #line 1835 "parser.yy"
     7931  case 508:
     7932
     7933/* Line 1806 of yacc.c  */
     7934#line 1913 "parser.yy"
    75967935    {
    75977936                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
    7598                         (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
     7937                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
    75997938                }
    76007939    break;
    76017940
    7602   case 494:
    7603 
    7604 /* Line 1806 of yacc.c  */
    7605 #line 1840 "parser.yy"
     7941  case 509:
     7942
     7943/* Line 1806 of yacc.c  */
     7944#line 1918 "parser.yy"
    76067945    {
    7607                         typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
     7946                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
    76087947                        typedefTable.enterScope();
    76097948                }
    76107949    break;
    76117950
    7612   case 495:
    7613 
    7614 /* Line 1806 of yacc.c  */
    7615 #line 1845 "parser.yy"
     7951  case 510:
     7952
     7953/* Line 1806 of yacc.c  */
     7954#line 1923 "parser.yy"
    76167955    {
    7617                         typedefTable.leaveContext();
     7956                        typedefTable.leaveTrait();
    76187957                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
    7619                         (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
     7958                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
    76207959                }
    76217960    break;
    76227961
    7623   case 497:
    7624 
    7625 /* Line 1806 of yacc.c  */
    7626 #line 1855 "parser.yy"
     7962  case 512:
     7963
     7964/* Line 1806 of yacc.c  */
     7965#line 1933 "parser.yy"
    76277966    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    76287967    break;
    76297968
    7630   case 500:
    7631 
    7632 /* Line 1806 of yacc.c  */
    7633 #line 1865 "parser.yy"
     7969  case 515:
     7970
     7971/* Line 1806 of yacc.c  */
     7972#line 1943 "parser.yy"
    76347973    {
    76357974                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76387977    break;
    76397978
    7640   case 501:
    7641 
    7642 /* Line 1806 of yacc.c  */
    7643 #line 1870 "parser.yy"
     7979  case 516:
     7980
     7981/* Line 1806 of yacc.c  */
     7982#line 1948 "parser.yy"
    76447983    {
    76457984                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76487987    break;
    76497988
    7650   case 502:
    7651 
    7652 /* Line 1806 of yacc.c  */
    7653 #line 1875 "parser.yy"
     7989  case 517:
     7990
     7991/* Line 1806 of yacc.c  */
     7992#line 1953 "parser.yy"
    76547993    {
    76557994                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    76587997    break;
    76597998
    7660   case 503:
    7661 
    7662 /* Line 1806 of yacc.c  */
    7663 #line 1883 "parser.yy"
     7999  case 518:
     8000
     8001/* Line 1806 of yacc.c  */
     8002#line 1961 "parser.yy"
    76648003    {
    76658004                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76688007    break;
    76698008
    7670   case 504:
    7671 
    7672 /* Line 1806 of yacc.c  */
    7673 #line 1888 "parser.yy"
     8009  case 519:
     8010
     8011/* Line 1806 of yacc.c  */
     8012#line 1966 "parser.yy"
    76748013    {
    76758014                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76788017    break;
    76798018
    7680   case 505:
    7681 
    7682 /* Line 1806 of yacc.c  */
    7683 #line 1898 "parser.yy"
     8019  case 520:
     8020
     8021/* Line 1806 of yacc.c  */
     8022#line 1976 "parser.yy"
    76848023    {}
    76858024    break;
    76868025
    7687   case 506:
    7688 
    7689 /* Line 1806 of yacc.c  */
    7690 #line 1900 "parser.yy"
     8026  case 521:
     8027
     8028/* Line 1806 of yacc.c  */
     8029#line 1978 "parser.yy"
    76918030    {
    76928031                        if ( theTree ) {
     
    76988037    break;
    76998038
    7700   case 508:
    7701 
    7702 /* Line 1806 of yacc.c  */
    7703 #line 1912 "parser.yy"
     8039  case 523:
     8040
     8041/* Line 1806 of yacc.c  */
     8042#line 1990 "parser.yy"
    77048043    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77058044    break;
    77068045
    7707   case 509:
    7708 
    7709 /* Line 1806 of yacc.c  */
    7710 #line 1917 "parser.yy"
     8046  case 524:
     8047
     8048/* Line 1806 of yacc.c  */
     8049#line 1995 "parser.yy"
    77118050    { (yyval.decl) = 0; }
    77128051    break;
    77138052
    7714   case 513:
    7715 
    7716 /* Line 1806 of yacc.c  */
    7717 #line 1925 "parser.yy"
     8053  case 528:
     8054
     8055/* Line 1806 of yacc.c  */
     8056#line 2003 "parser.yy"
    77188057    {}
    77198058    break;
    77208059
    7721   case 514:
    7722 
    7723 /* Line 1806 of yacc.c  */
    7724 #line 1927 "parser.yy"
     8060  case 529:
     8061
     8062/* Line 1806 of yacc.c  */
     8063#line 2005 "parser.yy"
    77258064    {
    77268065                        linkageStack.push( linkage );
     
    77298068    break;
    77308069
    7731   case 515:
    7732 
    7733 /* Line 1806 of yacc.c  */
    7734 #line 1932 "parser.yy"
     8070  case 530:
     8071
     8072/* Line 1806 of yacc.c  */
     8073#line 2010 "parser.yy"
    77358074    {
    77368075                        linkage = linkageStack.top();
     
    77408079    break;
    77418080
    7742   case 516:
    7743 
    7744 /* Line 1806 of yacc.c  */
    7745 #line 1938 "parser.yy"
    7746     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7747     break;
    7748 
    7749   case 518:
    7750 
    7751 /* Line 1806 of yacc.c  */
    7752 #line 1948 "parser.yy"
     8081  case 531:
     8082
     8083/* Line 1806 of yacc.c  */
     8084#line 2016 "parser.yy"
     8085    {   // mark all fields in list
     8086                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     8087                                iter->set_extension( true );
     8088                        (yyval.decl) = (yyvsp[(2) - (2)].decl);
     8089                }
     8090    break;
     8091
     8092  case 533:
     8093
     8094/* Line 1806 of yacc.c  */
     8095#line 2031 "parser.yy"
    77538096    {
    77548097                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77588101    break;
    77598102
    7760   case 519:
    7761 
    7762 /* Line 1806 of yacc.c  */
    7763 #line 1954 "parser.yy"
     8103  case 534:
     8104
     8105/* Line 1806 of yacc.c  */
     8106#line 2037 "parser.yy"
    77648107    {
    77658108                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77698112    break;
    77708113
    7771   case 520:
    7772 
    7773 /* Line 1806 of yacc.c  */
    7774 #line 1963 "parser.yy"
     8114  case 535:
     8115
     8116/* Line 1806 of yacc.c  */
     8117#line 2046 "parser.yy"
    77758118    {
    77768119                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77808123    break;
    77818124
    7782   case 521:
    7783 
    7784 /* Line 1806 of yacc.c  */
    7785 #line 1969 "parser.yy"
     8125  case 536:
     8126
     8127/* Line 1806 of yacc.c  */
     8128#line 2052 "parser.yy"
    77868129    {
    77878130                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77918134    break;
    77928135
    7793   case 522:
    7794 
    7795 /* Line 1806 of yacc.c  */
    7796 #line 1975 "parser.yy"
     8136  case 537:
     8137
     8138/* Line 1806 of yacc.c  */
     8139#line 2058 "parser.yy"
    77978140    {
    77988141                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78028145    break;
    78038146
    7804   case 523:
    7805 
    7806 /* Line 1806 of yacc.c  */
    7807 #line 1981 "parser.yy"
     8147  case 538:
     8148
     8149/* Line 1806 of yacc.c  */
     8150#line 2064 "parser.yy"
    78088151    {
    78098152                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78138156    break;
    78148157
    7815   case 524:
    7816 
    7817 /* Line 1806 of yacc.c  */
    7818 #line 1987 "parser.yy"
     8158  case 539:
     8159
     8160/* Line 1806 of yacc.c  */
     8161#line 2070 "parser.yy"
    78198162    {
    78208163                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78248167    break;
    78258168
    7826   case 525:
    7827 
    7828 /* Line 1806 of yacc.c  */
    7829 #line 1995 "parser.yy"
     8169  case 540:
     8170
     8171/* Line 1806 of yacc.c  */
     8172#line 2078 "parser.yy"
    78308173    {
    78318174                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78358178    break;
    78368179
    7837   case 526:
    7838 
    7839 /* Line 1806 of yacc.c  */
    7840 #line 2001 "parser.yy"
     8180  case 541:
     8181
     8182/* Line 1806 of yacc.c  */
     8183#line 2084 "parser.yy"
    78418184    {
    78428185                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78468189    break;
    78478190
    7848   case 527:
    7849 
    7850 /* Line 1806 of yacc.c  */
    7851 #line 2009 "parser.yy"
     8191  case 542:
     8192
     8193/* Line 1806 of yacc.c  */
     8194#line 2092 "parser.yy"
    78528195    {
    78538196                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78578200    break;
    78588201
    7859   case 528:
    7860 
    7861 /* Line 1806 of yacc.c  */
    7862 #line 2015 "parser.yy"
     8202  case 543:
     8203
     8204/* Line 1806 of yacc.c  */
     8205#line 2098 "parser.yy"
    78638206    {
    78648207                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78688211    break;
    78698212
    7870   case 532:
    7871 
    7872 /* Line 1806 of yacc.c  */
    7873 #line 2030 "parser.yy"
    7874     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    7875     break;
    7876 
    7877   case 535:
    7878 
    7879 /* Line 1806 of yacc.c  */
    7880 #line 2040 "parser.yy"
     8213  case 547:
     8214
     8215/* Line 1806 of yacc.c  */
     8216#line 2113 "parser.yy"
     8217    { (yyval.en) = new CompositeExprNode2( build_opr2( OperatorNode::Range, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
     8218    break;
     8219
     8220  case 550:
     8221
     8222/* Line 1806 of yacc.c  */
     8223#line 2123 "parser.yy"
    78818224    { (yyval.decl) = 0; }
    78828225    break;
    78838226
    7884   case 538:
    7885 
    7886 /* Line 1806 of yacc.c  */
    7887 #line 2047 "parser.yy"
     8227  case 553:
     8228
     8229/* Line 1806 of yacc.c  */
     8230#line 2130 "parser.yy"
    78888231    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    78898232    break;
    78908233
    7891   case 539:
    7892 
    7893 /* Line 1806 of yacc.c  */
    7894 #line 2053 "parser.yy"
     8234  case 554:
     8235
     8236/* Line 1806 of yacc.c  */
     8237#line 2136 "parser.yy"
    78958238    { (yyval.decl) = 0; }
    78968239    break;
    78978240
    7898   case 545:
    7899 
    7900 /* Line 1806 of yacc.c  */
    7901 #line 2068 "parser.yy"
     8241  case 560:
     8242
     8243/* Line 1806 of yacc.c  */
     8244#line 2151 "parser.yy"
    79028245    {}
    79038246    break;
    79048247
    7905   case 546:
    7906 
    7907 /* Line 1806 of yacc.c  */
    7908 #line 2069 "parser.yy"
     8248  case 561:
     8249
     8250/* Line 1806 of yacc.c  */
     8251#line 2152 "parser.yy"
    79098252    {}
    79108253    break;
    79118254
    7912   case 547:
    7913 
    7914 /* Line 1806 of yacc.c  */
    7915 #line 2070 "parser.yy"
     8255  case 562:
     8256
     8257/* Line 1806 of yacc.c  */
     8258#line 2153 "parser.yy"
    79168259    {}
    79178260    break;
    79188261
    7919   case 548:
    7920 
    7921 /* Line 1806 of yacc.c  */
    7922 #line 2071 "parser.yy"
     8262  case 563:
     8263
     8264/* Line 1806 of yacc.c  */
     8265#line 2154 "parser.yy"
    79238266    {}
    79248267    break;
    79258268
    7926   case 549:
    7927 
    7928 /* Line 1806 of yacc.c  */
    7929 #line 2106 "parser.yy"
     8269  case 564:
     8270
     8271/* Line 1806 of yacc.c  */
     8272#line 2189 "parser.yy"
    79308273    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79318274    break;
    79328275
    7933   case 551:
    7934 
    7935 /* Line 1806 of yacc.c  */
    7936 #line 2109 "parser.yy"
     8276  case 566:
     8277
     8278/* Line 1806 of yacc.c  */
     8279#line 2192 "parser.yy"
    79378280    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79388281    break;
    79398282
    7940   case 552:
    7941 
    7942 /* Line 1806 of yacc.c  */
    7943 #line 2111 "parser.yy"
     8283  case 567:
     8284
     8285/* Line 1806 of yacc.c  */
     8286#line 2194 "parser.yy"
    79448287    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79458288    break;
    79468289
    7947   case 553:
    7948 
    7949 /* Line 1806 of yacc.c  */
    7950 #line 2116 "parser.yy"
     8290  case 568:
     8291
     8292/* Line 1806 of yacc.c  */
     8293#line 2199 "parser.yy"
    79518294    {
    79528295                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    79558298    break;
    79568299
    7957   case 554:
    7958 
    7959 /* Line 1806 of yacc.c  */
    7960 #line 2121 "parser.yy"
     8300  case 569:
     8301
     8302/* Line 1806 of yacc.c  */
     8303#line 2204 "parser.yy"
    79618304    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79628305    break;
    79638306
    7964   case 555:
    7965 
    7966 /* Line 1806 of yacc.c  */
    7967 #line 2126 "parser.yy"
     8307  case 570:
     8308
     8309/* Line 1806 of yacc.c  */
     8310#line 2209 "parser.yy"
    79688311    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    79698312    break;
    79708313
    7971   case 556:
    7972 
    7973 /* Line 1806 of yacc.c  */
    7974 #line 2128 "parser.yy"
     8314  case 571:
     8315
     8316/* Line 1806 of yacc.c  */
     8317#line 2211 "parser.yy"
    79758318    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    79768319    break;
    79778320
    7978   case 557:
    7979 
    7980 /* Line 1806 of yacc.c  */
    7981 #line 2130 "parser.yy"
     8321  case 572:
     8322
     8323/* Line 1806 of yacc.c  */
     8324#line 2213 "parser.yy"
    79828325    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79838326    break;
    79848327
    7985   case 558:
    7986 
    7987 /* Line 1806 of yacc.c  */
    7988 #line 2135 "parser.yy"
     8328  case 573:
     8329
     8330/* Line 1806 of yacc.c  */
     8331#line 2218 "parser.yy"
    79898332    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    79908333    break;
    79918334
    7992   case 559:
    7993 
    7994 /* Line 1806 of yacc.c  */
    7995 #line 2137 "parser.yy"
     8335  case 574:
     8336
     8337/* Line 1806 of yacc.c  */
     8338#line 2220 "parser.yy"
    79968339    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    79978340    break;
    79988341
    7999   case 560:
    8000 
    8001 /* Line 1806 of yacc.c  */
    8002 #line 2139 "parser.yy"
     8342  case 575:
     8343
     8344/* Line 1806 of yacc.c  */
     8345#line 2222 "parser.yy"
    80038346    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80048347    break;
    80058348
    8006   case 561:
    8007 
    8008 /* Line 1806 of yacc.c  */
    8009 #line 2141 "parser.yy"
     8349  case 576:
     8350
     8351/* Line 1806 of yacc.c  */
     8352#line 2224 "parser.yy"
    80108353    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80118354    break;
    80128355
    8013   case 562:
    8014 
    8015 /* Line 1806 of yacc.c  */
    8016 #line 2146 "parser.yy"
     8356  case 577:
     8357
     8358/* Line 1806 of yacc.c  */
     8359#line 2229 "parser.yy"
    80178360    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80188361    break;
    80198362
    8020   case 563:
    8021 
    8022 /* Line 1806 of yacc.c  */
    8023 #line 2148 "parser.yy"
     8363  case 578:
     8364
     8365/* Line 1806 of yacc.c  */
     8366#line 2231 "parser.yy"
    80248367    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80258368    break;
    80268369
    8027   case 564:
    8028 
    8029 /* Line 1806 of yacc.c  */
    8030 #line 2158 "parser.yy"
    8031     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8032     break;
    8033 
    8034   case 566:
    8035 
    8036 /* Line 1806 of yacc.c  */
    8037 #line 2161 "parser.yy"
    8038     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8039     break;
    8040 
    8041   case 567:
    8042 
    8043 /* Line 1806 of yacc.c  */
    8044 #line 2166 "parser.yy"
    8045     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8046     break;
    8047 
    8048   case 568:
    8049 
    8050 /* Line 1806 of yacc.c  */
    8051 #line 2168 "parser.yy"
    8052     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8053     break;
    8054 
    8055   case 569:
    8056 
    8057 /* Line 1806 of yacc.c  */
    8058 #line 2170 "parser.yy"
    8059     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8060     break;
    8061 
    8062   case 570:
    8063 
    8064 /* Line 1806 of yacc.c  */
    8065 #line 2175 "parser.yy"
    8066     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8067     break;
    8068 
    8069   case 571:
    8070 
    8071 /* Line 1806 of yacc.c  */
    8072 #line 2177 "parser.yy"
    8073     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8074     break;
    8075 
    8076   case 572:
    8077 
    8078 /* Line 1806 of yacc.c  */
    8079 #line 2179 "parser.yy"
    8080     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8081     break;
    8082 
    8083   case 573:
    8084 
    8085 /* Line 1806 of yacc.c  */
    8086 #line 2184 "parser.yy"
    8087     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8088     break;
    8089 
    8090   case 574:
    8091 
    8092 /* Line 1806 of yacc.c  */
    8093 #line 2186 "parser.yy"
    8094     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8095     break;
    8096 
    8097   case 575:
    8098 
    8099 /* Line 1806 of yacc.c  */
    8100 #line 2188 "parser.yy"
    8101     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8102     break;
    8103 
    81048370  case 579:
    8105 
    8106 /* Line 1806 of yacc.c  */
    8107 #line 2203 "parser.yy"
    8108     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    8109     break;
    8110 
    8111   case 580:
    8112 
    8113 /* Line 1806 of yacc.c  */
    8114 #line 2205 "parser.yy"
    8115     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    8116     break;
    8117 
    8118   case 581:
    8119 
    8120 /* Line 1806 of yacc.c  */
    8121 #line 2207 "parser.yy"
    8122     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8123     break;
    8124 
    8125   case 582:
    8126 
    8127 /* Line 1806 of yacc.c  */
    8128 #line 2212 "parser.yy"
    8129     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8130     break;
    8131 
    8132   case 583:
    8133 
    8134 /* Line 1806 of yacc.c  */
    8135 #line 2214 "parser.yy"
    8136     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8137     break;
    8138 
    8139   case 584:
    8140 
    8141 /* Line 1806 of yacc.c  */
    8142 #line 2216 "parser.yy"
    8143     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8144     break;
    8145 
    8146   case 585:
    8147 
    8148 /* Line 1806 of yacc.c  */
    8149 #line 2221 "parser.yy"
    8150     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8151     break;
    8152 
    8153   case 586:
    8154 
    8155 /* Line 1806 of yacc.c  */
    8156 #line 2223 "parser.yy"
    8157     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8158     break;
    8159 
    8160   case 587:
    8161 
    8162 /* Line 1806 of yacc.c  */
    8163 #line 2225 "parser.yy"
    8164     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8165     break;
    8166 
    8167   case 588:
    81688371
    81698372/* Line 1806 of yacc.c  */
     
    81728375    break;
    81738376
    8174   case 590:
     8377  case 581:
    81758378
    81768379/* Line 1806 of yacc.c  */
     
    81798382    break;
    81808383
    8181   case 591:
    8182 
    8183 /* Line 1806 of yacc.c  */
    8184 #line 2245 "parser.yy"
     8384  case 582:
     8385
     8386/* Line 1806 of yacc.c  */
     8387#line 2248 "parser.yy"
     8388    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8389    break;
     8390
     8391  case 583:
     8392
     8393/* Line 1806 of yacc.c  */
     8394#line 2250 "parser.yy"
     8395    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8396    break;
     8397
     8398  case 584:
     8399
     8400/* Line 1806 of yacc.c  */
     8401#line 2252 "parser.yy"
     8402    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8403    break;
     8404
     8405  case 585:
     8406
     8407/* Line 1806 of yacc.c  */
     8408#line 2257 "parser.yy"
     8409    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8410    break;
     8411
     8412  case 586:
     8413
     8414/* Line 1806 of yacc.c  */
     8415#line 2259 "parser.yy"
     8416    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8417    break;
     8418
     8419  case 587:
     8420
     8421/* Line 1806 of yacc.c  */
     8422#line 2261 "parser.yy"
     8423    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8424    break;
     8425
     8426  case 588:
     8427
     8428/* Line 1806 of yacc.c  */
     8429#line 2266 "parser.yy"
     8430    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8431    break;
     8432
     8433  case 589:
     8434
     8435/* Line 1806 of yacc.c  */
     8436#line 2268 "parser.yy"
     8437    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8438    break;
     8439
     8440  case 590:
     8441
     8442/* Line 1806 of yacc.c  */
     8443#line 2270 "parser.yy"
     8444    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8445    break;
     8446
     8447  case 594:
     8448
     8449/* Line 1806 of yacc.c  */
     8450#line 2285 "parser.yy"
     8451    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     8452    break;
     8453
     8454  case 595:
     8455
     8456/* Line 1806 of yacc.c  */
     8457#line 2287 "parser.yy"
     8458    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     8459    break;
     8460
     8461  case 596:
     8462
     8463/* Line 1806 of yacc.c  */
     8464#line 2289 "parser.yy"
     8465    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8466    break;
     8467
     8468  case 597:
     8469
     8470/* Line 1806 of yacc.c  */
     8471#line 2294 "parser.yy"
     8472    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8473    break;
     8474
     8475  case 598:
     8476
     8477/* Line 1806 of yacc.c  */
     8478#line 2296 "parser.yy"
     8479    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8480    break;
     8481
     8482  case 599:
     8483
     8484/* Line 1806 of yacc.c  */
     8485#line 2298 "parser.yy"
     8486    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8487    break;
     8488
     8489  case 600:
     8490
     8491/* Line 1806 of yacc.c  */
     8492#line 2303 "parser.yy"
     8493    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8494    break;
     8495
     8496  case 601:
     8497
     8498/* Line 1806 of yacc.c  */
     8499#line 2305 "parser.yy"
     8500    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8501    break;
     8502
     8503  case 602:
     8504
     8505/* Line 1806 of yacc.c  */
     8506#line 2307 "parser.yy"
     8507    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8508    break;
     8509
     8510  case 603:
     8511
     8512/* Line 1806 of yacc.c  */
     8513#line 2322 "parser.yy"
    81858514    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81868515    break;
    81878516
    8188   case 593:
    8189 
    8190 /* Line 1806 of yacc.c  */
    8191 #line 2251 "parser.yy"
     8517  case 605:
     8518
     8519/* Line 1806 of yacc.c  */
     8520#line 2325 "parser.yy"
     8521    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8522    break;
     8523
     8524  case 606:
     8525
     8526/* Line 1806 of yacc.c  */
     8527#line 2327 "parser.yy"
     8528    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8529    break;
     8530
     8531  case 608:
     8532
     8533/* Line 1806 of yacc.c  */
     8534#line 2333 "parser.yy"
    81928535    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81938536    break;
    81948537
    8195   case 594:
    8196 
    8197 /* Line 1806 of yacc.c  */
    8198 #line 2256 "parser.yy"
     8538  case 609:
     8539
     8540/* Line 1806 of yacc.c  */
     8541#line 2338 "parser.yy"
    81998542    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82008543    break;
    82018544
    8202   case 595:
    8203 
    8204 /* Line 1806 of yacc.c  */
    8205 #line 2258 "parser.yy"
     8545  case 610:
     8546
     8547/* Line 1806 of yacc.c  */
     8548#line 2340 "parser.yy"
    82068549    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82078550    break;
    82088551
    8209   case 596:
    8210 
    8211 /* Line 1806 of yacc.c  */
    8212 #line 2260 "parser.yy"
     8552  case 611:
     8553
     8554/* Line 1806 of yacc.c  */
     8555#line 2342 "parser.yy"
    82138556    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82148557    break;
    82158558
    8216   case 597:
    8217 
    8218 /* Line 1806 of yacc.c  */
    8219 #line 2265 "parser.yy"
     8559  case 612:
     8560
     8561/* Line 1806 of yacc.c  */
     8562#line 2347 "parser.yy"
    82208563    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82218564    break;
    82228565
    8223   case 598:
    8224 
    8225 /* Line 1806 of yacc.c  */
    8226 #line 2267 "parser.yy"
     8566  case 613:
     8567
     8568/* Line 1806 of yacc.c  */
     8569#line 2349 "parser.yy"
    82278570    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82288571    break;
    82298572
    8230   case 599:
    8231 
    8232 /* Line 1806 of yacc.c  */
    8233 #line 2269 "parser.yy"
     8573  case 614:
     8574
     8575/* Line 1806 of yacc.c  */
     8576#line 2351 "parser.yy"
    82348577    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82358578    break;
    82368579
    8237   case 600:
    8238 
    8239 /* Line 1806 of yacc.c  */
    8240 #line 2271 "parser.yy"
     8580  case 615:
     8581
     8582/* Line 1806 of yacc.c  */
     8583#line 2353 "parser.yy"
    82418584    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82428585    break;
    82438586
    8244   case 601:
    8245 
    8246 /* Line 1806 of yacc.c  */
    8247 #line 2276 "parser.yy"
     8587  case 616:
     8588
     8589/* Line 1806 of yacc.c  */
     8590#line 2358 "parser.yy"
    82488591    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    82498592    break;
    82508593
    8251   case 602:
    8252 
    8253 /* Line 1806 of yacc.c  */
    8254 #line 2278 "parser.yy"
     8594  case 617:
     8595
     8596/* Line 1806 of yacc.c  */
     8597#line 2360 "parser.yy"
    82558598    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    82568599    break;
    82578600
    8258   case 603:
    8259 
    8260 /* Line 1806 of yacc.c  */
    8261 #line 2280 "parser.yy"
     8601  case 618:
     8602
     8603/* Line 1806 of yacc.c  */
     8604#line 2362 "parser.yy"
    82628605    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82638606    break;
    82648607
    8265   case 604:
    8266 
    8267 /* Line 1806 of yacc.c  */
    8268 #line 2290 "parser.yy"
     8608  case 619:
     8609
     8610/* Line 1806 of yacc.c  */
     8611#line 2372 "parser.yy"
    82698612    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82708613    break;
    82718614
    8272   case 606:
    8273 
    8274 /* Line 1806 of yacc.c  */
    8275 #line 2293 "parser.yy"
     8615  case 621:
     8616
     8617/* Line 1806 of yacc.c  */
     8618#line 2375 "parser.yy"
    82768619    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82778620    break;
    82788621
    8279   case 607:
    8280 
    8281 /* Line 1806 of yacc.c  */
    8282 #line 2295 "parser.yy"
     8622  case 622:
     8623
     8624/* Line 1806 of yacc.c  */
     8625#line 2377 "parser.yy"
    82838626    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82848627    break;
    82858628
    8286   case 608:
    8287 
    8288 /* Line 1806 of yacc.c  */
    8289 #line 2300 "parser.yy"
     8629  case 623:
     8630
     8631/* Line 1806 of yacc.c  */
     8632#line 2382 "parser.yy"
    82908633    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82918634    break;
    82928635
    8293   case 609:
    8294 
    8295 /* Line 1806 of yacc.c  */
    8296 #line 2302 "parser.yy"
     8636  case 624:
     8637
     8638/* Line 1806 of yacc.c  */
     8639#line 2384 "parser.yy"
    82978640    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82988641    break;
    82998642
    8300   case 610:
    8301 
    8302 /* Line 1806 of yacc.c  */
    8303 #line 2304 "parser.yy"
     8643  case 625:
     8644
     8645/* Line 1806 of yacc.c  */
     8646#line 2386 "parser.yy"
    83048647    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83058648    break;
    83068649
    8307   case 611:
    8308 
    8309 /* Line 1806 of yacc.c  */
    8310 #line 2309 "parser.yy"
     8650  case 626:
     8651
     8652/* Line 1806 of yacc.c  */
     8653#line 2391 "parser.yy"
    83118654    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83128655    break;
    83138656
    8314   case 612:
    8315 
    8316 /* Line 1806 of yacc.c  */
    8317 #line 2311 "parser.yy"
     8657  case 627:
     8658
     8659/* Line 1806 of yacc.c  */
     8660#line 2393 "parser.yy"
    83188661    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83198662    break;
    83208663
    8321   case 613:
    8322 
    8323 /* Line 1806 of yacc.c  */
    8324 #line 2313 "parser.yy"
     8664  case 628:
     8665
     8666/* Line 1806 of yacc.c  */
     8667#line 2395 "parser.yy"
    83258668    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83268669    break;
    83278670
    8328   case 614:
    8329 
    8330 /* Line 1806 of yacc.c  */
    8331 #line 2315 "parser.yy"
     8671  case 629:
     8672
     8673/* Line 1806 of yacc.c  */
     8674#line 2397 "parser.yy"
    83328675    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83338676    break;
    83348677
    8335   case 615:
    8336 
    8337 /* Line 1806 of yacc.c  */
    8338 #line 2320 "parser.yy"
     8678  case 630:
     8679
     8680/* Line 1806 of yacc.c  */
     8681#line 2402 "parser.yy"
    83398682    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83408683    break;
    83418684
    8342   case 616:
    8343 
    8344 /* Line 1806 of yacc.c  */
    8345 #line 2322 "parser.yy"
     8685  case 631:
     8686
     8687/* Line 1806 of yacc.c  */
     8688#line 2404 "parser.yy"
    83468689    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83478690    break;
    83488691
    8349   case 617:
    8350 
    8351 /* Line 1806 of yacc.c  */
    8352 #line 2324 "parser.yy"
     8692  case 632:
     8693
     8694/* Line 1806 of yacc.c  */
     8695#line 2406 "parser.yy"
    83538696    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83548697    break;
    83558698
    8356   case 618:
    8357 
    8358 /* Line 1806 of yacc.c  */
    8359 #line 2355 "parser.yy"
     8699  case 633:
     8700
     8701/* Line 1806 of yacc.c  */
     8702#line 2437 "parser.yy"
    83608703    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83618704    break;
    83628705
    8363   case 620:
    8364 
    8365 /* Line 1806 of yacc.c  */
    8366 #line 2358 "parser.yy"
     8706  case 635:
     8707
     8708/* Line 1806 of yacc.c  */
     8709#line 2440 "parser.yy"
    83678710    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83688711    break;
    83698712
    8370   case 621:
    8371 
    8372 /* Line 1806 of yacc.c  */
    8373 #line 2360 "parser.yy"
     8713  case 636:
     8714
     8715/* Line 1806 of yacc.c  */
     8716#line 2442 "parser.yy"
    83748717    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83758718    break;
    83768719
    8377   case 622:
    8378 
    8379 /* Line 1806 of yacc.c  */
    8380 #line 2365 "parser.yy"
     8720  case 637:
     8721
     8722/* Line 1806 of yacc.c  */
     8723#line 2447 "parser.yy"
    83818724    {
    83828725                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    83858728    break;
    83868729
    8387   case 623:
    8388 
    8389 /* Line 1806 of yacc.c  */
    8390 #line 2370 "parser.yy"
     8730  case 638:
     8731
     8732/* Line 1806 of yacc.c  */
     8733#line 2452 "parser.yy"
    83918734    {
    83928735                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    83958738    break;
    83968739
    8397   case 624:
    8398 
    8399 /* Line 1806 of yacc.c  */
    8400 #line 2378 "parser.yy"
     8740  case 639:
     8741
     8742/* Line 1806 of yacc.c  */
     8743#line 2460 "parser.yy"
    84018744    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84028745    break;
    84038746
    8404   case 625:
    8405 
    8406 /* Line 1806 of yacc.c  */
    8407 #line 2380 "parser.yy"
     8747  case 640:
     8748
     8749/* Line 1806 of yacc.c  */
     8750#line 2462 "parser.yy"
    84088751    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84098752    break;
    84108753
    8411   case 626:
    8412 
    8413 /* Line 1806 of yacc.c  */
    8414 #line 2382 "parser.yy"
     8754  case 641:
     8755
     8756/* Line 1806 of yacc.c  */
     8757#line 2464 "parser.yy"
    84158758    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84168759    break;
    84178760
    8418   case 627:
    8419 
    8420 /* Line 1806 of yacc.c  */
    8421 #line 2387 "parser.yy"
     8761  case 642:
     8762
     8763/* Line 1806 of yacc.c  */
     8764#line 2469 "parser.yy"
    84228765    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84238766    break;
    84248767
    8425   case 628:
    8426 
    8427 /* Line 1806 of yacc.c  */
    8428 #line 2389 "parser.yy"
     8768  case 643:
     8769
     8770/* Line 1806 of yacc.c  */
     8771#line 2471 "parser.yy"
    84298772    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84308773    break;
    84318774
    8432   case 629:
    8433 
    8434 /* Line 1806 of yacc.c  */
    8435 #line 2394 "parser.yy"
     8775  case 644:
     8776
     8777/* Line 1806 of yacc.c  */
     8778#line 2476 "parser.yy"
    84368779    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84378780    break;
    84388781
    8439   case 630:
    8440 
    8441 /* Line 1806 of yacc.c  */
    8442 #line 2396 "parser.yy"
     8782  case 645:
     8783
     8784/* Line 1806 of yacc.c  */
     8785#line 2478 "parser.yy"
    84438786    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84448787    break;
    84458788
    8446   case 632:
    8447 
    8448 /* Line 1806 of yacc.c  */
    8449 #line 2411 "parser.yy"
     8789  case 647:
     8790
     8791/* Line 1806 of yacc.c  */
     8792#line 2493 "parser.yy"
    84508793    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84518794    break;
    84528795
    8453   case 633:
    8454 
    8455 /* Line 1806 of yacc.c  */
    8456 #line 2413 "parser.yy"
     8796  case 648:
     8797
     8798/* Line 1806 of yacc.c  */
     8799#line 2495 "parser.yy"
    84578800    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84588801    break;
    84598802
    8460   case 634:
    8461 
    8462 /* Line 1806 of yacc.c  */
    8463 #line 2418 "parser.yy"
     8803  case 649:
     8804
     8805/* Line 1806 of yacc.c  */
     8806#line 2500 "parser.yy"
    84648807    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    84658808    break;
    84668809
    8467   case 635:
    8468 
    8469 /* Line 1806 of yacc.c  */
    8470 #line 2420 "parser.yy"
     8810  case 650:
     8811
     8812/* Line 1806 of yacc.c  */
     8813#line 2502 "parser.yy"
    84718814    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    84728815    break;
    84738816
    8474   case 636:
    8475 
    8476 /* Line 1806 of yacc.c  */
    8477 #line 2422 "parser.yy"
     8817  case 651:
     8818
     8819/* Line 1806 of yacc.c  */
     8820#line 2504 "parser.yy"
    84788821    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84798822    break;
    84808823
    8481   case 637:
    8482 
    8483 /* Line 1806 of yacc.c  */
    8484 #line 2424 "parser.yy"
     8824  case 652:
     8825
     8826/* Line 1806 of yacc.c  */
     8827#line 2506 "parser.yy"
    84858828    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84868829    break;
    84878830
    8488   case 638:
    8489 
    8490 /* Line 1806 of yacc.c  */
    8491 #line 2426 "parser.yy"
     8831  case 653:
     8832
     8833/* Line 1806 of yacc.c  */
     8834#line 2508 "parser.yy"
    84928835    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84938836    break;
    84948837
    8495   case 640:
    8496 
    8497 /* Line 1806 of yacc.c  */
    8498 #line 2432 "parser.yy"
     8838  case 655:
     8839
     8840/* Line 1806 of yacc.c  */
     8841#line 2514 "parser.yy"
    84998842    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85008843    break;
    85018844
    8502   case 641:
    8503 
    8504 /* Line 1806 of yacc.c  */
    8505 #line 2434 "parser.yy"
     8845  case 656:
     8846
     8847/* Line 1806 of yacc.c  */
     8848#line 2516 "parser.yy"
    85068849    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85078850    break;
    85088851
    8509   case 642:
    8510 
    8511 /* Line 1806 of yacc.c  */
    8512 #line 2436 "parser.yy"
     8852  case 657:
     8853
     8854/* Line 1806 of yacc.c  */
     8855#line 2518 "parser.yy"
    85138856    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85148857    break;
    85158858
    8516   case 643:
    8517 
    8518 /* Line 1806 of yacc.c  */
    8519 #line 2441 "parser.yy"
     8859  case 658:
     8860
     8861/* Line 1806 of yacc.c  */
     8862#line 2523 "parser.yy"
    85208863    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    85218864    break;
    85228865
    8523   case 644:
    8524 
    8525 /* Line 1806 of yacc.c  */
    8526 #line 2443 "parser.yy"
     8866  case 659:
     8867
     8868/* Line 1806 of yacc.c  */
     8869#line 2525 "parser.yy"
    85278870    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85288871    break;
    85298872
    8530   case 645:
    8531 
    8532 /* Line 1806 of yacc.c  */
    8533 #line 2445 "parser.yy"
     8873  case 660:
     8874
     8875/* Line 1806 of yacc.c  */
     8876#line 2527 "parser.yy"
    85348877    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85358878    break;
    85368879
    8537   case 646:
    8538 
    8539 /* Line 1806 of yacc.c  */
    8540 #line 2451 "parser.yy"
     8880  case 661:
     8881
     8882/* Line 1806 of yacc.c  */
     8883#line 2533 "parser.yy"
    85418884    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    85428885    break;
    85438886
    8544   case 647:
    8545 
    8546 /* Line 1806 of yacc.c  */
    8547 #line 2453 "parser.yy"
     8887  case 662:
     8888
     8889/* Line 1806 of yacc.c  */
     8890#line 2535 "parser.yy"
    85488891    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    85498892    break;
    85508893
    8551   case 649:
    8552 
    8553 /* Line 1806 of yacc.c  */
    8554 #line 2459 "parser.yy"
     8894  case 664:
     8895
     8896/* Line 1806 of yacc.c  */
     8897#line 2541 "parser.yy"
    85558898    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    85568899    break;
    85578900
    8558   case 650:
    8559 
    8560 /* Line 1806 of yacc.c  */
    8561 #line 2461 "parser.yy"
     8901  case 665:
     8902
     8903/* Line 1806 of yacc.c  */
     8904#line 2543 "parser.yy"
    85628905    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    85638906    break;
    85648907
    8565   case 651:
    8566 
    8567 /* Line 1806 of yacc.c  */
    8568 #line 2463 "parser.yy"
     8908  case 666:
     8909
     8910/* Line 1806 of yacc.c  */
     8911#line 2545 "parser.yy"
    85698912    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    85708913    break;
    85718914
    8572   case 652:
    8573 
    8574 /* Line 1806 of yacc.c  */
    8575 #line 2465 "parser.yy"
     8915  case 667:
     8916
     8917/* Line 1806 of yacc.c  */
     8918#line 2547 "parser.yy"
    85768919    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    85778920    break;
    85788921
    8579   case 654:
    8580 
    8581 /* Line 1806 of yacc.c  */
    8582 #line 2480 "parser.yy"
     8922  case 669:
     8923
     8924/* Line 1806 of yacc.c  */
     8925#line 2562 "parser.yy"
    85838926    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85848927    break;
    85858928
    8586   case 655:
    8587 
    8588 /* Line 1806 of yacc.c  */
    8589 #line 2482 "parser.yy"
     8929  case 670:
     8930
     8931/* Line 1806 of yacc.c  */
     8932#line 2564 "parser.yy"
    85908933    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85918934    break;
    85928935
    8593   case 656:
    8594 
    8595 /* Line 1806 of yacc.c  */
    8596 #line 2487 "parser.yy"
     8936  case 671:
     8937
     8938/* Line 1806 of yacc.c  */
     8939#line 2569 "parser.yy"
    85978940    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85988941    break;
    85998942
    8600   case 657:
    8601 
    8602 /* Line 1806 of yacc.c  */
    8603 #line 2489 "parser.yy"
     8943  case 672:
     8944
     8945/* Line 1806 of yacc.c  */
     8946#line 2571 "parser.yy"
    86048947    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86058948    break;
    86068949
    8607   case 658:
    8608 
    8609 /* Line 1806 of yacc.c  */
    8610 #line 2491 "parser.yy"
     8950  case 673:
     8951
     8952/* Line 1806 of yacc.c  */
     8953#line 2573 "parser.yy"
    86118954    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86128955    break;
    86138956
    8614   case 659:
    8615 
    8616 /* Line 1806 of yacc.c  */
    8617 #line 2493 "parser.yy"
     8957  case 674:
     8958
     8959/* Line 1806 of yacc.c  */
     8960#line 2575 "parser.yy"
    86188961    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86198962    break;
    86208963
    8621   case 660:
    8622 
    8623 /* Line 1806 of yacc.c  */
    8624 #line 2495 "parser.yy"
     8964  case 675:
     8965
     8966/* Line 1806 of yacc.c  */
     8967#line 2577 "parser.yy"
    86258968    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86268969    break;
    86278970
    8628   case 662:
    8629 
    8630 /* Line 1806 of yacc.c  */
    8631 #line 2501 "parser.yy"
     8971  case 677:
     8972
     8973/* Line 1806 of yacc.c  */
     8974#line 2583 "parser.yy"
    86328975    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86338976    break;
    86348977
    8635   case 663:
    8636 
    8637 /* Line 1806 of yacc.c  */
    8638 #line 2503 "parser.yy"
     8978  case 678:
     8979
     8980/* Line 1806 of yacc.c  */
     8981#line 2585 "parser.yy"
    86398982    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86408983    break;
    86418984
    8642   case 664:
    8643 
    8644 /* Line 1806 of yacc.c  */
    8645 #line 2505 "parser.yy"
     8985  case 679:
     8986
     8987/* Line 1806 of yacc.c  */
     8988#line 2587 "parser.yy"
    86468989    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86478990    break;
    86488991
    8649   case 665:
    8650 
    8651 /* Line 1806 of yacc.c  */
    8652 #line 2510 "parser.yy"
     8992  case 680:
     8993
     8994/* Line 1806 of yacc.c  */
     8995#line 2592 "parser.yy"
    86538996    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    86548997    break;
    86558998
    8656   case 666:
    8657 
    8658 /* Line 1806 of yacc.c  */
    8659 #line 2512 "parser.yy"
     8999  case 681:
     9000
     9001/* Line 1806 of yacc.c  */
     9002#line 2594 "parser.yy"
    86609003    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86619004    break;
    86629005
    8663   case 667:
    8664 
    8665 /* Line 1806 of yacc.c  */
    8666 #line 2514 "parser.yy"
     9006  case 682:
     9007
     9008/* Line 1806 of yacc.c  */
     9009#line 2596 "parser.yy"
    86679010    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86689011    break;
    86699012
    8670   case 669:
    8671 
    8672 /* Line 1806 of yacc.c  */
    8673 #line 2521 "parser.yy"
     9013  case 684:
     9014
     9015/* Line 1806 of yacc.c  */
     9016#line 2603 "parser.yy"
    86749017    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    86759018    break;
    86769019
    8677   case 671:
    8678 
    8679 /* Line 1806 of yacc.c  */
    8680 #line 2532 "parser.yy"
     9020  case 686:
     9021
     9022/* Line 1806 of yacc.c  */
     9023#line 2614 "parser.yy"
    86819024    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86829025    break;
    86839026
    8684   case 672:
    8685 
    8686 /* Line 1806 of yacc.c  */
    8687 #line 2535 "parser.yy"
     9027  case 687:
     9028
     9029/* Line 1806 of yacc.c  */
     9030#line 2617 "parser.yy"
    86889031    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    86899032    break;
    86909033
    8691   case 673:
    8692 
    8693 /* Line 1806 of yacc.c  */
    8694 #line 2537 "parser.yy"
     9034  case 688:
     9035
     9036/* Line 1806 of yacc.c  */
     9037#line 2619 "parser.yy"
    86959038    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    86969039    break;
    86979040
    8698   case 674:
    8699 
    8700 /* Line 1806 of yacc.c  */
    8701 #line 2540 "parser.yy"
     9041  case 689:
     9042
     9043/* Line 1806 of yacc.c  */
     9044#line 2622 "parser.yy"
    87029045    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    87039046    break;
    87049047
    8705   case 675:
    8706 
    8707 /* Line 1806 of yacc.c  */
    8708 #line 2542 "parser.yy"
     9048  case 690:
     9049
     9050/* Line 1806 of yacc.c  */
     9051#line 2624 "parser.yy"
    87099052    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    87109053    break;
    87119054
    8712   case 676:
    8713 
    8714 /* Line 1806 of yacc.c  */
    8715 #line 2544 "parser.yy"
     9055  case 691:
     9056
     9057/* Line 1806 of yacc.c  */
     9058#line 2626 "parser.yy"
    87169059    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    87179060    break;
    87189061
    8719   case 678:
    8720 
    8721 /* Line 1806 of yacc.c  */
    8722 #line 2558 "parser.yy"
     9062  case 693:
     9063
     9064/* Line 1806 of yacc.c  */
     9065#line 2640 "parser.yy"
    87239066    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87249067    break;
    87259068
    8726   case 679:
    8727 
    8728 /* Line 1806 of yacc.c  */
    8729 #line 2560 "parser.yy"
     9069  case 694:
     9070
     9071/* Line 1806 of yacc.c  */
     9072#line 2642 "parser.yy"
    87309073    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87319074    break;
    87329075
    8733   case 680:
    8734 
    8735 /* Line 1806 of yacc.c  */
    8736 #line 2565 "parser.yy"
     9076  case 695:
     9077
     9078/* Line 1806 of yacc.c  */
     9079#line 2647 "parser.yy"
    87379080    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    87389081    break;
    87399082
    8740   case 681:
    8741 
    8742 /* Line 1806 of yacc.c  */
    8743 #line 2567 "parser.yy"
     9083  case 696:
     9084
     9085/* Line 1806 of yacc.c  */
     9086#line 2649 "parser.yy"
    87449087    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87459088    break;
    87469089
    8747   case 682:
    8748 
    8749 /* Line 1806 of yacc.c  */
    8750 #line 2569 "parser.yy"
     9090  case 697:
     9091
     9092/* Line 1806 of yacc.c  */
     9093#line 2651 "parser.yy"
    87519094    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87529095    break;
    87539096
    8754   case 683:
    8755 
    8756 /* Line 1806 of yacc.c  */
    8757 #line 2571 "parser.yy"
     9097  case 698:
     9098
     9099/* Line 1806 of yacc.c  */
     9100#line 2653 "parser.yy"
    87589101    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87599102    break;
    87609103
    8761   case 684:
    8762 
    8763 /* Line 1806 of yacc.c  */
    8764 #line 2573 "parser.yy"
     9104  case 699:
     9105
     9106/* Line 1806 of yacc.c  */
     9107#line 2655 "parser.yy"
    87659108    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87669109    break;
    87679110
    8768   case 686:
    8769 
    8770 /* Line 1806 of yacc.c  */
    8771 #line 2579 "parser.yy"
     9111  case 701:
     9112
     9113/* Line 1806 of yacc.c  */
     9114#line 2661 "parser.yy"
    87729115    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87739116    break;
    87749117
    8775   case 687:
    8776 
    8777 /* Line 1806 of yacc.c  */
    8778 #line 2581 "parser.yy"
     9118  case 702:
     9119
     9120/* Line 1806 of yacc.c  */
     9121#line 2663 "parser.yy"
    87799122    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87809123    break;
    87819124
    8782   case 688:
    8783 
    8784 /* Line 1806 of yacc.c  */
    8785 #line 2583 "parser.yy"
     9125  case 703:
     9126
     9127/* Line 1806 of yacc.c  */
     9128#line 2665 "parser.yy"
    87869129    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87879130    break;
    87889131
    8789   case 689:
    8790 
    8791 /* Line 1806 of yacc.c  */
    8792 #line 2588 "parser.yy"
     9132  case 704:
     9133
     9134/* Line 1806 of yacc.c  */
     9135#line 2670 "parser.yy"
    87939136    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87949137    break;
    87959138
    8796   case 690:
    8797 
    8798 /* Line 1806 of yacc.c  */
    8799 #line 2590 "parser.yy"
     9139  case 705:
     9140
     9141/* Line 1806 of yacc.c  */
     9142#line 2672 "parser.yy"
    88009143    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88019144    break;
    88029145
    8803   case 693:
    8804 
    8805 /* Line 1806 of yacc.c  */
    8806 #line 2600 "parser.yy"
     9146  case 708:
     9147
     9148/* Line 1806 of yacc.c  */
     9149#line 2682 "parser.yy"
    88079150    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    88089151    break;
    88099152
    8810   case 696:
    8811 
    8812 /* Line 1806 of yacc.c  */
    8813 #line 2610 "parser.yy"
     9153  case 711:
     9154
     9155/* Line 1806 of yacc.c  */
     9156#line 2692 "parser.yy"
    88149157    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88159158    break;
    88169159
    8817   case 697:
    8818 
    8819 /* Line 1806 of yacc.c  */
    8820 #line 2612 "parser.yy"
     9160  case 712:
     9161
     9162/* Line 1806 of yacc.c  */
     9163#line 2694 "parser.yy"
    88219164    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88229165    break;
    88239166
    8824   case 698:
    8825 
    8826 /* Line 1806 of yacc.c  */
    8827 #line 2614 "parser.yy"
     9167  case 713:
     9168
     9169/* Line 1806 of yacc.c  */
     9170#line 2696 "parser.yy"
    88289171    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88299172    break;
    88309173
    8831   case 699:
    8832 
    8833 /* Line 1806 of yacc.c  */
    8834 #line 2616 "parser.yy"
     9174  case 714:
     9175
     9176/* Line 1806 of yacc.c  */
     9177#line 2698 "parser.yy"
    88359178    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88369179    break;
    88379180
    8838   case 700:
    8839 
    8840 /* Line 1806 of yacc.c  */
    8841 #line 2618 "parser.yy"
     9181  case 715:
     9182
     9183/* Line 1806 of yacc.c  */
     9184#line 2700 "parser.yy"
    88429185    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88439186    break;
    88449187
    8845   case 701:
    8846 
    8847 /* Line 1806 of yacc.c  */
    8848 #line 2620 "parser.yy"
     9188  case 716:
     9189
     9190/* Line 1806 of yacc.c  */
     9191#line 2702 "parser.yy"
    88499192    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88509193    break;
    88519194
    8852   case 702:
    8853 
    8854 /* Line 1806 of yacc.c  */
    8855 #line 2627 "parser.yy"
     9195  case 717:
     9196
     9197/* Line 1806 of yacc.c  */
     9198#line 2709 "parser.yy"
    88569199    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88579200    break;
    88589201
    8859   case 703:
    8860 
    8861 /* Line 1806 of yacc.c  */
    8862 #line 2629 "parser.yy"
     9202  case 718:
     9203
     9204/* Line 1806 of yacc.c  */
     9205#line 2711 "parser.yy"
    88639206    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88649207    break;
    88659208
    8866   case 704:
    8867 
    8868 /* Line 1806 of yacc.c  */
    8869 #line 2631 "parser.yy"
     9209  case 719:
     9210
     9211/* Line 1806 of yacc.c  */
     9212#line 2713 "parser.yy"
    88709213    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88719214    break;
    88729215
    8873   case 705:
    8874 
    8875 /* Line 1806 of yacc.c  */
    8876 #line 2633 "parser.yy"
     9216  case 720:
     9217
     9218/* Line 1806 of yacc.c  */
     9219#line 2715 "parser.yy"
    88779220    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    88789221    break;
    88799222
    8880   case 706:
    8881 
    8882 /* Line 1806 of yacc.c  */
    8883 #line 2635 "parser.yy"
     9223  case 721:
     9224
     9225/* Line 1806 of yacc.c  */
     9226#line 2717 "parser.yy"
    88849227    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88859228    break;
    88869229
    8887   case 707:
    8888 
    8889 /* Line 1806 of yacc.c  */
    8890 #line 2637 "parser.yy"
     9230  case 722:
     9231
     9232/* Line 1806 of yacc.c  */
     9233#line 2719 "parser.yy"
    88919234    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88929235    break;
    88939236
    8894   case 708:
    8895 
    8896 /* Line 1806 of yacc.c  */
    8897 #line 2639 "parser.yy"
     9237  case 723:
     9238
     9239/* Line 1806 of yacc.c  */
     9240#line 2721 "parser.yy"
    88989241    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88999242    break;
    89009243
    8901   case 709:
    8902 
    8903 /* Line 1806 of yacc.c  */
    8904 #line 2641 "parser.yy"
     9244  case 724:
     9245
     9246/* Line 1806 of yacc.c  */
     9247#line 2723 "parser.yy"
    89059248    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89069249    break;
    89079250
    8908   case 710:
    8909 
    8910 /* Line 1806 of yacc.c  */
    8911 #line 2643 "parser.yy"
     9251  case 725:
     9252
     9253/* Line 1806 of yacc.c  */
     9254#line 2725 "parser.yy"
    89129255    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89139256    break;
    89149257
    8915   case 711:
    8916 
    8917 /* Line 1806 of yacc.c  */
    8918 #line 2645 "parser.yy"
     9258  case 726:
     9259
     9260/* Line 1806 of yacc.c  */
     9261#line 2727 "parser.yy"
    89199262    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89209263    break;
    89219264
    8922   case 712:
    8923 
    8924 /* Line 1806 of yacc.c  */
    8925 #line 2650 "parser.yy"
     9265  case 727:
     9266
     9267/* Line 1806 of yacc.c  */
     9268#line 2732 "parser.yy"
    89269269    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    89279270    break;
    89289271
    8929   case 713:
    8930 
    8931 /* Line 1806 of yacc.c  */
    8932 #line 2652 "parser.yy"
     9272  case 728:
     9273
     9274/* Line 1806 of yacc.c  */
     9275#line 2734 "parser.yy"
    89339276    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    89349277    break;
    89359278
    8936   case 714:
    8937 
    8938 /* Line 1806 of yacc.c  */
    8939 #line 2657 "parser.yy"
     9279  case 729:
     9280
     9281/* Line 1806 of yacc.c  */
     9282#line 2739 "parser.yy"
    89409283    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    89419284    break;
    89429285
    8943   case 715:
    8944 
    8945 /* Line 1806 of yacc.c  */
    8946 #line 2659 "parser.yy"
     9286  case 730:
     9287
     9288/* Line 1806 of yacc.c  */
     9289#line 2741 "parser.yy"
    89479290    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    89489291    break;
    89499292
    8950   case 717:
    8951 
    8952 /* Line 1806 of yacc.c  */
    8953 #line 2686 "parser.yy"
     9293  case 732:
     9294
     9295/* Line 1806 of yacc.c  */
     9296#line 2768 "parser.yy"
    89549297    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89559298    break;
    89569299
    8957   case 721:
    8958 
    8959 /* Line 1806 of yacc.c  */
    8960 #line 2697 "parser.yy"
     9300  case 736:
     9301
     9302/* Line 1806 of yacc.c  */
     9303#line 2779 "parser.yy"
    89619304    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89629305    break;
    89639306
    8964   case 722:
    8965 
    8966 /* Line 1806 of yacc.c  */
    8967 #line 2699 "parser.yy"
     9307  case 737:
     9308
     9309/* Line 1806 of yacc.c  */
     9310#line 2781 "parser.yy"
    89689311    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89699312    break;
    89709313
    8971   case 723:
    8972 
    8973 /* Line 1806 of yacc.c  */
    8974 #line 2701 "parser.yy"
     9314  case 738:
     9315
     9316/* Line 1806 of yacc.c  */
     9317#line 2783 "parser.yy"
    89759318    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89769319    break;
    89779320
    8978   case 724:
    8979 
    8980 /* Line 1806 of yacc.c  */
    8981 #line 2703 "parser.yy"
     9321  case 739:
     9322
     9323/* Line 1806 of yacc.c  */
     9324#line 2785 "parser.yy"
    89829325    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89839326    break;
    89849327
    8985   case 725:
    8986 
    8987 /* Line 1806 of yacc.c  */
    8988 #line 2705 "parser.yy"
     9328  case 740:
     9329
     9330/* Line 1806 of yacc.c  */
     9331#line 2787 "parser.yy"
    89899332    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89909333    break;
    89919334
    8992   case 726:
    8993 
    8994 /* Line 1806 of yacc.c  */
    8995 #line 2707 "parser.yy"
     9335  case 741:
     9336
     9337/* Line 1806 of yacc.c  */
     9338#line 2789 "parser.yy"
    89969339    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89979340    break;
    89989341
    8999   case 727:
    9000 
    9001 /* Line 1806 of yacc.c  */
    9002 #line 2714 "parser.yy"
     9342  case 742:
     9343
     9344/* Line 1806 of yacc.c  */
     9345#line 2796 "parser.yy"
    90039346    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90049347    break;
    90059348
    9006   case 728:
    9007 
    9008 /* Line 1806 of yacc.c  */
    9009 #line 2716 "parser.yy"
     9349  case 743:
     9350
     9351/* Line 1806 of yacc.c  */
     9352#line 2798 "parser.yy"
    90109353    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90119354    break;
    90129355
    9013   case 729:
    9014 
    9015 /* Line 1806 of yacc.c  */
    9016 #line 2718 "parser.yy"
     9356  case 744:
     9357
     9358/* Line 1806 of yacc.c  */
     9359#line 2800 "parser.yy"
    90179360    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90189361    break;
    90199362
    9020   case 730:
    9021 
    9022 /* Line 1806 of yacc.c  */
    9023 #line 2720 "parser.yy"
     9363  case 745:
     9364
     9365/* Line 1806 of yacc.c  */
     9366#line 2802 "parser.yy"
    90249367    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90259368    break;
    90269369
    9027   case 731:
    9028 
    9029 /* Line 1806 of yacc.c  */
    9030 #line 2722 "parser.yy"
     9370  case 746:
     9371
     9372/* Line 1806 of yacc.c  */
     9373#line 2804 "parser.yy"
    90319374    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90329375    break;
    90339376
    9034   case 732:
    9035 
    9036 /* Line 1806 of yacc.c  */
    9037 #line 2724 "parser.yy"
     9377  case 747:
     9378
     9379/* Line 1806 of yacc.c  */
     9380#line 2806 "parser.yy"
    90389381    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90399382    break;
    90409383
    9041   case 733:
    9042 
    9043 /* Line 1806 of yacc.c  */
    9044 #line 2729 "parser.yy"
     9384  case 748:
     9385
     9386/* Line 1806 of yacc.c  */
     9387#line 2811 "parser.yy"
    90459388    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    90469389    break;
    90479390
    9048   case 734:
    9049 
    9050 /* Line 1806 of yacc.c  */
    9051 #line 2734 "parser.yy"
     9391  case 749:
     9392
     9393/* Line 1806 of yacc.c  */
     9394#line 2816 "parser.yy"
    90529395    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    90539396    break;
    90549397
    9055   case 735:
    9056 
    9057 /* Line 1806 of yacc.c  */
    9058 #line 2736 "parser.yy"
     9398  case 750:
     9399
     9400/* Line 1806 of yacc.c  */
     9401#line 2818 "parser.yy"
    90599402    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90609403    break;
    90619404
    9062   case 736:
    9063 
    9064 /* Line 1806 of yacc.c  */
    9065 #line 2738 "parser.yy"
     9405  case 751:
     9406
     9407/* Line 1806 of yacc.c  */
     9408#line 2820 "parser.yy"
    90669409    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90679410    break;
    90689411
    9069   case 739:
    9070 
    9071 /* Line 1806 of yacc.c  */
    9072 #line 2762 "parser.yy"
     9412  case 754:
     9413
     9414/* Line 1806 of yacc.c  */
     9415#line 2844 "parser.yy"
    90739416    { (yyval.en) = 0; }
    90749417    break;
    90759418
    9076   case 740:
    9077 
    9078 /* Line 1806 of yacc.c  */
    9079 #line 2764 "parser.yy"
     9419  case 755:
     9420
     9421/* Line 1806 of yacc.c  */
     9422#line 2846 "parser.yy"
    90809423    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    90819424    break;
     
    90849427
    90859428/* Line 1806 of yacc.c  */
    9086 #line 9087 "Parser/parser.cc"
     9429#line 9430 "Parser/parser.cc"
    90879430      default: break;
    90889431    }
     
    93159658
    93169659/* Line 2067 of yacc.c  */
    9317 #line 2767 "parser.yy"
     9660#line 2849 "parser.yy"
    93189661
    93199662// ----end of grammar----
     
    93229665        std::cout << "Error ";
    93239666        if ( yyfilename ) {
    9324             std::cout << "in file " << yyfilename << " ";
     9667                std::cout << "in file " << yyfilename << " ";
    93259668        } // if
    93269669        std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
  • src/Parser/parser.h

    r679864e1 r242d458  
    5959     SIGNED = 277,
    6060     UNSIGNED = 278,
    61      BOOL = 279,
    62      COMPLEX = 280,
    63      IMAGINARY = 281,
    64      TYPEOF = 282,
    65      LABEL = 283,
    66      ENUM = 284,
    67      STRUCT = 285,
    68      UNION = 286,
    69      TYPE = 287,
    70      FTYPE = 288,
    71      DTYPE = 289,
    72      CONTEXT = 290,
    73      SIZEOF = 291,
    74      ATTRIBUTE = 292,
    75      EXTENSION = 293,
    76      IF = 294,
    77      ELSE = 295,
    78      SWITCH = 296,
    79      CASE = 297,
    80      DEFAULT = 298,
    81      DO = 299,
    82      WHILE = 300,
    83      FOR = 301,
    84      BREAK = 302,
    85      CONTINUE = 303,
    86      GOTO = 304,
    87      RETURN = 305,
    88      CHOOSE = 306,
    89      FALLTHRU = 307,
    90      TRY = 308,
    91      CATCH = 309,
    92      FINALLY = 310,
    93      THROW = 311,
    94      ASM = 312,
    95      ALIGNAS = 313,
    96      ALIGNOF = 314,
    97      ATOMIC = 315,
    98      GENERIC = 316,
    99      NORETURN = 317,
    100      STATICASSERT = 318,
    101      THREADLOCAL = 319,
    102      IDENTIFIER = 320,
    103      QUOTED_IDENTIFIER = 321,
    104      TYPEDEFname = 322,
    105      TYPEGENname = 323,
    106      ATTR_IDENTIFIER = 324,
    107      ATTR_TYPEDEFname = 325,
    108      ATTR_TYPEGENname = 326,
    109      INTEGERconstant = 327,
    110      FLOATINGconstant = 328,
    111      CHARACTERconstant = 329,
    112      STRINGliteral = 330,
    113      ZERO = 331,
    114      ONE = 332,
    115      ARROW = 333,
    116      ICR = 334,
    117      DECR = 335,
    118      LS = 336,
    119      RS = 337,
    120      LE = 338,
    121      GE = 339,
    122      EQ = 340,
    123      NE = 341,
    124      ANDAND = 342,
    125      OROR = 343,
    126      ELLIPSIS = 344,
    127      MULTassign = 345,
    128      DIVassign = 346,
    129      MODassign = 347,
    130      PLUSassign = 348,
    131      MINUSassign = 349,
    132      LSassign = 350,
    133      RSassign = 351,
    134      ANDassign = 352,
    135      ERassign = 353,
    136      ORassign = 354,
    137      THEN = 355
     61     VALIST = 279,
     62     BOOL = 280,
     63     COMPLEX = 281,
     64     IMAGINARY = 282,
     65     TYPEOF = 283,
     66     LABEL = 284,
     67     ENUM = 285,
     68     STRUCT = 286,
     69     UNION = 287,
     70     OTYPE = 288,
     71     FTYPE = 289,
     72     DTYPE = 290,
     73     TRAIT = 291,
     74     SIZEOF = 292,
     75     OFFSETOF = 293,
     76     ATTRIBUTE = 294,
     77     EXTENSION = 295,
     78     IF = 296,
     79     ELSE = 297,
     80     SWITCH = 298,
     81     CASE = 299,
     82     DEFAULT = 300,
     83     DO = 301,
     84     WHILE = 302,
     85     FOR = 303,
     86     BREAK = 304,
     87     CONTINUE = 305,
     88     GOTO = 306,
     89     RETURN = 307,
     90     CHOOSE = 308,
     91     DISABLE = 309,
     92     ENABLE = 310,
     93     FALLTHRU = 311,
     94     TRY = 312,
     95     CATCH = 313,
     96     CATCHRESUME = 314,
     97     FINALLY = 315,
     98     THROW = 316,
     99     THROWRESUME = 317,
     100     AT = 318,
     101     ASM = 319,
     102     ALIGNAS = 320,
     103     ALIGNOF = 321,
     104     ATOMIC = 322,
     105     GENERIC = 323,
     106     NORETURN = 324,
     107     STATICASSERT = 325,
     108     THREADLOCAL = 326,
     109     IDENTIFIER = 327,
     110     QUOTED_IDENTIFIER = 328,
     111     TYPEDEFname = 329,
     112     TYPEGENname = 330,
     113     ATTR_IDENTIFIER = 331,
     114     ATTR_TYPEDEFname = 332,
     115     ATTR_TYPEGENname = 333,
     116     INTEGERconstant = 334,
     117     FLOATINGconstant = 335,
     118     CHARACTERconstant = 336,
     119     STRINGliteral = 337,
     120     ZERO = 338,
     121     ONE = 339,
     122     ARROW = 340,
     123     ICR = 341,
     124     DECR = 342,
     125     LS = 343,
     126     RS = 344,
     127     LE = 345,
     128     GE = 346,
     129     EQ = 347,
     130     NE = 348,
     131     ANDAND = 349,
     132     OROR = 350,
     133     ELLIPSIS = 351,
     134     MULTassign = 352,
     135     DIVassign = 353,
     136     MODassign = 354,
     137     PLUSassign = 355,
     138     MINUSassign = 356,
     139     LSassign = 357,
     140     RSassign = 358,
     141     ANDassign = 359,
     142     ERassign = 360,
     143     ORassign = 361,
     144     ATassign = 362,
     145     THEN = 363
    138146   };
    139147#endif
     
    160168#define SIGNED 277
    161169#define UNSIGNED 278
    162 #define BOOL 279
    163 #define COMPLEX 280
    164 #define IMAGINARY 281
    165 #define TYPEOF 282
    166 #define LABEL 283
    167 #define ENUM 284
    168 #define STRUCT 285
    169 #define UNION 286
    170 #define TYPE 287
    171 #define FTYPE 288
    172 #define DTYPE 289
    173 #define CONTEXT 290
    174 #define SIZEOF 291
    175 #define ATTRIBUTE 292
    176 #define EXTENSION 293
    177 #define IF 294
    178 #define ELSE 295
    179 #define SWITCH 296
    180 #define CASE 297
    181 #define DEFAULT 298
    182 #define DO 299
    183 #define WHILE 300
    184 #define FOR 301
    185 #define BREAK 302
    186 #define CONTINUE 303
    187 #define GOTO 304
    188 #define RETURN 305
    189 #define CHOOSE 306
    190 #define FALLTHRU 307
    191 #define TRY 308
    192 #define CATCH 309
    193 #define FINALLY 310
    194 #define THROW 311
    195 #define ASM 312
    196 #define ALIGNAS 313
    197 #define ALIGNOF 314
    198 #define ATOMIC 315
    199 #define GENERIC 316
    200 #define NORETURN 317
    201 #define STATICASSERT 318
    202 #define THREADLOCAL 319
    203 #define IDENTIFIER 320
    204 #define QUOTED_IDENTIFIER 321
    205 #define TYPEDEFname 322
    206 #define TYPEGENname 323
    207 #define ATTR_IDENTIFIER 324
    208 #define ATTR_TYPEDEFname 325
    209 #define ATTR_TYPEGENname 326
    210 #define INTEGERconstant 327
    211 #define FLOATINGconstant 328
    212 #define CHARACTERconstant 329
    213 #define STRINGliteral 330
    214 #define ZERO 331
    215 #define ONE 332
    216 #define ARROW 333
    217 #define ICR 334
    218 #define DECR 335
    219 #define LS 336
    220 #define RS 337
    221 #define LE 338
    222 #define GE 339
    223 #define EQ 340
    224 #define NE 341
    225 #define ANDAND 342
    226 #define OROR 343
    227 #define ELLIPSIS 344
    228 #define MULTassign 345
    229 #define DIVassign 346
    230 #define MODassign 347
    231 #define PLUSassign 348
    232 #define MINUSassign 349
    233 #define LSassign 350
    234 #define RSassign 351
    235 #define ANDassign 352
    236 #define ERassign 353
    237 #define ORassign 354
    238 #define THEN 355
     170#define VALIST 279
     171#define BOOL 280
     172#define COMPLEX 281
     173#define IMAGINARY 282
     174#define TYPEOF 283
     175#define LABEL 284
     176#define ENUM 285
     177#define STRUCT 286
     178#define UNION 287
     179#define OTYPE 288
     180#define FTYPE 289
     181#define DTYPE 290
     182#define TRAIT 291
     183#define SIZEOF 292
     184#define OFFSETOF 293
     185#define ATTRIBUTE 294
     186#define EXTENSION 295
     187#define IF 296
     188#define ELSE 297
     189#define SWITCH 298
     190#define CASE 299
     191#define DEFAULT 300
     192#define DO 301
     193#define WHILE 302
     194#define FOR 303
     195#define BREAK 304
     196#define CONTINUE 305
     197#define GOTO 306
     198#define RETURN 307
     199#define CHOOSE 308
     200#define DISABLE 309
     201#define ENABLE 310
     202#define FALLTHRU 311
     203#define TRY 312
     204#define CATCH 313
     205#define CATCHRESUME 314
     206#define FINALLY 315
     207#define THROW 316
     208#define THROWRESUME 317
     209#define AT 318
     210#define ASM 319
     211#define ALIGNAS 320
     212#define ALIGNOF 321
     213#define ATOMIC 322
     214#define GENERIC 323
     215#define NORETURN 324
     216#define STATICASSERT 325
     217#define THREADLOCAL 326
     218#define IDENTIFIER 327
     219#define QUOTED_IDENTIFIER 328
     220#define TYPEDEFname 329
     221#define TYPEGENname 330
     222#define ATTR_IDENTIFIER 331
     223#define ATTR_TYPEDEFname 332
     224#define ATTR_TYPEGENname 333
     225#define INTEGERconstant 334
     226#define FLOATINGconstant 335
     227#define CHARACTERconstant 336
     228#define STRINGliteral 337
     229#define ZERO 338
     230#define ONE 339
     231#define ARROW 340
     232#define ICR 341
     233#define DECR 342
     234#define LS 343
     235#define RS 344
     236#define LE 345
     237#define GE 346
     238#define EQ 347
     239#define NE 348
     240#define ANDAND 349
     241#define OROR 350
     242#define ELLIPSIS 351
     243#define MULTassign 352
     244#define DIVassign 353
     245#define MODassign 354
     246#define PLUSassign 355
     247#define MINUSassign 356
     248#define LSassign 357
     249#define RSassign 358
     250#define ANDassign 359
     251#define ERassign 360
     252#define ORassign 361
     253#define ATassign 362
     254#define THEN 363
    239255
    240256
     
    246262
    247263/* Line 2068 of yacc.c  */
    248 #line 108 "parser.yy"
     264#line 110 "parser.yy"
    249265
    250266        Token tok;
     
    258274        LabelNode *label;
    259275        InitializerNode *in;
     276        OperatorNode::Type op;
    260277        bool flag;
    261278
     
    263280
    264281/* Line 2068 of yacc.c  */
    265 #line 266 "Parser/parser.h"
     282#line 283 "Parser/parser.h"
    266283} YYSTYPE;
    267284# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    r679864e1 r242d458  
    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 : Tue Aug 11 16:01:49 2015
    13 // Update Count     : 1350
    14 // 
     12// Last Modified On : Fri Aug  5 08:15:57 2016
     13// Update Count     : 1721
     14//
    1515
    1616// This grammar is based on the ANSI99/11 C grammar, specifically parts of EXPRESSION and STATEMENTS, and on the C
     
    3131// two levels of extensions. The first extensions cover most of the GCC C extensions, except for:
    3232//
    33 // 1. nested functions
    34 // 2. generalized lvalues
    35 // 3. designation with and without '=' (use ':' instead)
    36 // 4. attributes not allowed in parenthesis of declarator
     33// 1. designation with and without '=' (use ':' instead)
     34// 2. attributes not allowed in parenthesis of declarator
    3735//
    3836// All of the syntactic extensions for GCC C are marked with the comment "GCC". The second extensions are for Cforall
     
    5149#include <cstdio>
    5250#include <stack>
     51#include "lex.h"
     52#include "parser.h"
     53#include "ParseNode.h"
    5354#include "TypedefTable.h"
    54 #include "lex.h"
    55 #include "ParseNode.h"
    5655#include "TypeData.h"
    5756#include "LinkageSpec.h"
     
    7473%token FORALL LVALUE                                                                    // CFA
    7574%token VOID CHAR SHORT INT LONG FLOAT DOUBLE SIGNED UNSIGNED
     75%token VALIST                                                                                   // GCC
    7676%token BOOL COMPLEX IMAGINARY                                                   // C99
    7777%token TYPEOF LABEL                                                                             // GCC
    7878%token ENUM STRUCT UNION
    79 %token TYPE FTYPE DTYPE CONTEXT                                                 // CFA
    80 %token SIZEOF
     79%token OTYPE FTYPE DTYPE TRAIT                                                  // CFA
     80%token SIZEOF OFFSETOF
    8181%token ATTRIBUTE EXTENSION                                                              // GCC
    8282%token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN
    83 %token CHOOSE FALLTHRU TRY CATCH FINALLY THROW                  // CFA
     83%token CHOOSE DISABLE ENABLE FALLTHRU TRY CATCH CATCHRESUME FINALLY THROW THROWRESUME AT        // CFA
    8484%token ASM                                                                                              // C99, extension ISO/IEC 9899:1999 Section J.5.10(1)
    8585%token ALIGNAS ALIGNOF ATOMIC GENERIC NORETURN STATICASSERT THREADLOCAL // C11
     
    103103%token LSassign         RSassign                                                        // <<=  >>=
    104104%token ANDassign        ERassign        ORassign                                // &=   ^=      |=
     105
     106%token ATassign                                                                                 // @=
    105107
    106108// Types declaration
     
    117119        LabelNode *label;
    118120        InitializerNode *in;
     121        OperatorNode::Type op;
    119122        bool flag;
    120123}
    121124
    122 %type<tok> zero_one  identifier  no_attr_identifier  no_01_identifier
     125%type<tok> identifier  no_01_identifier  no_attr_identifier zero_one
    123126%type<tok> identifier_or_type_name  no_attr_identifier_or_type_name  no_01_identifier_or_type_name
    124127%type<constant> string_literal_list
     
    127130%type<constant> constant
    128131%type<en> tuple                                                 tuple_expression_list
     132%type<op> ptrref_operator
    129133%type<en> unary_operator                                assignment_operator
    130134%type<en> primary_expression                    postfix_expression                      unary_expression
     
    148152%type<sn> block_item_list                               block_item
    149153%type<sn> case_clause
    150 %type<en> case_value                                    case_value_list
    151 %type<sn> case_label                                    case_label_list
     154%type<en> case_value
     155%type<sn> case_value_list                               case_label                                      case_label_list
    152156%type<sn> switch_clause_list_opt                switch_clause_list                      choose_clause_list_opt          choose_clause_list
    153157%type<pn> handler_list                                  handler_clause                          finally_clause
     
    169173%type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type_name indirect_type_name
    170174
    171 %type<decl> context_declaration context_declaration_list context_declaring_list context_specifier
     175%type<decl> trait_declaration trait_declaration_list trait_declaring_list trait_specifier
    172176
    173177%type<decl> declaration declaration_list declaration_list_opt declaration_qualifier_list
     
    195199%type<decl> new_array_parameter_1st_dimension
    196200
    197 %type<decl> new_context_declaring_list new_declaration new_field_declaring_list
     201%type<decl> new_trait_declaring_list new_declaration new_field_declaring_list
    198202%type<decl> new_function_declaration new_function_return new_function_specifier
    199203
     
    222226%type<decl> typedef type_array typedef_declaration typedef_declaration_specifier typedef_expression
    223227%type<decl> type_function type_parameter_array type_parameter_function type_parameter_ptr
    224 %type<decl> type_parameter_redeclarator type_ptr type_redeclarator typedef_type_specifier
     228%type<decl> type_parameter_redeclarator type_ptr variable_type_redeclarator typedef_type_specifier
    225229%type<decl> typegen_declaration_specifier typegen_type_specifier typegen_name
    226230
     
    301305constant:
    302306                // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
    303         INTEGERconstant                                                         { $$ = new ConstantNode( ConstantNode::Integer, $1 ); }
    304         | FLOATINGconstant                                                      { $$ = new ConstantNode( ConstantNode::Float, $1 ); }
    305         | CHARACTERconstant                                                     { $$ = new ConstantNode( ConstantNode::Character, $1 ); }
     307INTEGERconstant                                                                 { $$ = makeConstantInteger( *$1 ); }
     308        | FLOATINGconstant                                                      { $$ = makeConstantFloat( *$1 ); }
     309        | CHARACTERconstant                                                     { $$ = makeConstantChar( *$1 ); }
    306310        ;
    307311
     
    319323no_attr_identifier:
    320324        IDENTIFIER
     325        | zero_one                                                                                      // CFA
    321326        ;
    322327
     
    327332
    328333string_literal_list:                                                                    // juxtaposed strings are concatenated
    329         STRINGliteral                                                           { $$ = new ConstantNode( ConstantNode::String, $1 ); }
     334        STRINGliteral                                                           { $$ = makeConstantStr( *$1 ); }
    330335        | string_literal_list STRINGliteral                     { $$ = $1->appendstr( $2 ); }
    331336        ;
     
    347352        primary_expression
    348353        | postfix_expression '[' push assignment_expression pop ']'
    349                 // CFA, comma_expression disallowed in the context because it results in a commom user error: subscripting a
     354                // CFA, comma_expression disallowed in this context because it results in a common user error: subscripting a
    350355                // matrix with x[i,j] instead of x[i][j]. While this change is not backwards compatible, there seems to be
    351356                // little advantage to this feature and many disadvantages. It is possible to write x[(i,j)] in CFA, which is
    352357                // equivalent to the old x[i,j].
    353                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), $1, $4 ); }
     358                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Index, $1, $4 ) ); }
    354359        | postfix_expression '(' argument_expression_list ')'
    355360                { $$ = new CompositeExprNode( $1, $3 ); }
     361        // ambiguity with .0 so space required after field-selection, e.g.
     362                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    356363        | postfix_expression '.' no_attr_identifier
    357                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), $1, new VarRefNode( $3 )); }
     364                { $$ = new CompositeExprNode2( build_fieldSel( $1, new VarRefNode( $3 ) ) ); }
    358365        | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
    359366        | postfix_expression ARROW no_attr_identifier
    360                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), $1, new VarRefNode( $3 )); }
     367                { $$ = new CompositeExprNode2( build_pfieldSel( $1, new VarRefNode( $3 ) ) ); }
    361368        | postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector
    362369        | postfix_expression ICR
    363                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), $1 ); }
     370                { $$ = new CompositeExprNode2( build_opr1( OperatorNode::IncrPost, $1 ) ); }
    364371        | postfix_expression DECR
    365                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), $1 ); }
    366                 // GCC has priority: cast_expression
     372                { $$ = new CompositeExprNode2( build_opr1( OperatorNode::DecrPost, $1 ) ); }
    367373        | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
    368                 { $$ = 0; }
     374                { $$ = new CompoundLiteralNode( $2, new InitializerNode( $5, true ) ); }
     375        | postfix_expression '{' argument_expression_list '}' // CFA
     376                {
     377                        Token fn; fn.str = new std::string( "?{}" ); // location undefined
     378                        $$ = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( $1 )->set_link( $3 ) );
     379                }
    369380        ;
    370381
     
    398409        no_attr_identifier
    399410                { $$ = new VarRefNode( $1 ); }
     411        // ambiguity with .0 so space required after field-selection, e.g.
     412                //   struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;
    400413        | no_attr_identifier '.' field
    401                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $3 ); }
     414                { $$ = new CompositeExprNode2( build_fieldSel( $3, new VarRefNode( $1 ) ) ); }
    402415        | no_attr_identifier '.' '[' push field_list pop ']'
    403                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $5 ); }
     416                { $$ = new CompositeExprNode2( build_fieldSel( $5, new VarRefNode( $1 ) ) ); }
    404417        | no_attr_identifier ARROW field
    405                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $3 ); }
     418                { $$ = new CompositeExprNode2( build_pfieldSel( $3, new VarRefNode( $1 ) ) ); }
    406419        | no_attr_identifier ARROW '[' push field_list pop ']'
    407                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $5 ); }
     420                { $$ = new CompositeExprNode2( build_pfieldSel( $5, new VarRefNode( $1 ) ) ); }
    408421        ;
    409422
    410423unary_expression:
    411424        postfix_expression
    412         // first location where constant/string can have operator applied: sizeof 3/sizeof "abc"
    413         // still requires semantics checks, e.g., ++3, 3--, *3, &&3
     425                // first location where constant/string can have operator applied: sizeof 3/sizeof "abc" still requires
     426                // semantics checks, e.g., ++3, 3--, *3, &&3
    414427        | constant
    415428                { $$ = $1; }
    416429        | string_literal_list
    417430                { $$ = $1; }
    418         | ICR unary_expression
    419                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), $2 ); }
    420         | DECR unary_expression
    421                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), $2 ); }
    422431        | EXTENSION cast_expression                                                     // GCC
    423                 { $$ = $2; }
     432                { $$ = $2->set_extension( true ); }
     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        | ptrref_operator cast_expression                                       // CFA
     437                { $$ = $1 == OperatorNode::AddressOf ? (ExpressionNode*) new CompositeExprNode2( build_addressOf( $2 ) )
     438                                                                                        : (ExpressionNode*)new CompositeExprNode( new OperatorNode ( $1 ), $2 ); }
    424439        | unary_operator cast_expression
    425440                { $$ = new CompositeExprNode( $1, $2 ); }
    426         | '!' cast_expression
    427                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), $2 ); }
    428         | '*' cast_expression                                                           // CFA
    429                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), $2 ); }
    430                 // '*' is is separated from unary_operator because of shift/reduce conflict in:
    431                 //              { * X; } // dereference X
    432                 //              { * int X; } // CFA declaration of pointer to int
    433                 // '&' must be moved here if C++ reference variables are supported.
     441        | ICR unary_expression
     442                { $$ = new CompositeExprNode2( build_opr1( OperatorNode::Incr, $2 ) ); }
     443        | DECR unary_expression
     444                { $$ = new CompositeExprNode2( build_opr1( OperatorNode::Decr, $2 ) ); }
    434445        | SIZEOF unary_expression
    435                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), $2 ); }
     446                { $$ = new CompositeExprNode2( build_sizeOf( $2 ) ); }
    436447        | SIZEOF '(' type_name_no_function ')'
    437                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( $3 )); }
     448                { $$ = new CompositeExprNode2( build_sizeOf( new TypeValueNode( $3 ) ) ); }
     449        | OFFSETOF '(' type_name_no_function ',' no_attr_identifier ')'
     450                { $$ = new CompositeExprNode2( build_offsetOf( new TypeValueNode( $3 ), new VarRefNode( $5 ) ) ); }
    438451        | ATTR_IDENTIFIER
    439                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 )); }
     452                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ) ); }
    440453        | ATTR_IDENTIFIER '(' type_name ')'
    441                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), new TypeValueNode( $3 )); }
     454                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), new TypeValueNode( $3 ) ); }
    442455        | ATTR_IDENTIFIER '(' argument_expression ')'
    443456                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), $3 ); }
    444457        | ALIGNOF unary_expression                                                      // GCC, variable alignment
    445                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), $2 ); }
     458                { $$ = new CompositeExprNode2( build_alignOf( $2 ) ); }
    446459        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    447                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 )); }
    448         | ANDAND no_attr_identifier                                                     // GCC, address of label
    449                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true )); }
     460                { $$ = new CompositeExprNode2( build_alignOf( new TypeValueNode( $3 ) ) ); }
     461//      | ANDAND IDENTIFIER                                                                     // GCC, address of label
     462//              { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }
     463        ;
     464
     465ptrref_operator:
     466        '*'                                                                                     { $$ = OperatorNode::PointTo; }
     467        | '&'                                                                           { $$ = OperatorNode::AddressOf; }
     468                // GCC, address of label must be handled by semantic check for ref,ref,label
     469        | ANDAND                                                                        { $$ = OperatorNode::And; }
    450470        ;
    451471
    452472unary_operator:
    453         '&'                                                                                     { $$ = new OperatorNode( OperatorNode::AddressOf ); }
    454         | '+'                                                                           { $$ = new OperatorNode( OperatorNode::UnPlus ); }
     473        '+'                                                                                     { $$ = new OperatorNode( OperatorNode::UnPlus ); }
    455474        | '-'                                                                           { $$ = new OperatorNode( OperatorNode::UnMinus ); }
     475        | '!'                                                                           { $$ = new OperatorNode( OperatorNode::Neg ); }
    456476        | '~'                                                                           { $$ = new OperatorNode( OperatorNode::BitNeg ); }
    457477        ;
     
    460480        unary_expression
    461481        | '(' type_name_no_function ')' cast_expression
    462                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
     482                { $$ = new CompositeExprNode2( build_cast( new TypeValueNode( $2 ), $4 ) ); }
    463483        | '(' type_name_no_function ')' tuple
    464                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
     484                { $$ = new CompositeExprNode2( build_cast( new TypeValueNode( $2 ), $4 ) ); }
    465485        ;
    466486
     
    468488        cast_expression
    469489        | multiplicative_expression '*' cast_expression
    470                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), $1, $3 ); }
     490                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Mul, $1, $3 ) ); }
    471491        | multiplicative_expression '/' cast_expression
    472                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), $1, $3 ); }
     492                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Div, $1, $3 ) ); }
    473493        | multiplicative_expression '%' cast_expression
    474                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), $1, $3 ); }
     494                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Mod, $1, $3 ) ); }
    475495        ;
    476496
     
    478498        multiplicative_expression
    479499        | additive_expression '+' multiplicative_expression
    480                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), $1, $3 ); }
     500                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Plus, $1, $3 ) ); }
    481501        | additive_expression '-' multiplicative_expression
    482                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), $1, $3 ); }
     502                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Minus, $1, $3 ) ); }
    483503        ;
    484504
     
    486506        additive_expression
    487507        | shift_expression LS additive_expression
    488                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), $1, $3 ); }
     508                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::LShift, $1, $3 ) ); }
    489509        | shift_expression RS additive_expression
    490                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), $1, $3 ); }
     510                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::RShift, $1, $3 ) ); }
    491511        ;
    492512
     
    494514        shift_expression
    495515        | relational_expression '<' shift_expression
    496                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), $1, $3 ); }
     516                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::LThan, $1, $3 ) ); }
    497517        | relational_expression '>' shift_expression
    498                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), $1, $3 ); }
     518                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::GThan, $1, $3 ) ); }
    499519        | relational_expression LE shift_expression
    500                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), $1, $3 ); }
     520                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::LEThan, $1, $3 ) ); }
    501521        | relational_expression GE shift_expression
    502                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), $1, $3 ); }
     522                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::GEThan, $1, $3 ) ); }
    503523        ;
    504524
     
    506526        relational_expression
    507527        | equality_expression EQ relational_expression
    508                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), $1, $3 ); }
     528                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Eq, $1, $3 ) ); }
    509529        | equality_expression NE relational_expression
    510                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), $1, $3 ); }
     530                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Neq, $1, $3 ) ); }
    511531        ;
    512532
     
    514534        equality_expression
    515535        | AND_expression '&' equality_expression
    516                 { $$ =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), $1, $3 ); }
     536                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::BitAnd, $1, $3 ) ); }
    517537        ;
    518538
     
    520540        AND_expression
    521541        | exclusive_OR_expression '^' AND_expression
    522                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), $1, $3 ); }
     542                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Xor, $1, $3 ) ); }
    523543        ;
    524544
     
    526546        exclusive_OR_expression
    527547        | inclusive_OR_expression '|' exclusive_OR_expression
    528                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), $1, $3 ); }
     548                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::BitOr, $1, $3 ) ); }
    529549        ;
    530550
     
    532552        inclusive_OR_expression
    533553        | logical_AND_expression ANDAND inclusive_OR_expression
    534                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::And ), $1, $3 ); }
     554                { $$ = new CompositeExprNode2( build_and_or( $1, $3, true ) ); }
    535555        ;
    536556
     
    538558        logical_AND_expression
    539559        | logical_OR_expression OROR logical_AND_expression
    540                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), $1, $3 ); }
     560                { $$ = new CompositeExprNode2( build_and_or( $1, $3, false ) ); }
    541561        ;
    542562
     
    544564        logical_OR_expression
    545565        | logical_OR_expression '?' comma_expression ':' conditional_expression
    546                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*$1, *$3, *$5 ) ) ); }
     566                { $$ = new CompositeExprNode2( build_cond( $1, $3, $5 ) ); }
    547567        | logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
    548                 { $$=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), $1, $4 ); }
     568                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), $1, $4 ); }
    549569        | logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
    550                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*$1, *$3, *$5 ) ) ); }
     570                { $$ = new CompositeExprNode2( build_cond( $1, $3, $5 ) ); }
    551571        ;
    552572
     
    559579        conditional_expression
    560580        | unary_expression '=' assignment_expression
    561                 { $$ =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $3 ); }
     581                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $3 ); }
    562582        | unary_expression assignment_operator assignment_expression
    563                 { $$ =new CompositeExprNode( $2, $1, $3 ); }
     583                { $$ = new CompositeExprNode( $2, $1, $3 ); }
    564584        | tuple assignment_opt                                                          // CFA, tuple expression
    565585                { $$ = ( $2 == 0 ) ? $1 : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $2 ); }
     
    607627        assignment_expression
    608628        | comma_expression ',' assignment_expression    // { $$ = (ExpressionNode *)$1->add_to_list( $3 ); }
    609                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), $1, $3 ); }
     629        //{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), $1, $3 ); }
     630                { $$ = new CompositeExprNode2( build_comma( $1, $3 ) ); }
    610631        ;
    611632
     
    627648        | exception_statement
    628649        | asm_statement
     650        | '^' postfix_expression '{' argument_expression_list '}' ';' // CFA
     651                {
     652                        Token fn; fn.str = new std::string( "^?{}" ); // location undefined
     653                        $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
     654                                (ExpressionNode *)( $2 )->set_link( $4 ) ), 0 );
     655                }
    629656        ;
    630657
    631658labeled_statement:
    632         no_attr_identifier ':' attribute_list_opt statement
     659                // labels cannot be identifiers 0 or 1
     660        IDENTIFIER ':' attribute_list_opt statement
    633661                {
    634662                        $$ = $4->add_label( $1 );
     
    658686                { $$ = new StatementNode( $1 ); }
    659687        | EXTENSION declaration                                                         // GCC
    660                 { $$ = new StatementNode( $2 ); }
     688                {       // mark all fields in list
     689                        for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     690                                iter->set_extension( true );
     691                        $$ = new StatementNode( $2 );
     692                }
    661693        | function_definition
    662694                { $$ = new StatementNode( $1 ); }
     
    684716                { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
    685717        | SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
    686                 { $$ = new StatementNode( StatementNode::Switch, $3, $8 ); /* xxx */ }
    687                 // The semantics of the declaration list is changed to include any associated initialization, which is performed
    688                 // *before* the transfer to the appropriate case clause.  Statements after the initial declaration list can
    689                 // never be executed, and therefore, are removed from the grammar even though C allows it.
     718                {
     719                        StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 );
     720                        // The semantics of the declaration list is changed to include associated initialization, which is performed
     721                        // *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
     722                        // statement around the switch.  Statements after the initial declaration list can never be executed, and
     723                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
     724                        // statement.
     725                        $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;
     726                }
    690727        | CHOOSE '(' comma_expression ')' case_clause           // CFA
    691                 { $$ = new StatementNode( StatementNode::Choose, $3, $5 ); }
     728                { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
    692729        | CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA
    693                 { $$ = new StatementNode( StatementNode::Choose, $3, $8 ); }
     730                {
     731                        StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 );
     732                        $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;
     733                }
    694734        ;
    695735
     
    700740        constant_expression                                                     { $$ = $1; }
    701741        | constant_expression ELLIPSIS constant_expression      // GCC, subrange
    702                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $1, $3 ); }
     742                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Range, $1, $3 ) ); }
    703743        | subrange                                                                                      // CFA, subrange
    704744        ;
    705745
    706746case_value_list:                                                                                // CFA
    707         case_value
    708         | case_value_list ',' case_value
    709                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( $1 ))->set_link( $3 ) ); }
     747        case_value                                                                      { $$ = new StatementNode( StatementNode::Case, $1, 0 ); }
     748                // convert case list, e.g., "case 1, 3, 5:" into "case 1: case 3: case 5"
     749        | case_value_list ',' case_value                        { $$ = (StatementNode *)($1->set_link( new StatementNode( StatementNode::Case, $3, 0 ) ) ); }
    710750        ;
    711751
    712752case_label:                                                                                             // CFA
    713         CASE case_value_list ':'                                        { $$ = new StatementNode( StatementNode::Case, $2, 0 ); }
     753        CASE case_value_list ':'                                        { $$ = $2; }
    714754        | DEFAULT ':'                                                           { $$ = new StatementNode( StatementNode::Default ); }
    715755                // A semantic check is required to ensure only one default clause per switch/choose statement.
     
    722762
    723763case_clause:                                                                                    // CFA
    724         case_label_list statement                                       { $$ = $1->append_last_case( $2 ); }
     764        case_label_list statement                                       { $$ = $1->append_last_case( new CompoundStmtNode( $2 ) ); }
    725765        ;
    726766
     
    733773switch_clause_list:                                                                             // CFA
    734774        case_label_list statement_list
    735                 { $$ = $1->append_last_case( $2 ); }
     775                { $$ = $1->append_last_case( new CompoundStmtNode( $2 ) ); }
    736776        | switch_clause_list case_label_list statement_list
    737                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
     777                { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( new CompoundStmtNode( $3 ) ) ) ); }
    738778        ;
    739779
     
    748788                { $$ = $1->append_last_case( $2 ); }
    749789        | case_label_list statement_list fall_through_opt
    750                 { $$ = $1->append_last_case((StatementNode *)mkList((*$2,*$3 ))); }
     790                { $$ = $1->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$2, *$3 ) ) ) ); }
    751791        | choose_clause_list case_label_list fall_through
    752792                { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
    753793        | choose_clause_list case_label_list statement_list fall_through_opt
    754                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case((StatementNode *)mkList((*$3,*$4 ))))); }
     794                { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$3, *$4 ) ) ) ) ) ); }
    755795        ;
    756796
    757797fall_through_opt:                                                                               // CFA
    758798        // empty
     799                { $$ = new StatementNode( StatementNode::Break ); }     // insert implicit break
     800        | fall_through
     801        ;
     802
     803fall_through:                                                                                   // CFA
     804        FALLTHRU
    759805                { $$ = 0; }
    760         | fall_through
    761         ;
    762 
    763 fall_through:                                                                                   // CFA
    764         FALLTHRU                                                                        { $$ = new StatementNode( StatementNode::Fallthru ); }
    765         | FALLTHRU ';'                                                          { $$ = new StatementNode( StatementNode::Fallthru ); }
     806        | FALLTHRU ';'
     807                { $$ = 0; }
    766808        ;
    767809
     
    783825
    784826jump_statement:
    785         GOTO no_attr_identifier ';'
     827        GOTO IDENTIFIER ';'
    786828                { $$ = new StatementNode( StatementNode::Goto, $2 ); }
    787829        | GOTO '*' comma_expression ';'                                         // GCC, computed goto
    788                 // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3 );
     830                // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3);
    789831                // whereas normal operator precedence yields goto (*i)+3;
    790832                { $$ = new StatementNode( StatementNode::Goto, $3 ); }
     
    792834                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    793835                { $$ = new StatementNode( StatementNode::Continue ); }
    794         | CONTINUE no_attr_identifier ';'                                       // CFA, multi-level continue
     836        | CONTINUE IDENTIFIER ';'                                                       // CFA, multi-level continue
    795837                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    796838                // the target of the transfer appears only at the start of an iteration statement.
     
    799841                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    800842                { $$ = new StatementNode( StatementNode::Break ); }
    801         | BREAK no_attr_identifier ';'                                          // CFA, multi-level exit
     843        | BREAK IDENTIFIER ';'                                                          // CFA, multi-level exit
    802844                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    803845                // the target of the transfer appears only at the start of an iteration statement.
     
    805847        | RETURN comma_expression_opt ';'
    806848                { $$ = new StatementNode( StatementNode::Return, $2, 0 ); }
    807         | THROW assignment_expression ';'
     849        | THROW assignment_expression_opt ';'
    808850                { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    809         | THROW ';'
    810                 { $$ = new StatementNode( StatementNode::Throw ); }
     851//      | THROW ';'
     852//              { $$ = new StatementNode( StatementNode::Throw ); }
     853        | THROWRESUME assignment_expression_opt ';'
     854                { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
     855        | THROWRESUME assignment_expression_opt AT assignment_expression ';'
     856                { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
     857//      | THROWRESUME ';'
     858//              { $$ = new StatementNode( StatementNode::Throw ); }
    811859        ;
    812860
     
    831879        | handler_clause CATCH '(' ELLIPSIS ')' compound_statement
    832880                { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
     881        | CATCHRESUME '(' ELLIPSIS ')' compound_statement
     882                { $$ = StatementNode::newCatchStmt( 0, $5, true ); }
     883        | handler_clause CATCHRESUME '(' ELLIPSIS ')' compound_statement
     884                { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
    833885        ;
    834886
     
    837889                { $$ = StatementNode::newCatchStmt( $5, $8 ); }
    838890        | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
     891                { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
     892        | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
     893                { $$ = StatementNode::newCatchStmt( $5, $8 ); }
     894        | handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
    839895                { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
    840896        ;
     
    909965        ;
    910966
    911 asm_clobbers_list_opt:                                                                          // GCC
     967asm_clobbers_list_opt:                                                                  // GCC
    912968        // empty
    913969                { $$ = 0; }                                                                             // use default argument
     
    9871043        | new_function_declaration pop ';'
    9881044        | type_declaring_list pop ';'
    989         | context_specifier pop ';'
     1045        | trait_specifier pop ';'
    9901046        ;
    9911047
     
    9941050                {
    9951051                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    996                         $$ = $1;
     1052                        $$ = $1->addInitializer( $2 );
    9971053                }
    9981054        | declaration_qualifier_list new_variable_specifier initializer_opt
     
    10011057                {
    10021058                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1003                         $$ = $2->addQualifiers( $1 );
     1059                        $$ = $2->addQualifiers( $1 )->addInitializer( $3 );;
    10041060                }
    10051061        | new_variable_declaration pop ',' push identifier_or_type_name initializer_opt
    10061062                {
    10071063                        typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
    1008                         $$ = $1->appendList( $1->cloneType( $5 ) );
     1064                        $$ = $1->appendList( $1->cloneType( $5 )->addInitializer( $6 ) );
    10091065                }
    10101066        ;
     
    13121368        | IMAGINARY                                                                                     // C99
    13131369                { $$ = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     1370        | VALIST                                                                                        // GCC, __builtin_va_list
     1371                { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    13141372        ;
    13151373
     
    13991457aggregate_name:
    14001458        aggregate_key '{' field_declaration_list '}'
    1401                 { $$ = DeclarationNode::newAggregate( $1, 0, 0, $3 ); }
     1459                { $$ = DeclarationNode::newAggregate( $1, 0, 0, $3, true ); }
    14021460        | aggregate_key no_attr_identifier_or_type_name
    1403                 { $$ = DeclarationNode::newAggregate( $1, $2, 0, 0 ); }
    1404         | aggregate_key no_attr_identifier_or_type_name '{' field_declaration_list '}'
    1405                 { $$ = DeclarationNode::newAggregate( $1, $2, 0, $4 ); }
     1461                {
     1462                        typedefTable.makeTypedef( *$2 );
     1463                        $$ = DeclarationNode::newAggregate( $1, $2, 0, 0, false );
     1464                }
     1465        | aggregate_key no_attr_identifier_or_type_name
     1466                { typedefTable.makeTypedef( *$2 ); }
     1467                '{' field_declaration_list '}'
     1468                { $$ = DeclarationNode::newAggregate( $1, $2, 0, $5, true ); }
    14061469        | aggregate_key '(' type_name_list ')' '{' field_declaration_list '}' // CFA
    1407                 { $$ = DeclarationNode::newAggregate( $1, 0, $3, $6 ); }
     1470                { $$ = DeclarationNode::newAggregate( $1, 0, $3, $6, false ); }
    14081471        | aggregate_key typegen_name                                            // CFA, S/R conflict
    14091472                { $$ = $2; }
     
    14181481
    14191482field_declaration_list:
    1420         field_declaration
    1421                 { $$ = $1; }
     1483        // empty
     1484                { $$ = 0; }
    14221485        | field_declaration_list field_declaration
    1423                 { $$ = $1->appendList( $2 ); }
     1486                { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
    14241487        ;
    14251488
     
    14271490        new_field_declaring_list ';'                                            // CFA, new style field declaration
    14281491        | EXTENSION new_field_declaring_list ';'                        // GCC
    1429                 { $$ = $2; }
     1492                { $$ = $2->set_extension( true ); }
    14301493        | field_declaring_list ';'
    14311494        | EXTENSION field_declaring_list ';'                            // GCC
    1432                 { $$ = $2; }
     1495                {       // mark all fields in list
     1496                        for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     1497                                iter->set_extension( true );
     1498                        $$ = $2;
     1499                }
    14331500        ;
    14341501
     
    14581525                // A semantic check is required to ensure bit_subrange only appears on base type int.
    14591526                { $$ = $1->addBitfield( $2 ); }
    1460         | type_redeclarator bit_subrange_size_opt
     1527        | variable_type_redeclarator bit_subrange_size_opt
    14611528                // A semantic check is required to ensure bit_subrange only appears on base type int.
    14621529                { $$ = $1->addBitfield( $2 ); }
     
    14831550        enum_key '{' enumerator_list comma_opt '}'
    14841551                { $$ = DeclarationNode::newEnum( 0, $3 ); }
    1485         | enum_key no_attr_identifier_or_type_name '{' enumerator_list comma_opt '}'
    1486                 { $$ = DeclarationNode::newEnum( $2, $4 ); }
    14871552        | enum_key no_attr_identifier_or_type_name
    1488                 { $$ = DeclarationNode::newEnum( $2, 0 ); }
     1553                {
     1554                        typedefTable.makeTypedef( *$2 );
     1555                        $$ = DeclarationNode::newEnum( $2, 0 );
     1556                }
     1557        | enum_key no_attr_identifier_or_type_name
     1558                { typedefTable.makeTypedef( *$2 ); }
     1559                '{' enumerator_list comma_opt '}'
     1560                { $$ = DeclarationNode::newEnum( $2, $5 ); }
    14891561        ;
    14901562
     
    16541726        | '=' initializer
    16551727                { $$ = $2; }
     1728        | ATassign initializer
     1729                { $$ = $2->set_maybeConstructed( false ); }
    16561730        ;
    16571731
     
    16621736
    16631737initializer_list:
    1664         initializer
     1738        // empty
     1739                { $$ = 0; }
     1740        | initializer
    16651741        | designation initializer                                       { $$ = $2->set_designators( $1 ); }
    16661742        | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_link( $3 ) ); }
     
    16931769
    16941770designator:
    1695         // only ".0" and ".1" allowed => semantic check
     1771                // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0 only ".0" and ".1"
     1772                // allowed => semantic check
    16961773        FLOATINGconstant
    16971774                { $$ = new DesignatorNode( new VarRefNode( $1 ) ); }
     
    17041781                { $$ = new DesignatorNode( $3, true ); }
    17051782        | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
    1706                 { $$ = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $3, $5 ), true ); }
     1783                { $$ = new DesignatorNode( new CompositeExprNode2( build_opr2( OperatorNode::Range, $3, $5 ) ), true ); }
    17071784        | '.' '[' push field_list pop ']'                                       // CFA, tuple field selector
    17081785                { $$ = new DesignatorNode( $4 ); }
     
    17651842
    17661843type_class:                                                                                             // CFA
    1767         TYPE
     1844        OTYPE
    17681845                { $$ = DeclarationNode::Type; }
    17691846        | DTYPE
     
    17771854                { $$ = 0; }
    17781855        | assertion_list_opt assertion
    1779                 { $$ = $1 == 0 ? $2 : $1->appendList( $2 ); }
     1856                { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
    17801857        ;
    17811858
     
    17831860        '|' no_attr_identifier_or_type_name '(' type_name_list ')'
    17841861                {
    1785                         typedefTable.openContext( *$2 );
    1786                         $$ = DeclarationNode::newContextUse( $2, $4 );
    1787                 }
    1788         | '|' '{' push context_declaration_list '}'
     1862                        typedefTable.openTrait( *$2 );
     1863                        $$ = DeclarationNode::newTraitUse( $2, $4 );
     1864                }
     1865        | '|' '{' push trait_declaration_list '}'
    17891866                { $$ = $4; }
    1790         | '|' '(' push type_parameter_list pop ')' '{' push context_declaration_list '}' '(' type_name_list ')'
     1867        | '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')'
    17911868                { $$ = 0; }
    17921869        ;
     
    18031880
    18041881type_declaring_list:                                                                    // CFA
    1805         TYPE type_declarator
    1806                 { $$ = $2; }
    1807         | storage_class_list TYPE type_declarator
     1882        OTYPE type_declarator
     1883                { $$ = $2; }
     1884        | storage_class_list OTYPE type_declarator
    18081885                { $$ = $3->addQualifiers( $1 ); }
    18091886        | type_declaring_list ',' type_declarator
     
    18311908        ;
    18321909
    1833 context_specifier:                                                                              // CFA
    1834         CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}'
     1910trait_specifier:                                                                                // CFA
     1911        TRAIT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}'
    18351912                {
    18361913                        typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
    1837                         $$ = DeclarationNode::newContext( $2, $5, 0 );
    1838                 }
    1839         | CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{'
    1840                 {
    1841                         typedefTable.enterContext( *$2 );
     1914                        $$ = DeclarationNode::newTrait( $2, $5, 0 );
     1915                }
     1916        | TRAIT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{'
     1917                {
     1918                        typedefTable.enterTrait( *$2 );
    18421919                        typedefTable.enterScope();
    18431920                }
    1844           context_declaration_list '}'
    1845                 {
    1846                         typedefTable.leaveContext();
     1921          trait_declaration_list '}'
     1922                {
     1923                        typedefTable.leaveTrait();
    18471924                        typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
    1848                         $$ = DeclarationNode::newContext( $2, $5, $10 );
    1849                 }
    1850         ;
    1851 
    1852 context_declaration_list:                                                               // CFA
    1853         context_declaration
    1854         | context_declaration_list push context_declaration
     1925                        $$ = DeclarationNode::newTrait( $2, $5, $10 );
     1926                }
     1927        ;
     1928
     1929trait_declaration_list:                                                         // CFA
     1930        trait_declaration
     1931        | trait_declaration_list push trait_declaration
    18551932                { $$ = $1->appendList( $3 ); }
    18561933        ;
    18571934
    1858 context_declaration:                                                                    // CFA
    1859         new_context_declaring_list pop ';'
    1860         | context_declaring_list pop ';'
    1861         ;
    1862 
    1863 new_context_declaring_list:                                                             // CFA
     1935trait_declaration:                                                                      // CFA
     1936        new_trait_declaring_list pop ';'
     1937        | trait_declaring_list pop ';'
     1938        ;
     1939
     1940new_trait_declaring_list:                                                               // CFA
    18641941        new_variable_specifier
    18651942                {
     
    18721949                        $$ = $1;
    18731950                }
    1874         | new_context_declaring_list pop ',' push identifier_or_type_name
     1951        | new_trait_declaring_list pop ',' push identifier_or_type_name
    18751952                {
    18761953                        typedefTable.addToEnclosingScope2( *$5, TypedefTable::ID );
     
    18791956        ;
    18801957
    1881 context_declaring_list:                                                                 // CFA
     1958trait_declaring_list:                                                                   // CFA
    18821959        type_specifier declarator
    18831960                {
     
    18851962                        $$ = $2->addType( $1 );
    18861963                }
    1887         | context_declaring_list pop ',' push declarator
     1964        | trait_declaring_list pop ',' push declarator
    18881965                {
    18891966                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    19362013                }
    19372014        | EXTENSION external_definition
    1938                 { $$ = $2; }
     2015                {       // mark all fields in list
     2016                        for ( DeclarationNode *iter = $2; iter != NULL; iter = (DeclarationNode *)iter->get_link() )
     2017                                iter->set_extension( true );
     2018                        $$ = $2;
     2019                }
    19392020        ;
    19402021
     
    19422023        function_definition
    19432024                // These rules are a concession to the "implicit int" type_specifier because there is a significant amount of
    1944                 // code with functions missing a type-specifier on the return type.  Parsing is possible because
    1945                 // function_definition does not appear in the context of an expression (nested functions would preclude this
    1946                 // concession). A function prototype declaration must still have a type_specifier.  OBSOLESCENT (see 1)
     2025                // legacy code with global functions missing the type-specifier for the return type, and assuming "int".
     2026                // Parsing is possible because function_definition does not appear in the context of an expression (nested
     2027                // functions preclude this concession, i.e., all nested function must have a return type). A function prototype
     2028                // declaration must still have a type_specifier.  OBSOLESCENT (see 1)
    19472029        | function_declarator compound_statement
    19482030                {
     
    20222104declarator:
    20232105        variable_declarator
     2106        | variable_type_redeclarator
    20242107        | function_declarator
    2025         | type_redeclarator
    20262108        ;
    20272109
    20282110subrange:
    20292111        constant_expression '~' constant_expression                     // CFA, integer subrange
    2030                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $1, $3 ); }
     2112                { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Range, $1, $3 ) ); }
    20312113        ;
    20322114
     
    21232205
    21242206variable_ptr:
    2125         '*' variable_declarator
     2207        ptrref_operator variable_declarator
    21262208                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2127         | '*' type_qualifier_list variable_declarator
     2209        | ptrref_operator type_qualifier_list variable_declarator
    21282210                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    21292211        | '(' variable_ptr ')'
     
    21492231        ;
    21502232
    2151 // This pattern parses a function declarator that is not redefining a typedef name. Because functions cannot be nested,
    2152 // there is no context where a function definition can redefine a typedef name. To allow nested functions requires
    2153 // further separation of variable and function declarators in type_redeclarator.  The pattern precludes returning
    2154 // arrays and functions versus pointers to arrays and functions.
     2233// This pattern parses a function declarator that is not redefining a typedef name. For non-nested functions, there is
     2234// no context where a function definition can redefine a typedef name, i.e., the typedef and function name cannot exist
     2235// is the same scope.  The pattern precludes returning arrays and functions versus pointers to arrays and functions.
    21552236
    21562237function_declarator:
     
    21722253
    21732254function_ptr:
    2174         '*' function_declarator
     2255        ptrref_operator function_declarator
    21752256                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2176         | '*' type_qualifier_list function_declarator
     2257        | ptrref_operator type_qualifier_list function_declarator
    21772258                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    21782259        | '(' function_ptr ')'
     
    22092290
    22102291old_function_ptr:
    2211         '*' old_function_declarator
     2292        ptrref_operator old_function_declarator
    22122293                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2213         | '*' type_qualifier_list old_function_declarator
     2294        | ptrref_operator type_qualifier_list old_function_declarator
    22142295                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    22152296        | '(' old_function_ptr ')'
     
    22362317// and functions versus pointers to arrays and functions.
    22372318
    2238 type_redeclarator:
     2319variable_type_redeclarator:
    22392320        paren_type attribute_list_opt
    22402321                { $$ = $1->addQualifiers( $2 ); }
     
    22532334
    22542335type_ptr:
    2255         '*' type_redeclarator
     2336        ptrref_operator variable_type_redeclarator
    22562337                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2257         | '*' type_qualifier_list type_redeclarator
     2338        | ptrref_operator type_qualifier_list variable_type_redeclarator
    22582339                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    22592340        | '(' type_ptr ')'
     
    22972378
    22982379identifier_parameter_ptr:
    2299         '*' identifier_parameter_declarator
     2380        ptrref_operator identifier_parameter_declarator
    23002381                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2301         | '*' type_qualifier_list identifier_parameter_declarator
     2382        | ptrref_operator type_qualifier_list identifier_parameter_declarator
    23022383                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    23032384        | '(' identifier_parameter_ptr ')'
     
    23382419//              not as redundant parentheses around the identifier."
    23392420//
    2340 // which precludes the following cases:
     2421// For example:
    23412422//
    23422423//              typedef float T;
     
    23752456
    23762457type_parameter_ptr:
    2377         '*' type_parameter_redeclarator
     2458        ptrref_operator type_parameter_redeclarator
    23782459                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2379         | '*' type_qualifier_list type_parameter_redeclarator
     2460        | ptrref_operator type_qualifier_list type_parameter_redeclarator
    23802461                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    23812462        | '(' type_parameter_ptr ')'
     
    24152496
    24162497abstract_ptr:
    2417         '*'
     2498        ptrref_operator
    24182499                { $$ = DeclarationNode::newPointer( 0 ); }
    2419         | '*' type_qualifier_list
     2500        | ptrref_operator type_qualifier_list
    24202501                { $$ = DeclarationNode::newPointer( $2 ); }
    2421         | '*' abstract_declarator
     2502        | ptrref_operator abstract_declarator
    24222503                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2423         | '*' type_qualifier_list abstract_declarator
     2504        | ptrref_operator type_qualifier_list abstract_declarator
    24242505                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    24252506        | '(' abstract_ptr ')'
     
    24842565
    24852566abstract_parameter_ptr:
    2486         '*'
     2567        ptrref_operator
    24872568                { $$ = DeclarationNode::newPointer( 0 ); }
    2488         | '*' type_qualifier_list
     2569        | ptrref_operator type_qualifier_list
    24892570                { $$ = DeclarationNode::newPointer( $2 ); }
    2490         | '*' abstract_parameter_declarator
     2571        | ptrref_operator abstract_parameter_declarator
    24912572                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2492         | '*' type_qualifier_list abstract_parameter_declarator
     2573        | ptrref_operator type_qualifier_list abstract_parameter_declarator
    24932574                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    24942575        | '(' abstract_parameter_ptr ')'
     
    25622643
    25632644variable_abstract_ptr:
    2564         '*'
     2645        ptrref_operator
    25652646                { $$ = DeclarationNode::newPointer( 0 ); }
    2566         | '*' type_qualifier_list
     2647        | ptrref_operator type_qualifier_list
    25672648                { $$ = DeclarationNode::newPointer( $2 ); }
    2568         | '*' variable_abstract_declarator
     2649        | ptrref_operator variable_abstract_declarator
    25692650                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2570         | '*' type_qualifier_list variable_abstract_declarator
     2651        | ptrref_operator type_qualifier_list variable_abstract_declarator
    25712652                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    25722653        | '(' variable_abstract_ptr ')'
     
    26072688
    26082689new_identifier_parameter_ptr:                                                   // CFA
    2609         '*' type_specifier
     2690        ptrref_operator type_specifier
    26102691                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2611         | type_qualifier_list '*' type_specifier
     2692        | type_qualifier_list ptrref_operator type_specifier
    26122693                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2613         | '*' new_abstract_function
     2694        | ptrref_operator new_abstract_function
    26142695                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2615         | type_qualifier_list '*' new_abstract_function
     2696        | type_qualifier_list ptrref_operator new_abstract_function
    26162697                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2617         | '*' new_identifier_parameter_declarator_tuple
     2698        | ptrref_operator new_identifier_parameter_declarator_tuple
    26182699                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2619         | type_qualifier_list '*' new_identifier_parameter_declarator_tuple
     2700        | type_qualifier_list ptrref_operator new_identifier_parameter_declarator_tuple
    26202701                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    26212702        ;
     
    26942775
    26952776new_abstract_ptr:                                                                               // CFA
    2696         '*' type_specifier
     2777        ptrref_operator type_specifier
    26972778                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2698         | type_qualifier_list '*' type_specifier
     2779        | type_qualifier_list ptrref_operator type_specifier
    26992780                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2700         | '*' new_abstract_function
     2781        | ptrref_operator new_abstract_function
    27012782                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2702         | type_qualifier_list '*' new_abstract_function
     2783        | type_qualifier_list ptrref_operator new_abstract_function
    27032784                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2704         | '*' new_abstract_declarator_tuple
     2785        | ptrref_operator new_abstract_declarator_tuple
    27052786                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2706         | type_qualifier_list '*' new_abstract_declarator_tuple
     2787        | type_qualifier_list ptrref_operator new_abstract_declarator_tuple
    27072788                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    27082789        ;
     
    27712852        std::cout << "Error ";
    27722853        if ( yyfilename ) {
    2773             std::cout << "in file " << yyfilename << " ";
     2854                std::cout << "in file " << yyfilename << " ";
    27742855        } // if
    27752856        std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
  • src/ResolvExpr/AdjustExprType.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // AdjustExprType.cc -- 
     7// AdjustExprType.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:41:42 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 23:54:02 2015
    13 // Update Count     : 3
    14 // 
     12// Last Modified On : Wed Mar  2 17:34:53 2016
     13// Update Count     : 4
     14//
    1515
    1616#include "typeops.h"
     
    3333                virtual Type* mutate( UnionInstType *aggregateUseType );
    3434                virtual Type* mutate( EnumInstType *aggregateUseType );
    35                 virtual Type* mutate( ContextInstType *aggregateUseType );
     35                virtual Type* mutate( TraitInstType *aggregateUseType );
    3636                virtual Type* mutate( TypeInstType *aggregateUseType );
    3737                virtual Type* mutate( TupleType *tupleType );
     38                virtual Type* mutate( VarArgsType *varArgsType );
    3839
    3940                const TypeEnvironment &env;
     
    6465
    6566        Type *AdjustExprType::mutate( ArrayType *arrayType ) {
    66                 PointerType *pointerType = new PointerType( arrayType->get_qualifiers(), arrayType->get_base()->clone() );
     67                // need to recursively mutate the base type in order for multi-dimensional arrays to work.
     68                PointerType *pointerType = new PointerType( arrayType->get_qualifiers(), arrayType->get_base()->clone()->acceptMutator( *this ) );
    6769                delete arrayType;
    6870                return pointerType;
     
    8688        }
    8789
    88         Type *AdjustExprType::mutate( ContextInstType *aggregateUseType ) {
     90        Type *AdjustExprType::mutate( TraitInstType *aggregateUseType ) {
    8991                return aggregateUseType;
    9092        }
     
    111113                return tupleType;
    112114        }
     115
     116        Type *AdjustExprType::mutate( VarArgsType *varArgsType ) {
     117                return varArgsType;
     118        }
    113119} // namespace ResolvExpr
    114120
  • src/ResolvExpr/Alternative.cc

    r679864e1 r242d458  
    1717#include "SynTree/Type.h"
    1818#include "SynTree/Expression.h"
    19 #include "utility.h"
     19#include "Common/utility.h"
    2020
    2121namespace ResolvExpr {
  • src/ResolvExpr/AlternativeFinder.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // AlternativeFinder.cc -- 
     7// AlternativeFinder.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:52:08 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jul  3 17:58:39 2015
    13 // Update Count     : 22
     12// Last Modified On : Mon Jul  4 17:02:51 2016
     13// Update Count     : 29
    1414//
    1515
     
    1919#include <functional>
    2020#include <cassert>
     21#include <unordered_map>
     22#include <utility>
     23#include <vector>
    2124
    2225#include "AlternativeFinder.h"
     
    3841#include "Tuples/TupleAssignment.h"
    3942#include "Tuples/NameMatcher.h"
    40 #include "utility.h"
     43#include "Common/utility.h"
     44#include "InitTweak/InitTweak.h"
    4145
    4246extern bool resolvep;
    43 #define PRINT( text ) if ( resolvep ) { text } 
     47#define PRINT( text ) if ( resolvep ) { text }
    4448//#define DEBUG_COST
    4549
     
    107111                                        if ( candidate->cost < mapPlace->second.candidate->cost ) {
    108112                                                PRINT(
    109                                                         std::cout << "cost " << candidate->cost << " beats " << mapPlace->second.candidate->cost << std::endl;
     113                                                        std::cerr << "cost " << candidate->cost << " beats " << mapPlace->second.candidate->cost << std::endl;
    110114                                                )
    111115                                                selected[ mangleName ] = current;
    112116                                        } else if ( candidate->cost == mapPlace->second.candidate->cost ) {
    113117                                                PRINT(
    114                                                         std::cout << "marking ambiguous" << std::endl;
     118                                                        std::cerr << "marking ambiguous" << std::endl;
    115119                                                )
    116120                                                mapPlace->second.isAmbiguous = true;
     
    122126
    123127                        PRINT(
    124                                 std::cout << "there are " << selected.size() << " alternatives before elimination" << std::endl;
     128                                std::cerr << "there are " << selected.size() << " alternatives before elimination" << std::endl;
    125129                        )
    126130
     
    182186                        begin++;
    183187                        PRINT(
    184                                 std::cout << "findSubExprs" << std::endl;
    185                                 printAlts( finder.alternatives, std::cout );
     188                                std::cerr << "findSubExprs" << std::endl;
     189                                printAlts( finder.alternatives, std::cerr );
    186190                        )
    187191                        *out++ = finder;
     
    204208                }
    205209                PRINT(
    206                         std::cout << "alternatives before prune:" << std::endl;
    207                         printAlts( alternatives, std::cout );
     210                        std::cerr << "alternatives before prune:" << std::endl;
     211                        printAlts( alternatives, std::cerr );
    208212                )
    209213                AltList::iterator oldBegin = alternatives.begin();
     
    221225                alternatives.erase( oldBegin, alternatives.end() );
    222226                PRINT(
    223                         std::cout << "there are " << alternatives.size() << " alternatives after elimination" << std::endl;
     227                        std::cerr << "there are " << alternatives.size() << " alternatives after elimination" << std::endl;
    224228                )
     229
     230                // Central location to handle gcc extension keyword for all expression types.
     231                for ( Alternative &iter: alternatives ) {
     232                        iter.expr->set_extension( expr->get_extension() );
     233                } // for
    225234        }
    226235
     
    261270                for ( std::list< Expression* >::iterator actualExpr = actuals.begin(); actualExpr != actuals.end(); ++actualExpr ) {
    262271                        PRINT(
    263                                 std::cout << "actual expression:" << std::endl;
    264                                 (*actualExpr)->print( std::cout, 8 );
    265                                 std::cout << "--- results are" << std::endl;
    266                                 printAll( (*actualExpr)->get_results(), std::cout, 8 );
     272                                std::cerr << "actual expression:" << std::endl;
     273                                (*actualExpr)->print( std::cerr, 8 );
     274                                std::cerr << "--- results are" << std::endl;
     275                                printAll( (*actualExpr)->get_results(), std::cerr, 8 );
    267276                        )
    268277                        std::list< DeclarationWithType* >::iterator startFormal = formal;
     
    278287                                }
    279288                                PRINT(
    280                                         std::cout << std::endl << "converting ";
    281                                         (*actual)->print( std::cout, 8 );
    282                                         std::cout << std::endl << " to ";
    283                                         (*formal)->get_type()->print( std::cout, 8 );
     289                                        std::cerr << std::endl << "converting ";
     290                                        (*actual)->print( std::cerr, 8 );
     291                                        std::cerr << std::endl << " to ";
     292                                        (*formal)->get_type()->print( std::cerr, 8 );
    284293                                )
    285294                                Cost newCost = conversionCost( *actual, (*formal)->get_type(), indexer, alt.env );
    286295                                PRINT(
    287                                         std::cout << std::endl << "cost is" << newCost << std::endl;
     296                                        std::cerr << std::endl << "cost is" << newCost << std::endl;
    288297                                )
    289298
     
    323332                for ( InferredParams::const_iterator assert = appExpr->get_inferParams().begin(); assert != appExpr->get_inferParams().end(); ++assert ) {
    324333                        PRINT(
    325                                 std::cout << std::endl << "converting ";
    326                                 assert->second.actualType->print( std::cout, 8 );
    327                                 std::cout << std::endl << " to ";
    328                                 assert->second.formalType->print( std::cout, 8 );
     334                                std::cerr << std::endl << "converting ";
     335                                assert->second.actualType->print( std::cerr, 8 );
     336                                std::cerr << std::endl << " to ";
     337                                assert->second.formalType->print( std::cerr, 8 );
    329338                                )
    330339                                Cost newCost = conversionCost( assert->second.actualType, assert->second.formalType, indexer, alt.env );
    331340                        PRINT(
    332                                 std::cout << std::endl << "cost of conversion is " << newCost << std::endl;
     341                                std::cerr << std::endl << "cost of conversion is " << newCost << std::endl;
    333342                                )
    334343                                if ( newCost == Cost::infinity ) {
     
    407416        }
    408417
    409         static const int recursionLimit = 10;
     418        // /// Map of declaration uniqueIds (intended to be the assertions in an AssertionSet) to their parents and the number of times they've been included
     419        //typedef std::unordered_map< UniqueId, std::unordered_map< UniqueId, unsigned > > AssertionParentSet;
     420       
     421        static const int recursionLimit = /*10*/ 4;  ///< Limit to depth of recursion satisfaction
     422        //static const unsigned recursionParentLimit = 1;  ///< Limit to the number of times an assertion can recursively use itself
    410423
    411424        void addToIndexer( AssertionSet &assertSet, SymTab::Indexer &indexer ) {
     
    416429                }
    417430        }
    418 
     431       
    419432        template< typename ForwardIterator, typename OutputIterator >
    420         void inferRecursive( ForwardIterator begin, ForwardIterator end, const Alternative &newAlt, OpenVarSet &openVars, const SymTab::Indexer &decls, const AssertionSet &newNeed, int level, const SymTab::Indexer &indexer, OutputIterator out ) {
     433        void inferRecursive( ForwardIterator begin, ForwardIterator end, const Alternative &newAlt, OpenVarSet &openVars, const SymTab::Indexer &decls, const AssertionSet &newNeed, /*const AssertionParentSet &needParents,*/
     434                                                 int level, const SymTab::Indexer &indexer, OutputIterator out ) {
    421435                if ( begin == end ) {
    422436                        if ( newNeed.empty() ) {
     
    431445                                        printAssertionSet( newNeed, std::cerr, 8 );
    432446                                )
    433                                 inferRecursive( newNeed.begin(), newNeed.end(), newAlt, openVars, decls, newerNeed, level+1, indexer, out );
     447                                inferRecursive( newNeed.begin(), newNeed.end(), newAlt, openVars, decls, newerNeed, /*needParents,*/ level+1, indexer, out );
    434448                                return;
    435449                        }
     
    438452                ForwardIterator cur = begin++;
    439453                if ( ! cur->second ) {
    440                         inferRecursive( begin, end, newAlt, openVars, decls, newNeed, level, indexer, out );
     454                        inferRecursive( begin, end, newAlt, openVars, decls, newNeed, /*needParents,*/ level, indexer, out );
    441455                }
    442456                DeclarationWithType *curDecl = cur->first;
     
    448462                std::list< DeclarationWithType* > candidates;
    449463                decls.lookupId( curDecl->get_name(), candidates );
    450 ///   if ( candidates.empty() ) { std::cout << "no candidates!" << std::endl; }
     464///   if ( candidates.empty() ) { std::cerr << "no candidates!" << std::endl; }
    451465                for ( std::list< DeclarationWithType* >::const_iterator candidate = candidates.begin(); candidate != candidates.end(); ++candidate ) {
    452466                        PRINT(
    453                                 std::cout << "inferRecursive: candidate is ";
    454                                 (*candidate)->print( std::cout );
    455                                 std::cout << std::endl;
     467                                std::cerr << "inferRecursive: candidate is ";
     468                                (*candidate)->print( std::cerr );
     469                                std::cerr << std::endl;
    456470                        )
     471                       
    457472                        AssertionSet newHave, newerNeed( newNeed );
    458473                        TypeEnvironment newEnv( newAlt.env );
     
    477492                                newerAlt.env = newEnv;
    478493                                assert( (*candidate)->get_uniqueId() );
    479                                 Expression *varExpr = new VariableExpr( static_cast< DeclarationWithType* >( Declaration::declFromId( (*candidate)->get_uniqueId() ) ) );
     494                                DeclarationWithType *candDecl = static_cast< DeclarationWithType* >( Declaration::declFromId( (*candidate)->get_uniqueId() ) );
     495                                //AssertionParentSet newNeedParents( needParents );
     496                                // skip repeatingly-self-recursive assertion satisfaction
     497                                // DOESN'T WORK: grandchild nodes conflict with their cousins
     498                                //if ( newNeedParents[ curDecl->get_uniqueId() ][ candDecl->get_uniqueId() ]++ > recursionParentLimit ) continue;
     499                                Expression *varExpr = new VariableExpr( candDecl );
    480500                                deleteAll( varExpr->get_results() );
    481501                                varExpr->get_results().clear();
    482502                                varExpr->get_results().push_front( adjType->clone() );
    483503                                PRINT(
    484                                         std::cout << "satisfying assertion " << curDecl->get_uniqueId() << " ";
    485                                         curDecl->print( std::cout );
    486                                         std::cout << " with declaration " << (*candidate)->get_uniqueId() << " ";
    487                                         (*candidate)->print( std::cout );
    488                                         std::cout << std::endl;
     504                                        std::cerr << "satisfying assertion " << curDecl->get_uniqueId() << " ";
     505                                        curDecl->print( std::cerr );
     506                                        std::cerr << " with declaration " << (*candidate)->get_uniqueId() << " ";
     507                                        (*candidate)->print( std::cerr );
     508                                        std::cerr << std::endl;
    489509                                )
    490510                                ApplicationExpr *appExpr = static_cast< ApplicationExpr* >( newerAlt.expr );
    491511                                // XXX: this is a memory leak, but adjType can't be deleted because it might contain assertions
    492512                                appExpr->get_inferParams()[ curDecl->get_uniqueId() ] = ParamEntry( (*candidate)->get_uniqueId(), adjType->clone(), curDecl->get_type()->clone(), varExpr );
    493                                 inferRecursive( begin, end, newerAlt, newOpenVars, newDecls, newerNeed, level, indexer, out );
     513                                inferRecursive( begin, end, newerAlt, newOpenVars, newDecls, newerNeed, /*newNeedParents,*/ level, indexer, out );
    494514                        } else {
    495515                                delete adjType;
     
    501521        void AlternativeFinder::inferParameters( const AssertionSet &need, AssertionSet &have, const Alternative &newAlt, OpenVarSet &openVars, OutputIterator out ) {
    502522//      PRINT(
    503 //          std::cout << "inferParameters: assertions needed are" << std::endl;
    504 //          printAll( need, std::cout, 8 );
     523//          std::cerr << "inferParameters: assertions needed are" << std::endl;
     524//          printAll( need, std::cerr, 8 );
    505525//          )
    506526                SymTab::Indexer decls( indexer );
    507527                PRINT(
    508                         std::cout << "============= original indexer" << std::endl;
    509                         indexer.print( std::cout );
    510                         std::cout << "============= new indexer" << std::endl;
    511                         decls.print( std::cout );
     528                        std::cerr << "============= original indexer" << std::endl;
     529                        indexer.print( std::cerr );
     530                        std::cerr << "============= new indexer" << std::endl;
     531                        decls.print( std::cerr );
    512532                )
    513533                addToIndexer( have, decls );
    514534                AssertionSet newNeed;
    515                 inferRecursive( need.begin(), need.end(), newAlt, openVars, decls, newNeed, 0, indexer, out );
     535                //AssertionParentSet needParents;
     536                inferRecursive( need.begin(), need.end(), newAlt, openVars, decls, newNeed, /*needParents,*/ 0, indexer, out );
    516537//      PRINT(
    517 //          std::cout << "declaration 14 is ";
     538//          std::cerr << "declaration 14 is ";
    518539//          Declaration::declFromId
    519540//          *out++ = newAlt;
     
    532553                        makeExprList( actualAlt, appExpr->get_args() );
    533554                        PRINT(
    534                                 std::cout << "need assertions:" << std::endl;
    535                                 printAssertionSet( resultNeed, std::cout, 8 );
     555                                std::cerr << "need assertions:" << std::endl;
     556                                printAssertionSet( resultNeed, std::cerr, 8 );
    536557                        )
    537558                        inferParameters( resultNeed, resultHave, newAlt, openVars, out );
     
    543564                AlternativeFinder funcOpFinder( indexer, env );
    544565
    545                 AlternativeFinder funcFinder( indexer, env ); {
    546                         NameExpr *fname = 0;;
    547                         if ( ( fname = dynamic_cast<NameExpr *>( untypedExpr->get_function()))
    548                                  && ( fname->get_name() == std::string("&&")) ) {
     566                AlternativeFinder funcFinder( indexer, env );
     567
     568                {
     569                        std::string fname = InitTweak::getFunctionName( untypedExpr );
     570                        if ( fname == "&&" ) {
    549571                                VoidType v = Type::Qualifiers();                // resolve to type void *
    550572                                PointerType pt( Type::Qualifiers(), v.clone() );
     
    570592
    571593                AltList candidates;
     594                SemanticError errors;
    572595
    573596                for ( AltList::const_iterator func = funcFinder.alternatives.begin(); func != funcFinder.alternatives.end(); ++func ) {
    574                         PRINT(
    575                                 std::cout << "working on alternative: " << std::endl;
    576                                 func->print( std::cout, 8 );
    577                         )
    578                         // check if the type is pointer to function
    579                         PointerType *pointer;
    580                         if ( func->expr->get_results().size() == 1 && ( pointer = dynamic_cast< PointerType* >( func->expr->get_results().front() ) ) ) {
    581                                 if ( FunctionType *function = dynamic_cast< FunctionType* >( pointer->get_base() ) ) {
    582                                         for ( std::list< AltList >::iterator actualAlt = possibilities.begin(); actualAlt != possibilities.end(); ++actualAlt ) {
    583                                                 // XXX
    584                                                 //Designators::check_alternative( function, *actualAlt );
    585                                                 makeFunctionAlternatives( *func, function, *actualAlt, std::back_inserter( candidates ) );
    586                                         }
    587                                 } else if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( pointer->get_base() ) ) {
    588                                         EqvClass eqvClass;
    589                                         if ( func->env.lookup( typeInst->get_name(), eqvClass ) && eqvClass.type ) {
    590                                                 if ( FunctionType *function = dynamic_cast< FunctionType* >( eqvClass.type ) ) {
    591                                                         for ( std::list< AltList >::iterator actualAlt = possibilities.begin(); actualAlt != possibilities.end(); ++actualAlt ) {
    592                                                                 makeFunctionAlternatives( *func, function, *actualAlt, std::back_inserter( candidates ) );
    593                                                         } // for
     597                        try {
     598                                PRINT(
     599                                        std::cerr << "working on alternative: " << std::endl;
     600                                        func->print( std::cerr, 8 );
     601                                )
     602                                // check if the type is pointer to function
     603                                PointerType *pointer;
     604                                if ( func->expr->get_results().size() == 1 && ( pointer = dynamic_cast< PointerType* >( func->expr->get_results().front() ) ) ) {
     605                                        if ( FunctionType *function = dynamic_cast< FunctionType* >( pointer->get_base() ) ) {
     606                                                for ( std::list< AltList >::iterator actualAlt = possibilities.begin(); actualAlt != possibilities.end(); ++actualAlt ) {
     607                                                        // XXX
     608                                                        //Designators::check_alternative( function, *actualAlt );
     609                                                        makeFunctionAlternatives( *func, function, *actualAlt, std::back_inserter( candidates ) );
     610                                                }
     611                                        } else if ( TypeInstType *typeInst = dynamic_cast< TypeInstType* >( pointer->get_base() ) ) {
     612                                                EqvClass eqvClass;
     613                                                if ( func->env.lookup( typeInst->get_name(), eqvClass ) && eqvClass.type ) {
     614                                                        if ( FunctionType *function = dynamic_cast< FunctionType* >( eqvClass.type ) ) {
     615                                                                for ( std::list< AltList >::iterator actualAlt = possibilities.begin(); actualAlt != possibilities.end(); ++actualAlt ) {
     616                                                                        makeFunctionAlternatives( *func, function, *actualAlt, std::back_inserter( candidates ) );
     617                                                                } // for
     618                                                        } // if
    594619                                                } // if
    595620                                        } // if
     621                                } else {
     622                                        // seek a function operator that's compatible
     623                                        if ( ! doneInit ) {
     624                                                doneInit = true;
     625                                                NameExpr *opExpr = new NameExpr( "?()" );
     626                                                try {
     627                                                        funcOpFinder.findWithAdjustment( opExpr );
     628                                                } catch( SemanticError &e ) {
     629                                                        // it's ok if there aren't any defined function ops
     630                                                }
     631                                                PRINT(
     632                                                        std::cerr << "known function ops:" << std::endl;
     633                                                        printAlts( funcOpFinder.alternatives, std::cerr, 8 );
     634                                                )
     635                                        }
     636
     637                                        for ( AltList::const_iterator funcOp = funcOpFinder.alternatives.begin(); funcOp != funcOpFinder.alternatives.end(); ++funcOp ) {
     638                                                // check if the type is pointer to function
     639                                                PointerType *pointer;
     640                                                if ( funcOp->expr->get_results().size() == 1
     641                                                        && ( pointer = dynamic_cast< PointerType* >( funcOp->expr->get_results().front() ) ) ) {
     642                                                        if ( FunctionType *function = dynamic_cast< FunctionType* >( pointer->get_base() ) ) {
     643                                                                for ( std::list< AltList >::iterator actualAlt = possibilities.begin(); actualAlt != possibilities.end(); ++actualAlt ) {
     644                                                                        AltList currentAlt;
     645                                                                        currentAlt.push_back( *func );
     646                                                                        currentAlt.insert( currentAlt.end(), actualAlt->begin(), actualAlt->end() );
     647                                                                        makeFunctionAlternatives( *funcOp, function, currentAlt, std::back_inserter( candidates ) );
     648                                                                } // for
     649                                                        } // if
     650                                                } // if
     651                                        } // for
    596652                                } // if
    597                         } else {
    598                                 // seek a function operator that's compatible
    599                                 if ( ! doneInit ) {
    600                                         doneInit = true;
    601                                         NameExpr *opExpr = new NameExpr( "?()" );
    602                                         try {
    603                                                 funcOpFinder.findWithAdjustment( opExpr );
    604                                         } catch( SemanticError &e ) {
    605                                                 // it's ok if there aren't any defined function ops
    606                                         }
    607                                         PRINT(
    608                                                 std::cout << "known function ops:" << std::endl;
    609                                                 printAlts( funcOpFinder.alternatives, std::cout, 8 );
    610                                         )
    611                                 }
    612 
    613                                 for ( AltList::const_iterator funcOp = funcOpFinder.alternatives.begin(); funcOp != funcOpFinder.alternatives.end(); ++funcOp ) {
    614                                         // check if the type is pointer to function
    615                                         PointerType *pointer;
    616                                         if ( funcOp->expr->get_results().size() == 1
    617                                                  && ( pointer = dynamic_cast< PointerType* >( funcOp->expr->get_results().front() ) ) ) {
    618                                                 if ( FunctionType *function = dynamic_cast< FunctionType* >( pointer->get_base() ) ) {
    619                                                         for ( std::list< AltList >::iterator actualAlt = possibilities.begin(); actualAlt != possibilities.end(); ++actualAlt ) {
    620                                                                 AltList currentAlt;
    621                                                                 currentAlt.push_back( *func );
    622                                                                 currentAlt.insert( currentAlt.end(), actualAlt->begin(), actualAlt->end() );
    623                                                                 makeFunctionAlternatives( *funcOp, function, currentAlt, std::back_inserter( candidates ) );
    624                                                         } // for
    625                                                 } // if
    626                                         } // if
    627                                 } // for
    628                         } // if
    629                 } // for
     653                        } catch ( SemanticError &e ) {
     654                                errors.append( e );
     655                        }
     656                } // for
     657
     658                // Implement SFINAE; resolution errors are only errors if there aren't any non-erroneous resolutions
     659                if ( candidates.empty() && ! errors.isEmpty() ) { throw errors; }
    630660
    631661                for ( AltList::iterator withFunc = candidates.begin(); withFunc != candidates.end(); ++withFunc ) {
     
    639669                                FunctionType *function = dynamic_cast< FunctionType* >( pointer->get_base() );
    640670                                assert( function );
    641                                 std::cout << "Case +++++++++++++" << std::endl;
    642                                 std::cout << "formals are:" << std::endl;
    643                                 printAll( function->get_parameters(), std::cout, 8 );
    644                                 std::cout << "actuals are:" << std::endl;
    645                                 printAll( appExpr->get_args(), std::cout, 8 );
    646                                 std::cout << "bindings are:" << std::endl;
    647                                 withFunc->env.print( std::cout, 8 );
    648                                 std::cout << "cost of conversion is:" << cvtCost << std::endl;
     671                                std::cerr << "Case +++++++++++++" << std::endl;
     672                                std::cerr << "formals are:" << std::endl;
     673                                printAll( function->get_parameters(), std::cerr, 8 );
     674                                std::cerr << "actuals are:" << std::endl;
     675                                printAll( appExpr->get_args(), std::cerr, 8 );
     676                                std::cerr << "bindings are:" << std::endl;
     677                                withFunc->env.print( std::cerr, 8 );
     678                                std::cerr << "cost of conversion is:" << cvtCost << std::endl;
    649679                        )
    650680                        if ( cvtCost != Cost::infinity ) {
     
    698728                        std::list< Type* >::iterator candidate_end = (*i).expr->get_results().begin();
    699729                        std::advance( candidate_end, castExpr->get_results().size() );
     730                        // unification run for side-effects
     731                        unifyList( castExpr->get_results().begin(), castExpr->get_results().end(),
     732                                           (*i).expr->get_results().begin(), candidate_end,
     733                                   i->env, needAssertions, haveAssertions, openVars, indexer );
    700734                        Cost thisCost = castCostList( (*i).expr->get_results().begin(), candidate_end,
    701                                                                                   castExpr->get_results().begin(), castExpr->get_results().end(), indexer, i->env );
     735                                                                                  castExpr->get_results().begin(), castExpr->get_results().end(),
     736                                                                                  indexer, i->env );
    702737                        if ( thisCost != Cost::infinity ) {
    703738                                // count one safe conversion for each value that is thrown away
     
    787822        }
    788823
     824        void AlternativeFinder::visit( AlignofExpr *alignofExpr ) {
     825                if ( alignofExpr->get_isType() ) {
     826                        alternatives.push_back( Alternative( alignofExpr->clone(), env, Cost::zero ) );
     827                } else {
     828                        // find all alternatives for the argument to sizeof
     829                        AlternativeFinder finder( indexer, env );
     830                        finder.find( alignofExpr->get_expr() );
     831                        // find the lowest cost alternative among the alternatives, otherwise ambiguous
     832                        AltList winners;
     833                        findMinCost( finder.alternatives.begin(), finder.alternatives.end(), back_inserter( winners ) );
     834                        if ( winners.size() != 1 ) {
     835                                throw SemanticError( "Ambiguous expression in alignof operand: ", alignofExpr->get_expr() );
     836                        } // if
     837                        // return the lowest cost alternative for the argument
     838                        Alternative &choice = winners.front();
     839                        alternatives.push_back( Alternative( new AlignofExpr( choice.expr->clone() ), choice.env, Cost::zero ) );
     840                } // if
     841        }
     842
     843        template< typename StructOrUnionType >
     844        void AlternativeFinder::addOffsetof( StructOrUnionType *aggInst, const std::string &name ) {
     845                std::list< Declaration* > members;
     846                aggInst->lookup( name, members );
     847                for ( std::list< Declaration* >::const_iterator i = members.begin(); i != members.end(); ++i ) {
     848                        if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType* >( *i ) ) {
     849                                alternatives.push_back( Alternative( new OffsetofExpr( aggInst->clone(), dwt->clone() ), env, Cost::zero ) );
     850                                renameTypes( alternatives.back().expr );
     851                        } else {
     852                                assert( false );
     853                        }
     854                }
     855        }
     856
     857        void AlternativeFinder::visit( UntypedOffsetofExpr *offsetofExpr ) {
     858                AlternativeFinder funcFinder( indexer, env );
     859                if ( StructInstType *structInst = dynamic_cast< StructInstType* >( offsetofExpr->get_type() ) ) {
     860                        addOffsetof( structInst, offsetofExpr->get_member() );
     861                } else if ( UnionInstType *unionInst = dynamic_cast< UnionInstType* >( offsetofExpr->get_type() ) ) {
     862                        addOffsetof( unionInst, offsetofExpr->get_member() );
     863                }
     864        }
     865
     866        void AlternativeFinder::visit( OffsetofExpr *offsetofExpr ) {
     867                alternatives.push_back( Alternative( offsetofExpr->clone(), env, Cost::zero ) );
     868        }
     869
     870        void AlternativeFinder::visit( OffsetPackExpr *offsetPackExpr ) {
     871                alternatives.push_back( Alternative( offsetPackExpr->clone(), env, Cost::zero ) );
     872        }
     873
    789874        void AlternativeFinder::resolveAttr( DeclarationWithType *funcDecl, FunctionType *function, Type *argType, const TypeEnvironment &env ) {
    790875                // assume no polymorphism
     
    792877                assert( function->get_parameters().size() == 1 );
    793878                PRINT(
    794                         std::cout << "resolvAttr: funcDecl is ";
    795                         funcDecl->print( std::cout );
    796                         std::cout << " argType is ";
    797                         argType->print( std::cout );
    798                         std::cout << std::endl;
     879                        std::cerr << "resolvAttr: funcDecl is ";
     880                        funcDecl->print( std::cerr );
     881                        std::cerr << " argType is ";
     882                        argType->print( std::cerr );
     883                        std::cerr << std::endl;
    799884                )
    800885                if ( typesCompatibleIgnoreQualifiers( argType, function->get_parameters().front()->get_type(), indexer, env ) ) {
     
    9171002                } // for
    9181003        }
     1004
     1005        void AlternativeFinder::visit( ImplicitCopyCtorExpr * impCpCtorExpr ) {
     1006                alternatives.push_back( Alternative( impCpCtorExpr->clone(), env, Cost::zero ) );
     1007        }
    9191008} // namespace ResolvExpr
    9201009
  • src/ResolvExpr/AlternativeFinder.h

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // AlternativeFinder.h -- 
     7// AlternativeFinder.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:56:12 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat May 16 23:58:43 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Apr 19 11:44:53 2016
    1313// Update Count     : 2
    14 // 
     14//
    1515
    1616#ifndef ALTERNATIVEFINDER_H
     
    5454                virtual void visit( NameExpr *variableExpr );
    5555                virtual void visit( VariableExpr *variableExpr );
    56                 virtual void visit( ConstantExpr *constantExpr ); 
     56                virtual void visit( ConstantExpr *constantExpr );
    5757                virtual void visit( SizeofExpr *sizeofExpr );
     58                virtual void visit( AlignofExpr *alignofExpr );
     59                virtual void visit( UntypedOffsetofExpr *offsetofExpr );
     60                virtual void visit( OffsetofExpr *offsetofExpr );
     61                virtual void visit( OffsetPackExpr *offsetPackExpr );
    5862                virtual void visit( AttrExpr *attrExpr );
    5963                virtual void visit( LogicalExpr *logicalExpr );
     
    6165                virtual void visit( CommaExpr *commaExpr );
    6266                virtual void visit( TupleExpr *tupleExpr );
     67                virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr );
    6368          public:  // xxx - temporary hack - should make Tuples::TupleAssignment a friend
    6469                template< typename InputIterator, typename OutputIterator >
     
    6671
    6772          private:
     73                /// Adds alternatives for member expressions, given the aggregate, conversion cost for that aggregate, and name of the member
    6874                template< typename StructOrUnionType > void addAggMembers( StructOrUnionType *aggInst, Expression *expr, const Cost &newCost, const std::string &name );
     75                /// Adds alternatives for offsetof expressions, given the base type and name of the member
     76                template< typename StructOrUnionType > void addOffsetof( StructOrUnionType *aggInst, const std::string &name );
    6977                bool instantiateFunction( std::list< DeclarationWithType* >& formals, /*const*/ AltList &actuals, bool isVarArgs, OpenVarSet& openVars, TypeEnvironment &resultEnv, AssertionSet &resultNeed, AssertionSet &resultHave );
    7078                template< typename OutputIterator >
  • src/ResolvExpr/AlternativePrinter.cc

    r679864e1 r242d458  
    2020#include "SynTree/Type.h"
    2121#include "SynTree/Expression.h"
    22 #include "utility.h"
     22#include "Common/utility.h"
    2323
    2424namespace ResolvExpr {
  • src/ResolvExpr/CastCost.cc

    r679864e1 r242d458  
    1010// Created On       : Sun May 17 06:57:43 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 06:59:10 2015
    13 // Update Count     : 2
     12// Last Modified On : Tue Feb  2 15:34:36 2016
     13// Update Count     : 7
    1414//
    1515
     
    5656                                return Cost::infinity;
    5757                        } else {
     58                                // xxx - why are we adding cost 0 here?
    5859                                return converter.get_cost() + Cost( 0, 0, 0 );
    5960                        } // if
     
    6869                PointerType *destAsPointer = dynamic_cast< PointerType* >( dest );
    6970                if ( destAsPointer && basicType->isInteger() ) {
     71                        // necessary for, e.g. unsigned long => void*
    7072                        cost = Cost( 1, 0, 0 );
    7173                } else {
     
    8284                                newEnv.add( pointerType->get_forall() );
    8385                                newEnv.add( pointerType->get_base()->get_forall() );
    84                                 int assignResult = ptrsCastable( pointerType->get_base(), destAsPtr->get_base(), newEnv, indexer );
    85                                 if ( assignResult > 0 ) {
     86                                int castResult = ptrsCastable( pointerType->get_base(), destAsPtr->get_base(), newEnv, indexer );
     87                                if ( castResult > 0 ) {
    8688                                        cost = Cost( 0, 0, 1 );
    87                                 } else if ( assignResult < 0 ) {
    88                                         cost = Cost( 1, 0, 0 );
     89                                } else if ( castResult < 0 ) {
     90                                        cost = Cost::infinity;
    8991                                } // if
    9092                        } // if
    9193                } else if ( BasicType *destAsBasic = dynamic_cast< BasicType* >( dest ) ) {
    9294                        if ( destAsBasic->isInteger() ) {
     95                                // necessary for, e.g. void* => unsigned long
    9396                                cost = Cost( 1, 0, 0 );
    9497                        } // if
  • src/ResolvExpr/CommonType.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // CommonType.cc -- 
     7// CommonType.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 06:59:27 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 07:04:50 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Mar  2 17:35:34 2016
     13// Update Count     : 3
    1414//
    1515
     
    3535                virtual void visit( UnionInstType *aggregateUseType );
    3636                virtual void visit( EnumInstType *aggregateUseType );
    37                 virtual void visit( ContextInstType *aggregateUseType );
     37                virtual void visit( TraitInstType *aggregateUseType );
    3838                virtual void visit( TypeInstType *aggregateUseType );
    3939                virtual void visit( TupleType *tupleType );
     40                virtual void visit( VarArgsType *varArgsType );
    4041
    4142                template< typename RefType > void handleRefType( RefType *inst, Type *other );
     
    133134                                result = new BasicType( basicType->get_qualifiers() + otherBasic->get_qualifiers(), newType );
    134135                        } // 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
    135142                } // if
    136143        }
     
    182189        }
    183190
    184         void CommonType::visit( EnumInstType *aggregateUseType ) {
    185         }
    186 
    187         void CommonType::visit( ContextInstType *aggregateUseType ) {
     191        void CommonType::visit( EnumInstType *enumInstType ) {
     192                if ( dynamic_cast< BasicType * >( type2 ) ) {
     193                        // reuse BasicType, EnumInstType code by swapping type2 with enumInstType
     194                        Type * temp = type2;
     195                        type2 = enumInstType;
     196                        temp->accept( *this );
     197                        type2 = temp;
     198                } // if
     199        }
     200
     201        void CommonType::visit( TraitInstType *aggregateUseType ) {
    188202        }
    189203
     
    213227        void CommonType::visit( TupleType *tupleType ) {
    214228        }
     229
     230        void CommonType::visit( VarArgsType *varArgsType ) {
     231        }
    215232} // namespace ResolvExpr
    216233
  • src/ResolvExpr/ConversionCost.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // ConversionCost.cc -- 
     7// ConversionCost.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 07:06:19 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 07:22:19 2015
    13 // Update Count     : 4
     12// Last Modified On : Wed Mar  2 17:35:46 2016
     13// Update Count     : 6
    1414//
    1515
     
    157157                                cost = Cost( 0, 0, tableResult );
    158158                        } // if
    159                 } // if
     159                } else if ( dynamic_cast< EnumInstType *>( dest ) ) {
     160                        // xxx - not positive this is correct, but appears to allow casting int => enum
     161                        cost = Cost( 1, 0, 0 );
     162    } // if
    160163        }
    161164
     
    206209        }
    207210
    208         void ConversionCost::visit(ContextInstType *inst) {
     211        void ConversionCost::visit(TraitInstType *inst) {
    209212        }
    210213
     
    247250                } // if
    248251        }
     252
     253        void ConversionCost::visit(VarArgsType *varArgsType) {
     254                if ( dynamic_cast< VarArgsType* >( dest ) ) {
     255                        cost = Cost::zero;
     256                }
     257        }
    249258} // namespace ResolvExpr
    250259
  • src/ResolvExpr/ConversionCost.h

    r679864e1 r242d458  
    1010// Created On       : Sun May 17 09:37:28 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 09:39:23 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Mar  2 17:35:56 2016
     13// Update Count     : 3
    1414//
    1515
     
    3737                virtual void visit(UnionInstType *aggregateUseType);
    3838                virtual void visit(EnumInstType *aggregateUseType);
    39                 virtual void visit(ContextInstType *aggregateUseType);
     39                virtual void visit(TraitInstType *aggregateUseType);
    4040                virtual void visit(TypeInstType *aggregateUseType);
    4141                virtual void visit(TupleType *tupleType);
     42                virtual void visit(VarArgsType *varArgsType);
    4243          protected:
    4344                Type *dest;
  • src/ResolvExpr/PtrsAssignable.cc

    r679864e1 r242d458  
    1010// Created On       : Sun May 17 11:44:11 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 11:47:36 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Mar  2 17:36:05 2016
     13// Update Count     : 8
    1414//
    1515
     
    3535                virtual void visit( UnionInstType *inst );
    3636                virtual void visit( EnumInstType *inst );
    37                 virtual void visit( ContextInstType *inst );
     37                virtual void visit( TraitInstType *inst );
    3838                virtual void visit( TypeInstType *inst );
    3939                virtual void visit( TupleType *tupleType );
     40                virtual void visit( VarArgsType *varArgsType );
    4041          private:
    4142                Type *dest;
     
    100101        }
    101102
    102         void PtrsAssignable::visit( ContextInstType *inst ) {
     103        void PtrsAssignable::visit( TraitInstType *inst ) {
    103104                // I definitely don't think we should be doing anything here
    104105        }
     
    106107        void PtrsAssignable::visit( TypeInstType *inst ) {
    107108                EqvClass eqvClass;
    108                 if ( env.lookup( inst->get_name(), eqvClass ) ) {
     109                if ( env.lookup( inst->get_name(), eqvClass ) && eqvClass.type ) {
    109110                        result = ptrsAssignable( eqvClass.type, dest, env );
    110111                } else {
     
    137138///   }
    138139        }
     140
     141        void PtrsAssignable::visit( VarArgsType *varArgsType ) {
     142        }
    139143} // namespace ResolvExpr
    140144
  • src/ResolvExpr/PtrsCastable.cc

    r679864e1 r242d458  
    1010// Created On       : Sun May 17 11:48:00 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 11:51:17 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Mar  2 17:36:18 2016
     13// Update Count     : 8
    1414//
    1515
     
    3636                virtual void visit(UnionInstType *inst);
    3737                virtual void visit(EnumInstType *inst);
    38                 virtual void visit(ContextInstType *inst);
     38                virtual void visit(TraitInstType *inst);
    3939                virtual void visit(TypeInstType *inst);
    4040                virtual void visit(TupleType *tupleType);
     41                virtual void visit(VarArgsType *varArgsType);
    4142          private:
    4243                Type *dest;
     
    115116
    116117        void PtrsCastable::visit(EnumInstType *inst) {
    117                 if ( dynamic_cast< EnumInstType* >( inst ) ) {
     118                if ( dynamic_cast< EnumInstType* >( dest ) ) {
    118119                        result = 1;
    119                 } else if ( BasicType *bt = dynamic_cast< BasicType* >( inst ) ) {
     120                } else if ( BasicType *bt = dynamic_cast< BasicType* >( dest ) ) {
    120121                        if ( bt->get_kind() == BasicType::SignedInt ) {
    121122                                result = 0;
     
    128129        }
    129130
    130         void PtrsCastable::visit(ContextInstType *inst) {
     131        void PtrsCastable::visit(TraitInstType *inst) {
    131132                // I definitely don't think we should be doing anything here
    132133        }
    133134
    134135        void PtrsCastable::visit(TypeInstType *inst) {
    135                 result = objectCast( inst, env, indexer ) && objectCast( dest, env, indexer ) ? 1 : -1;
     136                result = objectCast( inst, env, indexer ) > 0 && objectCast( dest, env, indexer ) > 0 ? 1 : -1;
    136137        }
    137138
    138139        void PtrsCastable::visit(TupleType *tupleType) {
     140                result = objectCast( dest, env, indexer );
     141        }
     142
     143        void PtrsCastable::visit(VarArgsType *varArgsType) {
    139144                result = objectCast( dest, env, indexer );
    140145        }
  • src/ResolvExpr/RenameVars.cc

    r679864e1 r242d458  
    1010// Created On       : Sun May 17 12:05:18 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  8 14:51:35 2015
    13 // Update Count     : 4
     12// Last Modified On : Wed Mar  2 17:36:32 2016
     13// Update Count     : 5
    1414//
    1515
     
    4545        void RenameVars::visit( PointerType *pointerType ) {
    4646                typeBefore( pointerType );
    47 ///   std::cout << "do pointer" << std::endl;
    4847                maybeAccept( pointerType->get_base(), *this );
    49 ///   std::cout << "done pointer" << std::endl;
    5048                typeAfter( pointerType );
    5149        }
     
    6058        void RenameVars::visit( FunctionType *functionType ) {
    6159                typeBefore( functionType );
    62 ///   std::cout << "return vals" << std::endl;
    6360                acceptAll( functionType->get_returnVals(), *this );
    64 ///   std::cout << functionType->get_parameters().size() << " parameters" << std::endl;
    6561                acceptAll( functionType->get_parameters(), *this );
    66 ///   std::cout << "done function" << std::endl;
    6762                typeAfter( functionType );
    6863        }
     
    8681        }
    8782
    88         void RenameVars::visit( ContextInstType *aggregateUseType ) {
     83        void RenameVars::visit( TraitInstType *aggregateUseType ) {
    8984                typeBefore( aggregateUseType );
    9085                acceptAll( aggregateUseType->get_parameters(), *this );
     
    9590        void RenameVars::visit( TypeInstType *instType ) {
    9691                typeBefore( instType );
    97 ///   std::cout << "instance of type " << instType->get_name() << std::endl;
    9892                std::map< std::string, std::string >::const_iterator i = mapStack.front().find( instType->get_name() );
    9993                if ( i != mapStack.front().end() ) {
    100 ///     std::cout << "found name " << i->second << std::endl;
    10194                        instType->set_name( i->second );
    10295                } else {
    103 ///     std::cout << "no name found" << std::endl;
    10496                } // if
    10597                acceptAll( instType->get_parameters(), *this );
     
    113105        }
    114106
     107        void RenameVars::visit( VarArgsType *varArgsType ) {
     108                typeBefore( varArgsType );
     109                typeAfter( varArgsType );
     110        }
     111
    115112        void RenameVars::typeBefore( Type *type ) {
    116113                if ( ! type->get_forall().empty() ) {
    117 ///     std::cout << "type with forall: ";
    118 ///     type->print( std::cout );
    119 ///     std::cout << std::endl;
    120114                        // copies current name mapping into new mapping
    121115                        mapStack.push_front( mapStack.front() );
  • src/ResolvExpr/RenameVars.h

    r679864e1 r242d458  
    1010// Created On       : Sun May 17 12:10:28 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 12:11:53 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Mar  2 17:36:39 2016
     13// Update Count     : 3
    1414//
    1515
     
    4040                virtual void visit( UnionInstType *aggregateUseType );
    4141                virtual void visit( EnumInstType *aggregateUseType );
    42                 virtual void visit( ContextInstType *aggregateUseType );
     42                virtual void visit( TraitInstType *aggregateUseType );
    4343                virtual void visit( TypeInstType *aggregateUseType );
    4444                virtual void visit( TupleType *tupleType );
     45                virtual void visit( VarArgsType *varArgsType );
    4546
    4647                void typeBefore( Type *type );
  • src/ResolvExpr/Resolver.cc

    r679864e1 r242d458  
    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 : Tue Sep 15 16:24:07 2015
    13 // Update Count     : 181
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jul 12 17:45:42 2016
     13// Update Count     : 204
    1414//
    1515
     
    2424#include "SynTree/Initializer.h"
    2525#include "SymTab/Indexer.h"
    26 #include "utility.h"
     26#include "SymTab/Autogen.h"
     27#include "Common/utility.h"
     28#include "InitTweak/InitTweak.h"
    2729
    2830#include <iostream>
     
    3335          public:
    3436                Resolver() : SymTab::Indexer( false ), switchType( 0 ) {}
    35  
     37
    3638                virtual void visit( FunctionDecl *functionDecl );
    3739                virtual void visit( ObjectDecl *functionDecl );
    3840                virtual void visit( TypeDecl *typeDecl );
     41                virtual void visit( EnumDecl * enumDecl );
    3942
    4043                virtual void visit( ArrayType * at );
     44                virtual void visit( PointerType * at );
    4145
    4246                virtual void visit( ExprStmt *exprStmt );
     
    4751                virtual void visit( ForStmt *forStmt );
    4852                virtual void visit( SwitchStmt *switchStmt );
    49                 virtual void visit( ChooseStmt *switchStmt );
    5053                virtual void visit( CaseStmt *caseStmt );
    5154                virtual void visit( BranchStmt *branchStmt );
     
    5457                virtual void visit( SingleInit *singleInit );
    5558                virtual void visit( ListInit *listInit );
     59                virtual void visit( ConstructorInit *ctorInit );
    5660          private:
    5761        typedef std::list< Initializer * >::iterator InitIterator;
    5862
     63                template< typename PtrType >
     64                void handlePtrType( PtrType * type );
     65
    5966          void resolveAggrInit( AggregateDecl *, InitIterator &, InitIterator & );
    6067          void resolveSingleAggrInit( Declaration *, InitIterator &, InitIterator & );
    61 
     68          void fallbackInit( ConstructorInit * ctorInit );
    6269                std::list< Type * > functionReturn;
    6370                Type *initContext;
    6471                Type *switchType;
     72                bool inEnumDecl = false;
    6573        };
    6674
     
    8290        }
    8391
     92
    8493        namespace {
    8594                void finishExpr( Expression *expr, const TypeEnvironment &env ) {
     
    8796                        env.makeSubstitution( *expr->get_env() );
    8897                }
    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  
     98        } // namespace
     99
     100        Expression *findVoidExpression( Expression *untyped, const SymTab::Indexer &indexer ) {
     101                global_renamer.reset();
     102                TypeEnvironment env;
     103                Expression *newExpr = resolveInVoidContext( untyped, indexer, env );
     104                finishExpr( newExpr, env );
     105                return newExpr;
     106        }
     107
     108        namespace {
    98109                Expression *findSingleExpression( Expression *untyped, const SymTab::Indexer &indexer ) {
    99110                        TypeEnvironment env;
     
    126137                        } // if
    127138                }
    128  
     139
    129140                Expression *findIntegralExpression( Expression *untyped, const SymTab::Indexer &indexer ) {
    130141                        TypeEnvironment env;
     
    159170                        return newExpr;
    160171                }
    161  
    162         }
    163  
     172
     173        }
     174
    164175        void Resolver::visit( ObjectDecl *objectDecl ) {
    165176                Type *new_type = resolveTypeof( objectDecl->get_type(), *this );
    166177                objectDecl->set_type( new_type );
     178                // To handle initialization of routine pointers, e.g., int (*fp)(int) = foo(), means that class-variable
     179                // initContext is changed multiple time because the LHS is analysed twice. The second analysis changes
     180                // initContext because of a function type can contain object declarations in the return and parameter types. So
     181                // each value of initContext is retained, so the type on the first analysis is preserved and used for selecting
     182                // the RHS.
     183                Type *temp = initContext;
    167184                initContext = new_type;
     185                if ( inEnumDecl && dynamic_cast< EnumInstType * >( initContext ) ) {
     186                        // enumerator initializers should not use the enum type to initialize, since
     187                        // the enum type is still incomplete at this point. Use signed int instead.
     188                        initContext = new BasicType( Type::Qualifiers(), BasicType::SignedInt );
     189                }
    168190                SymTab::Indexer::visit( objectDecl );
     191                if ( inEnumDecl && dynamic_cast< EnumInstType * >( initContext ) ) {
     192                        // delete newly created signed int type
     193                        delete initContext;
     194                }
     195                initContext = temp;
     196        }
     197
     198        template< typename PtrType >
     199        void Resolver::handlePtrType( PtrType * type ) {
     200                if ( type->get_dimension() ) {
     201                        CastExpr *castExpr = new CastExpr( type->get_dimension(), SymTab::SizeType->clone() );
     202                        Expression *newExpr = findSingleExpression( castExpr, *this );
     203                        delete type->get_dimension();
     204                        type->set_dimension( newExpr );
     205                }
    169206        }
    170207
    171208        void Resolver::visit( ArrayType * at ) {
    172                 if ( at->get_dimension() ) {
    173                         BasicType arrayLenType = BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
    174                         CastExpr *castExpr = new CastExpr( at->get_dimension(), arrayLenType.clone() );
    175                         Expression *newExpr = findSingleExpression( castExpr, *this );
    176                         delete at->get_dimension();
    177                         at->set_dimension( newExpr );
    178                 }
     209                handlePtrType( at );
    179210                Visitor::visit( at );
     211        }
     212
     213        void Resolver::visit( PointerType * pt ) {
     214                handlePtrType( pt );
     215                Visitor::visit( pt );
    180216        }
    181217
     
    205241        }
    206242
     243        void Resolver::visit( EnumDecl * enumDecl ) {
     244                // in case we decide to allow nested enums
     245                bool oldInEnumDecl = inEnumDecl;
     246                inEnumDecl = true;
     247                SymTab::Indexer::visit( enumDecl );
     248                inEnumDecl = oldInEnumDecl;
     249        }
     250
    207251        void Resolver::visit( ExprStmt *exprStmt ) {
    208252                if ( exprStmt->get_expr() ) {
     
    251295                        forStmt->set_condition( newExpr );
    252296                } // if
    253                
     297
    254298                if ( forStmt->get_increment() ) {
    255299                        Expression * newExpr = findVoidExpression( forStmt->get_increment(), *this );
     
    265309                delete switchStmt->get_condition();
    266310                switchStmt->set_condition( newExpr );
    267  
     311
    268312                visitor.Visitor::visit( switchStmt );
    269313        }
    270314
    271315        void Resolver::visit( SwitchStmt *switchStmt ) {
    272                 handleSwitchStmt( switchStmt, *this );
    273         }
    274 
    275         void Resolver::visit( ChooseStmt *switchStmt ) {
    276316                handleSwitchStmt( switchStmt, *this );
    277317        }
     
    307347        bool isCharType( T t ) {
    308348                if ( BasicType * bt = dynamic_cast< BasicType * >( t ) ) {
    309                         return bt->get_kind() == BasicType::Char || bt->get_kind() == BasicType::SignedChar || 
     349                        return bt->get_kind() == BasicType::Char || bt->get_kind() == BasicType::SignedChar ||
    310350                                bt->get_kind() == BasicType::UnsignedChar;
    311351                }
     
    319359                                string n = ne->get_name();
    320360                                if (n == "0") {
    321                                         initContext = new BasicType(Type::Qualifiers(), 
     361                                        initContext = new BasicType(Type::Qualifiers(),
    322362                                                                                                BasicType::SignedInt);
    323363                                } else {
    324                                         DeclarationWithType * decl = lookupId(n);
     364                                        DeclarationWithType * decl = lookupId( n );
    325365                                        initContext = decl->get_type();
    326366                                }
    327                         } else if (ConstantExpr * e = 
     367                        } else if (ConstantExpr * e =
    328368                                           dynamic_cast<ConstantExpr*>(singleInit->get_value())) {
    329369                                Constant *c = e->get_constant();
     
    344384                                        if ( PointerType * pt = dynamic_cast< PointerType *>( newExpr->get_results().front() ) ) {
    345385                                                if ( isCharType( pt->get_base() ) ) {
    346                                                         // strip cast if we're initializing a char[] with a char *, e.g.
    347                                                         // char x[] = "hello";
     386                                                        // strip cast if we're initializing a char[] with a char *, e.g.  char x[] = "hello";
    348387                                                        CastExpr *ce = dynamic_cast< CastExpr * >( newExpr );
    349388                                                        singleInit->set_value( ce->get_arg() );
    350389                                                        ce->set_arg( NULL );
    351                                                         delete ce;                                                                     
     390                                                        delete ce;
    352391                                                }
    353392                                        }
     
    396435
    397436        void Resolver::visit( ListInit * listInit ) {
    398                 InitIterator iter = listInit->begin_initializers();
    399                 InitIterator end = listInit->end_initializers();
     437                InitIterator iter = listInit->begin();
     438                InitIterator end = listInit->end();
    400439
    401440                if ( ArrayType * at = dynamic_cast< ArrayType * >( initContext ) ) {
     
    410449                        resolveAggrInit( st->get_baseUnion(), iter, end );
    411450                } else if ( TypeInstType * tt = dynamic_cast< TypeInstType * >( initContext ) ) {
    412                         // try again...
    413                         initContext = tt->get_baseType()->get_base();
    414                         visit(listInit);
     451                        Type * base = tt->get_baseType()->get_base();
     452                        if ( base ) {
     453                                // know the implementation type, so try using that as the initContext
     454                                initContext = base;
     455                                visit( listInit );
     456                        } else {
     457                                // missing implementation type -- might be an unknown type variable, so try proceeding with the current init context
     458                                Visitor::visit( listInit );
     459                        }
    415460                } else {
    416                         assert( dynamic_cast< BasicType * >( initContext ) );
     461                        assert( dynamic_cast< BasicType * >( initContext ) || dynamic_cast< PointerType * >( initContext ) );
    417462                        // basic types are handled here
    418463                        Visitor::visit( listInit );
     
    470515#endif
    471516        }
     517
     518        // ConstructorInit - fall back on C-style initializer
     519        void Resolver::fallbackInit( ConstructorInit * ctorInit ) {
     520                // could not find valid constructor, or found an intrinsic constructor
     521                // fall back on C-style initializer
     522                delete ctorInit->get_ctor();
     523                ctorInit->set_ctor( NULL );
     524                delete ctorInit->get_dtor();
     525                ctorInit->set_dtor( NULL );
     526                maybeAccept( ctorInit->get_init(), *this );
     527        }
     528
     529        void Resolver::visit( ConstructorInit *ctorInit ) {
     530                try {
     531                        maybeAccept( ctorInit->get_ctor(), *this );
     532                        maybeAccept( ctorInit->get_dtor(), *this );
     533                } catch ( SemanticError ) {
     534                        // no alternatives for the constructor initializer - fallback on C-style initializer
     535                        // xxx - not sure if this makes a ton of sense - should maybe never be able to have this situation?
     536                        fallbackInit( ctorInit );
     537                        return;
     538                }
     539
     540                // found a constructor - can get rid of C-style initializer
     541                delete ctorInit->get_init();
     542                ctorInit->set_init( NULL );
     543
     544                // intrinsic single parameter constructors and destructors do nothing. Since this was
     545                // implicitly generated, there's no way for it to have side effects, so get rid of it
     546                // to clean up generated code.
     547                if ( InitTweak::isIntrinsicSingleArgCallStmt( ctorInit->get_ctor() ) ) {
     548                        delete ctorInit->get_ctor();
     549                        ctorInit->set_ctor( NULL );
     550                }
     551
     552                // xxx - todo
     553                // if ( InitTweak::isIntrinsicCallStmt( ctorInit->get_ctor() ) ) {
     554                //      // can reduce the constructor down to a SingleInit using the
     555                //      // second argument from the ctor call
     556                // }
     557
     558                if ( InitTweak::isIntrinsicSingleArgCallStmt( ctorInit->get_dtor() ) ) {
     559                        delete ctorInit->get_dtor();
     560                        ctorInit->set_dtor( NULL );
     561                }
     562        }
    472563} // namespace ResolvExpr
    473564
  • src/ResolvExpr/Resolver.h

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

    r679864e1 r242d458  
    2020#include "SynTree/Type.h"
    2121#include "SynTree/TypeSubstitution.h"
    22 #include "utility.h"
     22#include "Common/utility.h"
    2323
    2424namespace ResolvExpr {
  • src/ResolvExpr/Unify.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Unify.cc -- 
     7// Unify.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:27:10 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 26 14:57:05 2015
    13 // Update Count     : 7
     12// Last Modified On : Wed Mar  2 17:37:05 2016
     13// Update Count     : 37
    1414//
    1515
     
    2525#include "SynTree/Declaration.h"
    2626#include "SymTab/Indexer.h"
    27 #include "utility.h"
    28 
    29 
    30 //#define DEBUG
     27#include "Common/utility.h"
     28
     29
     30// #define DEBUG
    3131
    3232namespace ResolvExpr {
     
    3838                WidenMode operator&( const WidenMode &other ) { WidenMode newWM( *this ); newWM &= other; return newWM; }
    3939                operator bool() { return widenFirst && widenSecond; }
    40  
     40
    4141                bool widenFirst : 1, widenSecond : 1;
    4242        };
     
    4545          public:
    4646                Unify( Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer );
    47  
     47
    4848                bool get_result() const { return result; }
    4949          private:
     
    5656                virtual void visit(UnionInstType *aggregateUseType);
    5757                virtual void visit(EnumInstType *aggregateUseType);
    58                 virtual void visit(ContextInstType *aggregateUseType);
     58                virtual void visit(TraitInstType *aggregateUseType);
    5959                virtual void visit(TypeInstType *aggregateUseType);
    6060                virtual void visit(TupleType *tupleType);
     61                virtual void visit(VarArgsType *varArgsType);
    6162
    6263                template< typename RefType > void handleRefType( RefType *inst, Type *other );
     64                template< typename RefType > void handleGenericRefType( RefType *inst, Type *other );
    6365
    6466                bool result;
     
    7779        bool unifyInexact( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer, Type *&common );
    7880        bool unifyExact( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer );
    79  
     81
    8082        bool typesCompatible( Type *first, Type *second, const SymTab::Indexer &indexer, const TypeEnvironment &env ) {
    8183                TypeEnvironment newEnv;
    82                 OpenVarSet openVars;
     84                OpenVarSet openVars, closedVars; // added closedVars
    8385                AssertionSet needAssertions, haveAssertions;
    8486                Type *newFirst = first->clone(), *newSecond = second->clone();
    8587                env.apply( newFirst );
    8688                env.apply( newSecond );
     89
     90                // do we need to do this? Seems like we do, types should be able to be compatible if they
     91                // have free variables that can unify
     92                findOpenVars( newFirst, openVars, closedVars, needAssertions, haveAssertions, false );
     93                findOpenVars( newSecond, openVars, closedVars, needAssertions, haveAssertions, true );
     94
    8795                bool result = unifyExact( newFirst, newSecond, newEnv, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer );
    8896                delete newFirst;
     
    129137                  case TypeDecl::Dtype:
    130138                        return ! isFtype( type, indexer );
    131  
     139
    132140                  case TypeDecl::Ftype:
    133141                        return isFtype( type, indexer );
     
    188196                bool widen1 = false, widen2 = false;
    189197                Type *type1 = 0, *type2 = 0;
    190  
     198
    191199                if ( env.lookup( var1->get_name(), class1 ) ) {
    192200                        hasClass1 = true;
     
    209217                        widen2 = widenMode.widenSecond && class2.allowWidening;
    210218                } // if
    211  
     219
    212220                if ( type1 && type2 ) {
    213221//    std::cout << "has type1 && type2" << std::endl;
     
    425433
    426434        void Unify::visit(ArrayType *arrayType) {
    427                 // XXX -- compare array dimension
    428435                ArrayType *otherArray = dynamic_cast< ArrayType* >( type2 );
     436                // to unify, array types must both be VLA or both not VLA
     437                // and must both have a dimension expression or not have a dimension
    429438                if ( otherArray && arrayType->get_isVarLen() == otherArray->get_isVarLen() ) {
     439
     440                        // not positive this is correct in all cases, but it's needed for typedefs
     441                        if ( arrayType->get_isVarLen() || otherArray->get_isVarLen() ) {
     442                                return;
     443                        }
     444
     445                        if ( ! arrayType->get_isVarLen() && ! otherArray->get_isVarLen() &&
     446                                arrayType->get_dimension() != 0 && otherArray->get_dimension() != 0 ) {
     447                                ConstantExpr * ce1 = dynamic_cast< ConstantExpr * >( arrayType->get_dimension() );
     448                                ConstantExpr * ce2 = dynamic_cast< ConstantExpr * >( otherArray->get_dimension() );
     449                                // see C11 Reference Manual 6.7.6.2.6
     450                                // two array types with size specifiers that are integer constant expressions are
     451                                // compatible if both size specifiers have the same constant value
     452                                if ( ce1 && ce2 ) {
     453                                        Constant * c1 = ce1->get_constant();
     454                                        Constant * c2 = ce2->get_constant();
     455
     456                                        if ( c1->get_value() != c2->get_value() ) {
     457                                                // does not unify if the dimension is different
     458                                                return;
     459                                        }
     460                                }
     461                        }
     462
    430463                        result = unifyExact( arrayType->get_base(), otherArray->get_base(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer );
    431464                } // if
     
    435468        bool unifyDeclList( Iterator1 list1Begin, Iterator1 list1End, Iterator2 list2Begin, Iterator2 list2End, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, const SymTab::Indexer &indexer ) {
    436469                for ( ; list1Begin != list1End && list2Begin != list2End; ++list1Begin, ++list2Begin ) {
     470                        // Type * commonType;
     471                        // if ( ! unifyInexact( (*list1Begin)->get_type(), (*list2Begin)->get_type(), env, needAssertions, haveAssertions, openVars, WidenMode( true, true ), indexer, commonType ) ) {
    437472                        if ( ! unifyExact( (*list1Begin)->get_type(), (*list2Begin)->get_type(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ) ) {
    438473                                return false;
     
    449484                FunctionType *otherFunction = dynamic_cast< FunctionType* >( type2 );
    450485                if ( otherFunction && functionType->get_isVarArgs() == otherFunction->get_isVarArgs() ) {
    451  
     486
    452487                        if ( unifyDeclList( functionType->get_parameters().begin(), functionType->get_parameters().end(), otherFunction->get_parameters().begin(), otherFunction->get_parameters().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) {
    453        
     488
    454489                                if ( unifyDeclList( functionType->get_returnVals().begin(), functionType->get_returnVals().end(), otherFunction->get_returnVals().begin(), otherFunction->get_returnVals().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) {
    455490
     
    464499
    465500        template< typename RefType >
    466         void Unify::handleRefType( RefType *inst, Type *other ) { 
     501        void Unify::handleRefType( RefType *inst, Type *other ) {
     502                // check that other type is compatible and named the same
    467503                RefType *otherStruct = dynamic_cast< RefType* >( other );
    468504                result = otherStruct && inst->get_name() == otherStruct->get_name();
    469         } 
     505        }
     506
     507        template< typename RefType >
     508        void Unify::handleGenericRefType( RefType *inst, Type *other ) {
     509                // Check that other type is compatible and named the same
     510                handleRefType( inst, other );
     511                if ( ! result ) return;
     512                // Check that parameters of types unify, if any
     513                std::list< Expression* > params = inst->get_parameters();
     514                std::list< Expression* > otherParams = ((RefType*)other)->get_parameters();
     515
     516                std::list< Expression* >::const_iterator it = params.begin(), jt = otherParams.begin();
     517                for ( ; it != params.end() && jt != otherParams.end(); ++it, ++jt ) {
     518                        TypeExpr *param = dynamic_cast< TypeExpr* >(*it);
     519                        assert(param && "Aggregate parameters should be type expressions");
     520                        TypeExpr *otherParam = dynamic_cast< TypeExpr* >(*jt);
     521                        assert(otherParam && "Aggregate parameters should be type expressions");
     522
     523                        if ( ! unifyExact( param->get_type(), otherParam->get_type(), env, needAssertions, haveAssertions, openVars, WidenMode(false, false), indexer ) ) {
     524                                result = false;
     525                                return;
     526                        }
     527                }
     528                result = ( it == params.end() && jt == otherParams.end() );
     529        }
    470530
    471531        void Unify::visit(StructInstType *structInst) {
    472                 handleRefType( structInst, type2 );
     532                handleGenericRefType( structInst, type2 );
    473533        }
    474534
    475535        void Unify::visit(UnionInstType *unionInst) {
    476                 handleRefType( unionInst, type2 );
     536                handleGenericRefType( unionInst, type2 );
    477537        }
    478538
     
    481541        }
    482542
    483         void Unify::visit(ContextInstType *contextInst) {
     543        void Unify::visit(TraitInstType *contextInst) {
    484544                handleRefType( contextInst, type2 );
    485545        }
     
    524584        }
    525585
     586        void Unify::visit(VarArgsType *varArgsType) {
     587                result = dynamic_cast< VarArgsType* >( type2 );
     588        }
     589
    526590} // namespace ResolvExpr
    527591
  • src/ResolvExpr/Unify.h

    r679864e1 r242d458  
    2424#include "SymTab/Indexer.h"
    2525#include "TypeEnvironment.h"
    26 #include "utility.h"
     26#include "Common/utility.h"
    2727
    2828namespace ResolvExpr {
  • src/ResolvExpr/typeops.h

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

    r679864e1 r242d458  
    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 : Tue Jul 14 12:26:17 2015
    13 // Update Count     : 4
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Aug  4 11:22:01 2016
     13// Update Count     : 9
    1414//
    1515
     
    2727
    2828        template< typename Visitor >
    29         inline void addVisitStatement( Statement *stmt, Visitor &visitor ) {
    30                 maybeAccept( stmt, visitor );
    31 ///   if ( ! declsToAdd.empty() ) {
    32 ///     CompoundStmt *compound = new CompoundStmt( noLabels );
    33 ///     compound->get_kids().push_back( stmt );
    34 ///     addDecls( declsToAdd, compound->get_kids(), compound->get_kids().end() );
    35 ///   }
    36         }
    37 
    38         template< typename Visitor >
    3929        inline void addVisit(CompoundStmt *compoundStmt, Visitor &visitor) {
    4030                addVisitStatementList( compoundStmt->get_kids(), visitor );
     
    4232
    4333        template< typename Visitor >
    44         inline void addVisit(IfStmt *ifStmt, Visitor &visitor) {
    45                 addVisitStatement( ifStmt->get_thenPart(), visitor );
    46                 addVisitStatement( ifStmt->get_elsePart(), visitor );
    47                 maybeAccept( ifStmt->get_condition(), visitor );
    48         }
    49 
    50         template< typename Visitor >
    51         inline void addVisit(WhileStmt *whileStmt, Visitor &visitor) {
    52                 addVisitStatement( whileStmt->get_body(), visitor );
    53                 maybeAccept( whileStmt->get_condition(), visitor );
    54         }
    55 
    56         template< typename Visitor >
    57         inline void addVisit(ForStmt *forStmt, Visitor &visitor) {
    58                 addVisitStatement( forStmt->get_body(), visitor );
    59                 acceptAll( forStmt->get_initialization(), visitor );
    60                 maybeAccept( forStmt->get_condition(), visitor );
    61                 maybeAccept( forStmt->get_increment(), visitor );
    62         }
    63 
    64         template< typename Visitor >
    6534        inline void addVisit(SwitchStmt *switchStmt, Visitor &visitor) {
    66                 addVisitStatementList( switchStmt->get_branches(), visitor );
     35                addVisitStatementList( switchStmt->get_statements(), visitor );
    6736                maybeAccept( switchStmt->get_condition(), visitor );
    6837        }
    6938
    7039        template< typename Visitor >
    71         inline void addVisit(ChooseStmt *switchStmt, Visitor &visitor) {
    72                 addVisitStatementList( switchStmt->get_branches(), visitor );
    73                 maybeAccept( switchStmt->get_condition(), visitor );
     40        void acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor, bool addBefore ) {
     41                std::list< Declaration * >::iterator i = translationUnit.begin();
     42                while ( i != translationUnit.end() ) {
     43                        (*i)->accept( visitor );
     44                        std::list< Declaration * >::iterator next = i;
     45                        next++;
     46                        if ( ! visitor.get_declsToAdd().empty() ) {
     47                                translationUnit.splice( addBefore ? i : next, visitor.get_declsToAdd() );
     48                        } // if
     49                        i = next;
     50                } // while
    7451        }
    7552
    76         template< typename Visitor >
    77         inline void addVisit(CaseStmt *caseStmt, Visitor &visitor) {
    78                 addVisitStatementList( caseStmt->get_statements(), visitor );
    79                 maybeAccept( caseStmt->get_condition(), visitor );
    80         }
    81 
    82         template< typename Visitor >
    83         inline void addVisit(CatchStmt *cathStmt, Visitor &visitor) {
    84                 addVisitStatement( cathStmt->get_body(), visitor );
    85                 maybeAccept( cathStmt->get_decl(), visitor );
    86         }
    8753} // namespace SymTab
    8854
  • src/SymTab/FixFunction.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // FixFunction.cc -- 
     7// FixFunction.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 16:19:49 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 16:22:54 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Mar  2 17:31:10 2016
     13// Update Count     : 3
    1414//
    1515
     
    1818#include "SynTree/Type.h"
    1919#include "SynTree/Expression.h"
    20 #include "utility.h"
     20#include "Common/utility.h"
    2121
    2222namespace SymTab {
     
    4444
    4545        Type * FixFunction::mutate(ArrayType *arrayType) {
    46                 PointerType *pointerType = new PointerType( arrayType->get_qualifiers(), maybeClone( arrayType->get_base()->clone() ), maybeClone( arrayType->get_dimension() ), arrayType->get_isVarLen(), arrayType->get_isStatic() );
     46                // need to recursively mutate the base type in order for multi-dimensional arrays to work.
     47                PointerType *pointerType = new PointerType( arrayType->get_qualifiers(), arrayType->get_base()->clone()->acceptMutator( *this ), maybeClone( arrayType->get_dimension() ), arrayType->get_isVarLen(), arrayType->get_isStatic() );
    4748                delete arrayType;
    4849                return pointerType;
     
    6162        }
    6263
    63         Type * FixFunction::mutate(ContextInstType *aggregateUseType) {
     64        Type * FixFunction::mutate(TraitInstType *aggregateUseType) {
    6465                return aggregateUseType;
    6566        }
     
    7273                return tupleType;
    7374        }
     75
     76        Type * FixFunction::mutate(VarArgsType *varArgsType) {
     77                return varArgsType;
     78        }
    7479} // namespace SymTab
    7580
  • src/SymTab/FixFunction.h

    r679864e1 r242d458  
    1010// Created On       : Sun May 17 17:02:08 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 17:03:43 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Mar  2 17:34:06 2016
     13// Update Count     : 3
    1414//
    1515
     
    3838                virtual Type* mutate(UnionInstType *aggregateUseType);
    3939                virtual Type* mutate(EnumInstType *aggregateUseType);
    40                 virtual Type* mutate(ContextInstType *aggregateUseType);
     40                virtual Type* mutate(TraitInstType *aggregateUseType);
    4141                virtual Type* mutate(TypeInstType *aggregateUseType);
    4242                virtual Type* mutate(TupleType *tupleType);
     43                virtual Type* mutate(VarArgsType *varArgsType);
    4344 
    4445                bool isVoid;
  • src/SymTab/ImplementationType.cc

    r679864e1 r242d458  
    1010// Created On       : Sun May 17 21:32:01 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun May 17 21:34:40 2015
    13 // Update Count     : 2
     12// Last Modified On : Wed Mar  2 17:31:20 2016
     13// Update Count     : 3
    1414//
    1515
     
    1919#include "SynTree/Visitor.h"
    2020#include "SymTab/Indexer.h"
    21 #include "utility.h"
     21#include "Common/utility.h"
    2222
    2323
     
    3737                virtual void visit(UnionInstType *aggregateUseType);
    3838                virtual void visit(EnumInstType *aggregateUseType);
    39                 virtual void visit(ContextInstType *aggregateUseType);
     39                virtual void visit(TraitInstType *aggregateUseType);
    4040                virtual void visit(TypeInstType *aggregateUseType);
    4141                virtual void visit(TupleType *tupleType);
     42                virtual void visit(VarArgsType *varArgsType);
    4243
    4344                Type *result;                   // synthesized
     
    9596        }
    9697
    97         void ImplementationType::visit(ContextInstType *aggregateUseType) {
     98        void ImplementationType::visit(TraitInstType *aggregateUseType) {
    9899        }
    99100
     
    116117                result = newType;
    117118        }
     119
     120        void ImplementationType::visit(VarArgsType *varArgsType) {
     121        }
    118122} // namespace SymTab
    119123
  • src/SymTab/Indexer.cc

    r679864e1 r242d458  
    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 : Wed Aug 05 13:52:42 2015
    13 // Update Count     : 10
    14 //
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jul 12 17:47:47 2016
     13// Update Count     : 12
     14//
     15
     16#include "Indexer.h"
     17
     18#include <string>
     19#include <typeinfo>
     20#include <unordered_map>
     21#include <unordered_set>
     22#include <utility>
     23
     24#include "Mangler.h"
     25
     26#include "Common/utility.h"
     27
     28#include "ResolvExpr/typeops.h"
    1529
    1630#include "SynTree/Declaration.h"
     
    1933#include "SynTree/Initializer.h"
    2034#include "SynTree/Statement.h"
    21 #include "Indexer.h"
    22 #include <typeinfo>
    23 #include "utility.h"
    2435
    2536#define debugPrint(x) if ( doDebug ) { std::cout << x; }
     
    3344        }
    3445
    35         Indexer::Indexer( bool useDebug ) : doDebug( useDebug ) {}
    36 
    37         Indexer::~Indexer() {}
     46        typedef std::unordered_map< std::string, DeclarationWithType* > MangleTable;
     47        typedef std::unordered_map< std::string, MangleTable > IdTable;
     48        typedef std::unordered_map< std::string, NamedTypeDecl* > TypeTable;
     49        typedef std::unordered_map< std::string, StructDecl* > StructTable;
     50        typedef std::unordered_map< std::string, EnumDecl* > EnumTable;
     51        typedef std::unordered_map< std::string, UnionDecl* > UnionTable;
     52        typedef std::unordered_map< std::string, TraitDecl* > TraitTable;
     53
     54        void dump( const IdTable &table, std::ostream &os ) {
     55                for ( IdTable::const_iterator id = table.begin(); id != table.end(); ++id ) {
     56                        for ( MangleTable::const_iterator mangle = id->second.begin(); mangle != id->second.end(); ++mangle ) {
     57                                os << mangle->second << std::endl;
     58                        }
     59                }
     60        }
     61
     62        template< typename Decl >
     63        void dump( const std::unordered_map< std::string, Decl* > &table, std::ostream &os ) {
     64                for ( typename std::unordered_map< std::string, Decl* >::const_iterator it = table.begin(); it != table.end(); ++it ) {
     65                        os << it->second << std::endl;
     66                } // for
     67        }
     68
     69        struct Indexer::Impl {
     70                Impl( unsigned long _scope ) : refCount(1), scope( _scope ), size( 0 ), base(),
     71                                idTable(), typeTable(), structTable(), enumTable(), unionTable(), traitTable() {}
     72                Impl( unsigned long _scope, Indexer &&_base ) : refCount(1), scope( _scope ), size( 0 ), base( _base ),
     73                                idTable(), typeTable(), structTable(), enumTable(), unionTable(), traitTable() {}
     74                unsigned long refCount;   ///< Number of references to these tables
     75                unsigned long scope;      ///< Scope these tables are associated with
     76                unsigned long size;       ///< Number of elements stored in this table
     77                const Indexer base;       ///< Base indexer this extends
     78
     79                IdTable idTable;          ///< Identifier namespace
     80                TypeTable typeTable;      ///< Type namespace
     81                StructTable structTable;  ///< Struct namespace
     82                EnumTable enumTable;      ///< Enum namespace
     83                UnionTable unionTable;    ///< Union namespace
     84                TraitTable traitTable;    ///< Trait namespace
     85        };
     86
     87        Indexer::Impl *Indexer::newRef( Indexer::Impl *toClone ) {
     88                if ( ! toClone ) return 0;
     89
     90                // shorten the search chain by skipping empty links
     91                Indexer::Impl *ret = toClone->size == 0 ? toClone->base.tables : toClone;
     92                if ( ret ) { ++ret->refCount; }
     93
     94                return ret;
     95        }
     96
     97        void Indexer::deleteRef( Indexer::Impl *toFree ) {
     98                if ( ! toFree ) return;
     99
     100                if ( --toFree->refCount == 0 ) delete toFree;
     101        }
     102
     103        void Indexer::makeWritable() {
     104                if ( ! tables ) {
     105                        // create indexer if not yet set
     106                        tables = new Indexer::Impl( scope );
     107                } else if ( tables->refCount > 1 || tables->scope != scope ) {
     108                        // make this indexer the base of a fresh indexer at the current scope
     109                        tables = new Indexer::Impl( scope, std::move( *this ) );
     110                }
     111        }
     112
     113        Indexer::Indexer( bool _doDebug ) : tables( 0 ), scope( 0 ), doDebug( _doDebug ) {}
     114
     115        Indexer::Indexer( const Indexer &that ) : tables( newRef( that.tables ) ), scope( that.scope ), doDebug( that.doDebug ) {}
     116
     117        Indexer::Indexer( Indexer &&that ) : tables( that.tables ), scope( that.scope ), doDebug( that.doDebug ) {
     118                that.tables = 0;
     119        }
     120
     121        Indexer::~Indexer() {
     122                deleteRef( tables );
     123        }
     124
     125        Indexer& Indexer::operator= ( const Indexer &that ) {
     126                deleteRef( tables );
     127
     128                tables = newRef( that.tables );
     129                scope = that.scope;
     130                doDebug = that.doDebug;
     131
     132                return *this;
     133        }
     134
     135        Indexer& Indexer::operator= ( Indexer &&that ) {
     136                deleteRef( tables );
     137
     138                tables = that.tables;
     139                scope = that.scope;
     140                doDebug = that.doDebug;
     141
     142                that.tables = 0;
     143
     144                return *this;
     145        }
    38146
    39147        void Indexer::visit( ObjectDecl *objectDecl ) {
     
    45153                if ( objectDecl->get_name() != "" ) {
    46154                        debugPrint( "Adding object " << objectDecl->get_name() << std::endl );
    47                         idTable.addDecl( objectDecl );
     155                        addId( objectDecl );
    48156                } // if
    49157        }
     
    52160                if ( functionDecl->get_name() == "" ) return;
    53161                debugPrint( "Adding function " << functionDecl->get_name() << std::endl );
    54                 idTable.addDecl( functionDecl );
     162                addId( functionDecl );
    55163                enterScope();
    56164                maybeAccept( functionDecl->get_functionType(), *this );
     
    90198                leaveScope();
    91199                debugPrint( "Adding type " << typeDecl->get_name() << std::endl );
    92                 typeTable.add( typeDecl );
     200                addType( typeDecl );
    93201                acceptAll( typeDecl->get_assertions(), *this );
    94202        }
     
    100208                leaveScope();
    101209                debugPrint( "Adding typedef " << typeDecl->get_name() << std::endl );
    102                 typeTable.add( typeDecl );
     210                addType( typeDecl );
    103211        }
    104212
    105213        void Indexer::visit( StructDecl *aggregateDecl ) {
    106214                // make up a forward declaration and add it before processing the members
    107                 StructDecl fwdDecl( aggregateDecl->get_name() );
     215                // needs to be on the heap because addStruct saves the pointer
     216                StructDecl &fwdDecl = *new StructDecl( aggregateDecl->get_name() );
    108217                cloneAll( aggregateDecl->get_parameters(), fwdDecl.get_parameters() );
    109218                debugPrint( "Adding fwd decl for struct " << fwdDecl.get_name() << std::endl );
    110                 structTable.add( &fwdDecl );
    111  
     219                addStruct( &fwdDecl );
     220
    112221                enterScope();
    113222                acceptAll( aggregateDecl->get_parameters(), *this );
    114223                acceptAll( aggregateDecl->get_members(), *this );
    115224                leaveScope();
    116  
     225
    117226                debugPrint( "Adding struct " << aggregateDecl->get_name() << std::endl );
    118227                // this addition replaces the forward declaration
    119                 structTable.add( aggregateDecl );
     228                addStruct( aggregateDecl );
    120229        }
    121230
     
    125234                cloneAll( aggregateDecl->get_parameters(), fwdDecl.get_parameters() );
    126235                debugPrint( "Adding fwd decl for union " << fwdDecl.get_name() << std::endl );
    127                 unionTable.add( &fwdDecl );
    128  
     236                addUnion( &fwdDecl );
     237
    129238                enterScope();
    130239                acceptAll( aggregateDecl->get_parameters(), *this );
    131240                acceptAll( aggregateDecl->get_members(), *this );
    132241                leaveScope();
    133  
     242
    134243                debugPrint( "Adding union " << aggregateDecl->get_name() << std::endl );
    135                 unionTable.add( aggregateDecl );
     244                addUnion( aggregateDecl );
    136245        }
    137246
    138247        void Indexer::visit( EnumDecl *aggregateDecl ) {
    139248                debugPrint( "Adding enum " << aggregateDecl->get_name() << std::endl );
    140                 enumTable.add( aggregateDecl );
     249                addEnum( aggregateDecl );
    141250                // unlike structs, contexts, and unions, enums inject their members into the global scope
    142251                acceptAll( aggregateDecl->get_members(), *this );
    143252        }
    144253
    145         void Indexer::visit( ContextDecl *aggregateDecl ) {
     254        void Indexer::visit( TraitDecl *aggregateDecl ) {
    146255                enterScope();
    147256                acceptAll( aggregateDecl->get_parameters(), *this );
    148257                acceptAll( aggregateDecl->get_members(), *this );
    149258                leaveScope();
    150  
     259
    151260                debugPrint( "Adding context " << aggregateDecl->get_name() << std::endl );
    152                 contextTable.add( aggregateDecl );
     261                addTrait( aggregateDecl );
    153262        }
    154263
     
    216325                        maybeAccept( sizeofExpr->get_expr(), *this );
    217326                }
     327        }
     328
     329        void Indexer::visit( AlignofExpr *alignofExpr ) {
     330                acceptAllNewScope( alignofExpr->get_results(), *this );
     331                if ( alignofExpr->get_isType() ) {
     332                        maybeAccept( alignofExpr->get_type(), *this );
     333                } else {
     334                        maybeAccept( alignofExpr->get_expr(), *this );
     335                }
     336        }
     337
     338        void Indexer::visit( UntypedOffsetofExpr *offsetofExpr ) {
     339                acceptAllNewScope( offsetofExpr->get_results(), *this );
     340                maybeAccept( offsetofExpr->get_type(), *this );
     341        }
     342
     343        void Indexer::visit( OffsetofExpr *offsetofExpr ) {
     344                acceptAllNewScope( offsetofExpr->get_results(), *this );
     345                maybeAccept( offsetofExpr->get_type(), *this );
     346                maybeAccept( offsetofExpr->get_member(), *this );
     347        }
     348
     349        void Indexer::visit( OffsetPackExpr *offsetPackExpr ) {
     350                acceptAllNewScope( offsetPackExpr->get_results(), *this );
     351                maybeAccept( offsetPackExpr->get_type(), *this );
    218352        }
    219353
     
    273407
    274408
    275         void Indexer::visit( ContextInstType *contextInst ) {
     409        void Indexer::visit( TraitInstType *contextInst ) {
    276410                acceptAll( contextInst->get_parameters(), *this );
    277411                acceptAll( contextInst->get_members(), *this );
     
    279413
    280414        void Indexer::visit( StructInstType *structInst ) {
    281                 if ( ! structTable.lookup( structInst->get_name() ) ) {
     415                if ( ! lookupStruct( structInst->get_name() ) ) {
    282416                        debugPrint( "Adding struct " << structInst->get_name() << " from implicit forward declaration" << std::endl );
    283                         structTable.add( structInst->get_name() );
     417                        addStruct( structInst->get_name() );
    284418                }
    285419                enterScope();
     
    289423
    290424        void Indexer::visit( UnionInstType *unionInst ) {
    291                 if ( ! unionTable.lookup( unionInst->get_name() ) ) {
     425                if ( ! lookupUnion( unionInst->get_name() ) ) {
    292426                        debugPrint( "Adding union " << unionInst->get_name() << " from implicit forward declaration" << std::endl );
    293                         unionTable.add( unionInst->get_name() );
     427                        addUnion( unionInst->get_name() );
    294428                }
    295429                enterScope();
     
    306440
    307441
    308         void Indexer::lookupId( const std::string &id, std::list< DeclarationWithType* > &list ) const {
    309                 idTable.lookupId( id, list );
    310         }
    311 
    312         DeclarationWithType* Indexer::lookupId( const std::string &id) const {
    313                 return idTable.lookupId(id);
     442
     443        void Indexer::lookupId( const std::string &id, std::list< DeclarationWithType* > &out ) const {
     444                std::unordered_set< std::string > foundMangleNames;
     445
     446                Indexer::Impl *searchTables = tables;
     447                while ( searchTables ) {
     448
     449                        IdTable::const_iterator decls = searchTables->idTable.find( id );
     450                        if ( decls != searchTables->idTable.end() ) {
     451                                const MangleTable &mangleTable = decls->second;
     452                                for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) {
     453                                        // mark the mangled name as found, skipping this insertion if a declaration for that name has already been found
     454                                        if ( foundMangleNames.insert( decl->first ).second == false ) continue;
     455
     456                                        out.push_back( decl->second );
     457                                }
     458                        }
     459
     460                        // get declarations from base indexers
     461                        searchTables = searchTables->base.tables;
     462                }
    314463        }
    315464
    316465        NamedTypeDecl *Indexer::lookupType( const std::string &id ) const {
    317                 return typeTable.lookup( id );
     466                if ( ! tables ) return 0;
     467
     468                TypeTable::const_iterator ret = tables->typeTable.find( id );
     469                return ret != tables->typeTable.end() ? ret->second : tables->base.lookupType( id );
    318470        }
    319471
    320472        StructDecl *Indexer::lookupStruct( const std::string &id ) const {
    321                 return structTable.lookup( id );
     473                if ( ! tables ) return 0;
     474
     475                StructTable::const_iterator ret = tables->structTable.find( id );
     476                return ret != tables->structTable.end() ? ret->second : tables->base.lookupStruct( id );
    322477        }
    323478
    324479        EnumDecl *Indexer::lookupEnum( const std::string &id ) const {
    325                 return enumTable.lookup( id );
     480                if ( ! tables ) return 0;
     481
     482                EnumTable::const_iterator ret = tables->enumTable.find( id );
     483                return ret != tables->enumTable.end() ? ret->second : tables->base.lookupEnum( id );
    326484        }
    327485
    328486        UnionDecl *Indexer::lookupUnion( const std::string &id ) const {
    329                 return unionTable.lookup( id );
    330         }
    331 
    332         ContextDecl  * Indexer::lookupContext( const std::string &id ) const {
    333                 return contextTable.lookup( id );
     487                if ( ! tables ) return 0;
     488
     489                UnionTable::const_iterator ret = tables->unionTable.find( id );
     490                return ret != tables->unionTable.end() ? ret->second : tables->base.lookupUnion( id );
     491        }
     492
     493        TraitDecl *Indexer::lookupTrait( const std::string &id ) const {
     494                if ( ! tables ) return 0;
     495
     496                TraitTable::const_iterator ret = tables->traitTable.find( id );
     497                return ret != tables->traitTable.end() ? ret->second : tables->base.lookupTrait( id );
     498        }
     499
     500        DeclarationWithType *Indexer::lookupIdAtScope( const std::string &id, const std::string &mangleName, unsigned long scope ) const {
     501                if ( ! tables ) return 0;
     502                if ( tables->scope < scope ) return 0;
     503
     504                IdTable::const_iterator decls = tables->idTable.find( id );
     505                if ( decls != tables->idTable.end() ) {
     506                        const MangleTable &mangleTable = decls->second;
     507                        MangleTable::const_iterator decl = mangleTable.find( mangleName );
     508                        if ( decl != mangleTable.end() ) return decl->second;
     509                }
     510
     511                return tables->base.lookupIdAtScope( id, mangleName, scope );
     512        }
     513
     514        bool Indexer::hasIncompatibleCDecl( const std::string &id, const std::string &mangleName, unsigned long scope ) const {
     515                if ( ! tables ) return false;
     516                if ( tables->scope < scope ) return false;
     517
     518                IdTable::const_iterator decls = tables->idTable.find( id );
     519                if ( decls != tables->idTable.end() ) {
     520                        const MangleTable &mangleTable = decls->second;
     521                        for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) {
     522                                // check for C decls with the same name, skipping those with a compatible type (by mangleName)
     523                                if ( decl->second->get_linkage() == LinkageSpec::C && decl->first != mangleName ) return true;
     524                        }
     525                }
     526
     527                return tables->base.hasIncompatibleCDecl( id, mangleName, scope );
     528        }
     529
     530        bool Indexer::hasCompatibleCDecl( const std::string &id, const std::string &mangleName, unsigned long scope ) const {
     531                if ( ! tables ) return false;
     532                if ( tables->scope < scope ) return false;
     533
     534                IdTable::const_iterator decls = tables->idTable.find( id );
     535                if ( decls != tables->idTable.end() ) {
     536                        const MangleTable &mangleTable = decls->second;
     537                        for ( MangleTable::const_iterator decl = mangleTable.begin(); decl != mangleTable.end(); ++decl ) {
     538                                // check for C decls with the same name, skipping
     539                                // those with an incompatible type (by mangleName)
     540                                if ( decl->second->get_linkage() == LinkageSpec::C && decl->first == mangleName ) return true;
     541                        }
     542                }
     543
     544                return tables->base.hasCompatibleCDecl( id, mangleName, scope );
     545        }
     546
     547        NamedTypeDecl *Indexer::lookupTypeAtScope( const std::string &id, unsigned long scope ) const {
     548                if ( ! tables ) return 0;
     549                if ( tables->scope < scope ) return 0;
     550
     551                TypeTable::const_iterator ret = tables->typeTable.find( id );
     552                return ret != tables->typeTable.end() ? ret->second : tables->base.lookupTypeAtScope( id, scope );
     553        }
     554
     555        StructDecl *Indexer::lookupStructAtScope( const std::string &id, unsigned long scope ) const {
     556                if ( ! tables ) return 0;
     557                if ( tables->scope < scope ) return 0;
     558
     559                StructTable::const_iterator ret = tables->structTable.find( id );
     560                return ret != tables->structTable.end() ? ret->second : tables->base.lookupStructAtScope( id, scope );
     561        }
     562
     563        EnumDecl *Indexer::lookupEnumAtScope( const std::string &id, unsigned long scope ) const {
     564                if ( ! tables ) return 0;
     565                if ( tables->scope < scope ) return 0;
     566
     567                EnumTable::const_iterator ret = tables->enumTable.find( id );
     568                return ret != tables->enumTable.end() ? ret->second : tables->base.lookupEnumAtScope( id, scope );
     569        }
     570
     571        UnionDecl *Indexer::lookupUnionAtScope( const std::string &id, unsigned long scope ) const {
     572                if ( ! tables ) return 0;
     573                if ( tables->scope < scope ) return 0;
     574
     575                UnionTable::const_iterator ret = tables->unionTable.find( id );
     576                return ret != tables->unionTable.end() ? ret->second : tables->base.lookupUnionAtScope( id, scope );
     577        }
     578
     579        TraitDecl *Indexer::lookupTraitAtScope( const std::string &id, unsigned long scope ) const {
     580                if ( ! tables ) return 0;
     581                if ( tables->scope < scope ) return 0;
     582
     583                TraitTable::const_iterator ret = tables->traitTable.find( id );
     584                return ret != tables->traitTable.end() ? ret->second : tables->base.lookupTraitAtScope( id, scope );
     585        }
     586
     587        bool addedIdConflicts( DeclarationWithType *existing, DeclarationWithType *added ) {
     588                // if we're giving the same name mangling to things of different types then there is something wrong
     589                assert( (dynamic_cast<ObjectDecl*>( added ) && dynamic_cast<ObjectDecl*>( existing ) )
     590                        || (dynamic_cast<FunctionDecl*>( added ) && dynamic_cast<FunctionDecl*>( existing ) ) );
     591
     592                if ( LinkageSpec::isOverridable( existing->get_linkage() ) ) {
     593                        // new definition shadows the autogenerated one, even at the same scope
     594                        return false;
     595                } else if ( added->get_linkage() != LinkageSpec::C || ResolvExpr::typesCompatible( added->get_type(), existing->get_type(), Indexer() ) ) {
     596                        // typesCompatible doesn't really do the right thing here. When checking compatibility of function types,
     597                        // we should ignore outermost pointer qualifiers, except _Atomic?
     598                        FunctionDecl *newentry = dynamic_cast< FunctionDecl* >( added );
     599                        FunctionDecl *oldentry = dynamic_cast< FunctionDecl* >( existing );
     600                        if ( newentry && oldentry ) {
     601                                if ( newentry->get_statements() && oldentry->get_statements() ) {
     602                                        throw SemanticError( "duplicate function definition for ", added );
     603                                } // if
     604                        } else {
     605                                // two objects with the same mangled name defined in the same scope.
     606                                // both objects must be marked extern or both must be intrinsic for this to be okay
     607                                // xxx - perhaps it's actually if either is intrinsic then this is okay?
     608                                //       might also need to be same storage class?
     609                                ObjectDecl *newobj = dynamic_cast< ObjectDecl* >( added );
     610                                ObjectDecl *oldobj = dynamic_cast< ObjectDecl* >( existing );
     611                                if ( newobj->get_storageClass() != DeclarationNode::Extern && oldobj->get_storageClass() != DeclarationNode::Extern ) {
     612                                        throw SemanticError( "duplicate object definition for ", added );
     613                                } // if
     614                        } // if
     615                } else {
     616                        throw SemanticError( "duplicate definition for ", added );
     617                } // if
     618
     619                return true;
     620        }
     621
     622        void Indexer::addId( DeclarationWithType *decl ) {
     623                makeWritable();
     624
     625                const std::string &name = decl->get_name();
     626                std::string mangleName;
     627                if ( LinkageSpec::isOverridable( decl->get_linkage() ) ) {
     628                        // mangle the name without including the appropriate suffix, so overridable routines are placed into the
     629                        // same "bucket" as their user defined versions.
     630                        mangleName = Mangler::mangle( decl, false );
     631                } else {
     632                        mangleName = Mangler::mangle( decl );
     633                } // if
     634
     635                // this ensures that no two declarations with the same unmangled name at the same scope both have C linkage
     636                if ( decl->get_linkage() == LinkageSpec::C ) {
     637                        // NOTE this is broken in Richard's original code in such a way that it never triggers (it
     638                        // doesn't check decls that have the same manglename, and all C-linkage decls are defined to
     639                        // have their name as their manglename, hence the error can never trigger).
     640                        // The code here is closer to correct, but name mangling would have to be completely
     641                        // isomorphic to C type-compatibility, which it may not be.
     642                        if ( hasIncompatibleCDecl( name, mangleName, scope ) ) {
     643                                throw SemanticError( "conflicting overload of C function ", decl );
     644                        }
     645                } else {
     646                        // Check that a Cforall declaration doesn't overload any C declaration
     647                        if ( hasCompatibleCDecl( name, mangleName, scope ) ) {
     648                                throw SemanticError( "Cforall declaration hides C function ", decl );
     649                        }
     650                }
     651
     652                // Skip repeat declarations of the same identifier
     653                DeclarationWithType *existing = lookupIdAtScope( name, mangleName, scope );
     654                if ( existing && addedIdConflicts( existing, decl ) ) return;
     655
     656                // add to indexer
     657                tables->idTable[ name ][ mangleName ] = decl;
     658                ++tables->size;
     659        }
     660
     661        bool addedTypeConflicts( NamedTypeDecl *existing, NamedTypeDecl *added ) {
     662                if ( existing->get_base() == 0 ) {
     663                        return false;
     664                } else if ( added->get_base() == 0 ) {
     665                        return true;
     666                } else {
     667                        throw SemanticError( "redeclaration of ", added );
     668                }
     669        }
     670
     671        void Indexer::addType( NamedTypeDecl *decl ) {
     672                makeWritable();
     673
     674                const std::string &id = decl->get_name();
     675                TypeTable::iterator existing = tables->typeTable.find( id );
     676                if ( existing == tables->typeTable.end() ) {
     677                        NamedTypeDecl *parent = tables->base.lookupTypeAtScope( id, scope );
     678                        if ( ! parent || ! addedTypeConflicts( parent, decl ) ) {
     679                                tables->typeTable.insert( existing, std::make_pair( id, decl ) );
     680                                ++tables->size;
     681                        }
     682                } else {
     683                        if ( ! addedTypeConflicts( existing->second, decl ) ) {
     684                                existing->second = decl;
     685                        }
     686                }
     687        }
     688
     689        bool addedDeclConflicts( AggregateDecl *existing, AggregateDecl *added ) {
     690                if ( existing->get_members().empty() ) {
     691                        return false;
     692                } else if ( ! added->get_members().empty() ) {
     693                        throw SemanticError( "redeclaration of ", added );
     694                } // if
     695                return true;
     696        }
     697
     698        void Indexer::addStruct( const std::string &id ) {
     699                addStruct( new StructDecl( id ) );
     700        }
     701
     702        void Indexer::addStruct( StructDecl *decl ) {
     703                makeWritable();
     704
     705                const std::string &id = decl->get_name();
     706                StructTable::iterator existing = tables->structTable.find( id );
     707                if ( existing == tables->structTable.end() ) {
     708                        StructDecl *parent = tables->base.lookupStructAtScope( id, scope );
     709                        if ( ! parent || ! addedDeclConflicts( parent, decl ) ) {
     710                                tables->structTable.insert( existing, std::make_pair( id, decl ) );
     711                                ++tables->size;
     712                        }
     713                } else {
     714                        if ( ! addedDeclConflicts( existing->second, decl ) ) {
     715                                existing->second = decl;
     716                        }
     717                }
     718        }
     719
     720        void Indexer::addEnum( EnumDecl *decl ) {
     721                makeWritable();
     722
     723                const std::string &id = decl->get_name();
     724                EnumTable::iterator existing = tables->enumTable.find( id );
     725                if ( existing == tables->enumTable.end() ) {
     726                        EnumDecl *parent = tables->base.lookupEnumAtScope( id, scope );
     727                        if ( ! parent || ! addedDeclConflicts( parent, decl ) ) {
     728                                tables->enumTable.insert( existing, std::make_pair( id, decl ) );
     729                                ++tables->size;
     730                        }
     731                } else {
     732                        if ( ! addedDeclConflicts( existing->second, decl ) ) {
     733                                existing->second = decl;
     734                        }
     735                }
     736        }
     737
     738        void Indexer::addUnion( const std::string &id ) {
     739                addUnion( new UnionDecl( id ) );
     740        }
     741
     742        void Indexer::addUnion( UnionDecl *decl ) {
     743                makeWritable();
     744
     745                const std::string &id = decl->get_name();
     746                UnionTable::iterator existing = tables->unionTable.find( id );
     747                if ( existing == tables->unionTable.end() ) {
     748                        UnionDecl *parent = tables->base.lookupUnionAtScope( id, scope );
     749                        if ( ! parent || ! addedDeclConflicts( parent, decl ) ) {
     750                                tables->unionTable.insert( existing, std::make_pair( id, decl ) );
     751                                ++tables->size;
     752                        }
     753                } else {
     754                        if ( ! addedDeclConflicts( existing->second, decl ) ) {
     755                                existing->second = decl;
     756                        }
     757                }
     758        }
     759
     760        void Indexer::addTrait( TraitDecl *decl ) {
     761                makeWritable();
     762
     763                const std::string &id = decl->get_name();
     764                TraitTable::iterator existing = tables->traitTable.find( id );
     765                if ( existing == tables->traitTable.end() ) {
     766                        TraitDecl *parent = tables->base.lookupTraitAtScope( id, scope );
     767                        if ( ! parent || ! addedDeclConflicts( parent, decl ) ) {
     768                                tables->traitTable.insert( existing, std::make_pair( id, decl ) );
     769                                ++tables->size;
     770                        }
     771                } else {
     772                        if ( ! addedDeclConflicts( existing->second, decl ) ) {
     773                                existing->second = decl;
     774                        }
     775                }
    334776        }
    335777
    336778        void Indexer::enterScope() {
     779                ++scope;
     780
    337781                if ( doDebug ) {
    338                         std::cout << "--- Entering scope" << std::endl;
    339                 }
    340                 idTable.enterScope();
    341                 typeTable.enterScope();
    342                 structTable.enterScope();
    343                 enumTable.enterScope();
    344                 unionTable.enterScope();
    345                 contextTable.enterScope();
     782                        std::cout << "--- Entering scope " << scope << std::endl;
     783                }
    346784        }
    347785
    348786        void Indexer::leaveScope() {
    349787                using std::cout;
    350                 using std::endl;
    351  
    352                 if ( doDebug ) {
    353                         cout << "--- Leaving scope containing" << endl;
    354                         idTable.dump( cout );
    355                         typeTable.dump( cout );
    356                         structTable.dump( cout );
    357                         enumTable.dump( cout );
    358                         unionTable.dump( cout );
    359                         contextTable.dump( cout );
    360                 }
    361                 idTable.leaveScope();
    362                 typeTable.leaveScope();
    363                 structTable.leaveScope();
    364                 enumTable.leaveScope();
    365                 unionTable.leaveScope();
    366                 contextTable.leaveScope();
     788
     789                assert( scope > 0 && "cannot leave initial scope" );
     790                --scope;
     791
     792                while ( tables && tables->scope > scope ) {
     793                        if ( doDebug ) {
     794                                cout << "--- Leaving scope " << tables->scope << " containing" << std::endl;
     795                                dump( tables->idTable, cout );
     796                                dump( tables->typeTable, cout );
     797                                dump( tables->structTable, cout );
     798                                dump( tables->enumTable, cout );
     799                                dump( tables->unionTable, cout );
     800                                dump( tables->traitTable, cout );
     801                        }
     802
     803                        // swap tables for base table until we find one at an appropriate scope
     804                        Indexer::Impl *base = newRef( tables->base.tables );
     805                        deleteRef( tables );
     806                        tables = base;
     807                }
    367808        }
    368809
    369810        void Indexer::print( std::ostream &os, int indent ) const {
    370811            using std::cerr;
    371             using std::endl;
    372 
    373             cerr << "===idTable===" << endl;
    374             idTable.dump( os );
    375             cerr << "===typeTable===" << endl;
    376             typeTable.dump( os );
    377             cerr << "===structTable===" << endl;
    378             structTable.dump( os );
    379             cerr << "===enumTable===" << endl;
    380             enumTable.dump( os );
    381             cerr << "===unionTable===" << endl;
    382             unionTable.dump( os );
    383             cerr << "===contextTable===" << endl;
    384             contextTable.dump( os );
    385 #if 0
    386                 idTable.dump( os );
    387                 typeTable.dump( os );
    388                 structTable.dump( os );
    389                 enumTable.dump( os );
    390                 unionTable.dump( os );
    391                 contextTable.dump( os );
    392 #endif
     812
     813                if ( tables ) {
     814                        os << "--- scope " << tables->scope << " ---" << std::endl;
     815
     816                        os << "===idTable===" << std::endl;
     817                        dump( tables->idTable, os );
     818                        os << "===typeTable===" << std::endl;
     819                        dump( tables->typeTable, os );
     820                        os << "===structTable===" << std::endl;
     821                        dump( tables->structTable, os );
     822                        os << "===enumTable===" << std::endl;
     823                        dump( tables->enumTable, os );
     824                        os << "===unionTable===" << std::endl;
     825                        dump( tables->unionTable, os );
     826                        os << "===contextTable===" << std::endl;
     827                        dump( tables->traitTable, os );
     828
     829                        tables->base.print( os, indent );
     830                } else {
     831                        os << "--- end ---" << std::endl;
     832                }
     833
    393834        }
    394835} // namespace SymTab
  • src/SymTab/Indexer.h

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Indexer.h -- 
     7// Indexer.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:38:55 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Sep 17 16:05:38 2015
    13 // Update Count     : 5
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Mar  2 17:34:14 2016
     13// Update Count     : 6
    1414//
    1515
     
    2121
    2222#include "SynTree/Visitor.h"
    23 #include "IdTable.h"
    24 #include "AggregateTable.h"
    25 #include "TypeTable.h"
    2623
    2724namespace SymTab {
     
    2926          public:
    3027                Indexer( bool useDebug = false );
     28
     29                Indexer( const Indexer &that );
     30                Indexer( Indexer &&that );
    3131                virtual ~Indexer();
     32                Indexer& operator= ( const Indexer &that );
     33                Indexer& operator= ( Indexer &&that );
    3234
    33                 //using Visitor::visit;
     35                using Visitor::visit;
    3436                virtual void visit( ObjectDecl *objectDecl );
    3537                virtual void visit( FunctionDecl *functionDecl );
     
    3941                virtual void visit( UnionDecl *aggregateDecl );
    4042                virtual void visit( EnumDecl *aggregateDecl );
    41                 virtual void visit( ContextDecl *aggregateDecl );
     43                virtual void visit( TraitDecl *aggregateDecl );
    4244
    4345                virtual void visit( CompoundStmt *compoundStmt );
     
    5254                virtual void visit( MemberExpr *memberExpr );
    5355                virtual void visit( VariableExpr *variableExpr );
    54                 virtual void visit( ConstantExpr *constantExpr ); 
     56                virtual void visit( ConstantExpr *constantExpr );
    5557                virtual void visit( SizeofExpr *sizeofExpr );
     58                virtual void visit( AlignofExpr *alignofExpr );
     59                virtual void visit( UntypedOffsetofExpr *offsetofExpr );
     60                virtual void visit( OffsetofExpr *offsetofExpr );
     61                virtual void visit( OffsetPackExpr *offsetPackExpr );
    5662                virtual void visit( AttrExpr *attrExpr );
    5763                virtual void visit( LogicalExpr *logicalExpr );
     
    6470                virtual void visit( UntypedValofExpr *valofExpr );
    6571
    66                 virtual void visit( ContextInstType *contextInst );
     72                virtual void visit( TraitInstType *contextInst );
    6773                virtual void visit( StructInstType *contextInst );
    6874                virtual void visit( UnionInstType *contextInst );
     
    7581                void leaveScope();
    7682
    77                 void lookupId( const std::string &id, std::list< DeclarationWithType* >& ) const;
    78                 DeclarationWithType* lookupId( const std::string &id) const;
     83                /// Gets all declarations with the given ID
     84                void lookupId( const std::string &id, std::list< DeclarationWithType* > &out ) const;
     85                /// Gets the top-most type declaration with the given ID
    7986                NamedTypeDecl *lookupType( const std::string &id ) const;
     87                /// Gets the top-most struct declaration with the given ID
    8088                StructDecl *lookupStruct( const std::string &id ) const;
     89                /// Gets the top-most enum declaration with the given ID
    8190                EnumDecl *lookupEnum( const std::string &id ) const;
     91                /// Gets the top-most union declaration with the given ID
    8292                UnionDecl *lookupUnion( const std::string &id ) const;
    83                 ContextDecl *lookupContext( const std::string &id ) const;
    84  
     93                /// Gets the top-most trait declaration with the given ID
     94                TraitDecl *lookupTrait( const std::string &id ) const;
     95
    8596                void print( std::ostream &os, int indent = 0 ) const;
    8697          private:
    87                 IdTable idTable;
    88                 TypeTable typeTable;
    89                 StructTable structTable;
    90                 EnumTable enumTable;
    91                 UnionTable unionTable;
    92                 ContextTable contextTable;
    93  
    94                 bool doDebug;                                   // display debugging trace
     98                /// looks up a specific mangled ID at the given scope
     99                DeclarationWithType *lookupIdAtScope( const std::string &id, const std::string &mangleName, unsigned long scope ) const;
     100                /// 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;
     102                /// returns true if there exists a declaration with C linkage and the given name with the same mangled name
     103                bool hasCompatibleCDecl( const std::string &id, const std::string &mangleName, unsigned long scope ) const;
     104                // equivalents to lookup functions that only look at tables at scope `scope` (which should be >= tables->scope)
     105                NamedTypeDecl *lookupTypeAtScope( const std::string &id, unsigned long scope ) const;
     106                StructDecl *lookupStructAtScope( const std::string &id, unsigned long scope ) const;
     107                EnumDecl *lookupEnumAtScope( const std::string &id, unsigned long scope ) const;
     108                UnionDecl *lookupUnionAtScope( const std::string &id, unsigned long scope ) const;
     109                TraitDecl *lookupTraitAtScope( const std::string &id, unsigned long scope ) const;
     110
     111                void addId( DeclarationWithType *decl );
     112                void addType( NamedTypeDecl *decl );
     113                void addStruct( const std::string &id );
     114                void addStruct( StructDecl *decl );
     115                void addEnum( EnumDecl *decl );
     116                void addUnion( const std::string &id );
     117                void addUnion( UnionDecl *decl );
     118                void addTrait( TraitDecl *decl );
     119
     120                struct Impl;
     121                Impl *tables;         ///< Copy-on-write instance of table data structure
     122                unsigned long scope;  ///< Scope index of this pointer
     123                bool doDebug;         ///< Display debugging trace?
     124
     125                /// Takes a new ref to a table (returns null if null)
     126                static Impl *newRef( Impl *toClone );
     127                /// Clears a ref to a table (does nothing if null)
     128                static void deleteRef( Impl *toFree );
     129
     130                /// Ensures that tables variable is writable (i.e. allocated, uniquely owned by this Indexer, and at the current scope)
     131                void makeWritable();
    95132        };
    96133} // namespace SymTab
  • src/SymTab/Mangler.cc

    r679864e1 r242d458  
    3030
    3131namespace SymTab {
    32         Mangler::Mangler( bool mangleOverridable ) : nextVarNum( 0 ), isTopLevel( true ), mangleOverridable( mangleOverridable ) {
    33         }
    34 
    35 //Mangler::Mangler( const Mangler & )
    36 //  : mangleName(), varNums( varNums ), nextVarNum( nextVarNum ), isTopLevel( isTopLevel )
    37 //{
    38 //}
     32        std::string Mangler::mangleType( Type *ty ) {
     33                Mangler mangler( false, true );
     34                maybeAccept( ty, mangler );
     35                return mangler.get_mangleName();
     36        }
     37       
     38        Mangler::Mangler( bool mangleOverridable, bool typeMode )
     39                : nextVarNum( 0 ), isTopLevel( true ), mangleOverridable( mangleOverridable ), typeMode( typeMode ) {}
     40               
    3941        Mangler::Mangler( const Mangler &rhs ) : mangleName() {
    4042                varNums = rhs.varNums;
     
    4244                isTopLevel = rhs.isTopLevel;
    4345                mangleOverridable = rhs.mangleOverridable;
     46                typeMode = rhs.typeMode;
    4447        }
    4548
     
    152155        void Mangler::mangleRef( ReferenceToType *refType, std::string prefix ) {
    153156                printQualifiers( refType );
     157
    154158                mangleName << ( refType->get_name().length() + prefix.length() ) << prefix << refType->get_name();
    155159        }
    156160
     161        void Mangler::mangleGenericRef( ReferenceToType *refType, std::string prefix ) {
     162                printQualifiers( refType );
     163
     164                std::ostringstream oldName( mangleName.str() );
     165                mangleName.clear();
     166
     167                mangleName << prefix << refType->get_name();
     168
     169                std::list< Expression* >& params = refType->get_parameters();
     170                if ( ! params.empty() ) {
     171                        mangleName << "_";
     172                        for ( std::list< Expression* >::const_iterator param = params.begin(); param != params.end(); ++param ) {
     173                                TypeExpr *paramType = dynamic_cast< TypeExpr* >( *param );
     174                                assert(paramType && "Aggregate parameters should be type expressions");
     175                                maybeAccept( paramType->get_type(), *this );
     176                        }
     177                        mangleName << "_";
     178                }
     179
     180                oldName << mangleName.str().length() << mangleName.str();
     181                mangleName.str( oldName.str() );
     182        }
     183
    157184        void Mangler::visit( StructInstType *aggregateUseType ) {
    158                 mangleRef( aggregateUseType, "s" );
     185                if ( typeMode ) mangleGenericRef( aggregateUseType, "s" );
     186                else mangleRef( aggregateUseType, "s" );
    159187        }
    160188
    161189        void Mangler::visit( UnionInstType *aggregateUseType ) {
    162                 mangleRef( aggregateUseType, "u" );
     190                if ( typeMode ) mangleGenericRef( aggregateUseType, "u" );
     191                else mangleRef( aggregateUseType, "u" );
    163192        }
    164193
     
    197226        }
    198227
     228        void Mangler::visit( VarArgsType *varArgsType ) {
     229                printQualifiers( varArgsType );
     230                mangleName << "VARGS";
     231        }
     232
    199233        void Mangler::visit( TypeDecl *decl ) {
    200234                static const char *typePrefix[] = { "BT", "BD", "BF" };
     
    209243
    210244        void Mangler::printQualifiers( Type *type ) {
     245                // skip if not including qualifiers
     246                if ( typeMode ) return;
     247               
    211248                if ( ! type->get_forall().empty() ) {
    212249                        std::list< std::string > assertionNames;
     
    227264                                varNums[ (*i )->get_name() ] = std::pair< int, int >( nextVarNum++, (int )(*i )->get_kind() );
    228265                                for ( std::list< DeclarationWithType* >::iterator assert = (*i )->get_assertions().begin(); assert != (*i )->get_assertions().end(); ++assert ) {
    229                                         Mangler sub_mangler( mangleOverridable );
     266                                        Mangler sub_mangler( mangleOverridable, typeMode );
    230267                                        sub_mangler.nextVarNum = nextVarNum;
    231268                                        sub_mangler.isTopLevel = false;
     
    245282                        mangleName << "V";
    246283                } // if
    247                 if ( type->get_isRestrict() ) {
    248                         mangleName << "R";
    249                 } // if
     284                // Removed due to restrict not affecting function compatibility in GCC
     285//              if ( type->get_isRestrict() ) {
     286//                      mangleName << "R";
     287//              } // if
    250288                if ( type->get_isLvalue() ) {
    251289                        mangleName << "L";
  • src/SymTab/Mangler.h

    r679864e1 r242d458  
    2222
    2323namespace SymTab {
     24        /// Mangles names to a unique C identifier
    2425        class Mangler : public Visitor {
    2526          public:
     27                /// Mangle syntax tree object; primary interface to clients
    2628                template< typename SynTreeClass >
    27             static std::string mangle( SynTreeClass *decl, bool mangleOverridable = true ); // interface to clients
     29            static std::string mangle( SynTreeClass *decl, bool mangleOverridable = true );
     30                /// Mangle a type name; secondary interface
     31                static std::string mangleType( Type* ty );
    2832
    29 ///   using Visitor::visit;
    3033                virtual void visit( ObjectDecl *declaration );
    3134                virtual void visit( FunctionDecl *declaration );
     
    4245                virtual void visit( TypeInstType *aggregateUseType );
    4346                virtual void visit( TupleType *tupleType );
     47                virtual void visit( VarArgsType *varArgsType );
    4448 
    4549                std::string get_mangleName() { return mangleName.str(); }
    4650          private:
    47                 std::ostringstream mangleName;
     51                std::ostringstream mangleName;  ///< Mangled name being constructed
    4852                typedef std::map< std::string, std::pair< int, int > > VarMapType;
    49                 VarMapType varNums;
    50                 int nextVarNum;
    51                 bool isTopLevel;
    52                 bool mangleOverridable;
     53                VarMapType varNums;             ///< Map of type variables to indices
     54                int nextVarNum;                 ///< Next type variable index
     55                bool isTopLevel;                ///< Is the Mangler at the top level
     56                bool mangleOverridable;         ///< Specially mangle overridable built-in methods
     57                bool typeMode;                  ///< Produce a unique mangled name for a type
    5358 
    54                 Mangler( bool mangleOverridable );
     59                Mangler( bool mangleOverridable, bool typeMode );
    5560                Mangler( const Mangler & );
    5661 
    5762                void mangleDecl( DeclarationWithType *declaration );
    5863                void mangleRef( ReferenceToType *refType, std::string prefix );
     64                void mangleGenericRef( ReferenceToType *refType, std::string prefix );
    5965 
    6066                void printQualifiers( Type *type );
     
    6369        template< typename SynTreeClass >
    6470        std::string Mangler::mangle( SynTreeClass *decl, bool mangleOverridable ) {
    65                 Mangler mangler( mangleOverridable );
     71                Mangler mangler( mangleOverridable, false );
    6672                maybeAccept( decl, mangler );
    6773                return mangler.get_mangleName();
  • src/SymTab/TypeEquality.cc

    r679864e1 r242d458  
    4141                virtual void visit( EnumInstType *enumInst );
    4242                virtual void visit( TypeInstType *typeInst );
     43                virtual void visit( VarArgsType *varArgsType );
    4344
    4445                void handleQualifiers( Type * t );
     
    191192                }
    192193        }
     194
     195        void TypeEquality::visit( VarArgsType *varArgsType ) {
     196                handleQualifiers( varArgsType );
     197                if ( ! dynamic_cast< VarArgsType * >( other ) ) {
     198                        result = false;
     199                }
     200        }
    193201} // namespace SymTab
  • src/SymTab/Validate.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Validate.cc -- 
     7// Validate.cc --
    88//
    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 : Tue Oct 06 15:40:35 2015
    13 // Update Count     : 219
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jul 12 17:49:21 2016
     13// Update Count     : 298
    1414//
    1515
     
    4040#include <list>
    4141#include <iterator>
     42#include "Common/utility.h"
     43#include "Common/UniqueName.h"
    4244#include "Validate.h"
    4345#include "SynTree/Visitor.h"
    4446#include "SynTree/Mutator.h"
    4547#include "SynTree/Type.h"
     48#include "SynTree/Expression.h"
    4649#include "SynTree/Statement.h"
    4750#include "SynTree/TypeSubstitution.h"
     
    4952#include "FixFunction.h"
    5053// #include "ImplementationType.h"
    51 #include "utility.h"
    52 #include "UniqueName.h"
     54#include "GenPoly/DeclMutator.h"
    5355#include "AddVisit.h"
    5456#include "MakeLibCfa.h"
    5557#include "TypeEquality.h"
     58#include "Autogen.h"
     59#include "ResolvExpr/typeops.h"
    5660
    5761#define debugPrint( x ) if ( doDebug ) { std::cout << x; }
     
    6266                /// Flattens nested struct types
    6367                static void hoistStruct( std::list< Declaration * > &translationUnit );
    64  
     68
    6569                std::list< Declaration * > &get_declsToAdd() { return declsToAdd; }
    66  
     70
    6771                virtual void visit( StructDecl *aggregateDecl );
    6872                virtual void visit( UnionDecl *aggregateDecl );
    6973
    7074                virtual void visit( CompoundStmt *compoundStmt );
    71                 virtual void visit( IfStmt *ifStmt );
    72                 virtual void visit( WhileStmt *whileStmt );
    73                 virtual void visit( ForStmt *forStmt );
    7475                virtual void visit( SwitchStmt *switchStmt );
    75                 virtual void visit( ChooseStmt *chooseStmt );
    76                 virtual void visit( CaseStmt *caseStmt );
    77                 virtual void visit( CatchStmt *catchStmt );
    7876          private:
    7977                HoistStruct();
     
    8583        };
    8684
    87         /// Replaces enum types by int, and function or array types in function parameter and return lists by appropriate pointers
     85        /// Replaces enum types by int, and function or array types in function parameter and return lists by appropriate pointers.
    8886        class Pass1 : public Visitor {
    8987                typedef Visitor Parent;
     
    10098                virtual void visit( StructInstType *structInst );
    10199                virtual void visit( UnionInstType *unionInst );
    102                 virtual void visit( ContextInstType *contextInst );
     100                virtual void visit( TraitInstType *contextInst );
    103101                virtual void visit( StructDecl *structDecl );
    104102                virtual void visit( UnionDecl *unionDecl );
     
    106104
    107105                const Indexer *indexer;
    108  
     106
    109107                typedef std::map< std::string, std::list< StructInstType * > > ForwardStructsType;
    110108                typedef std::map< std::string, std::list< UnionInstType * > > ForwardUnionsType;
     
    125123        };
    126124
    127         class AddStructAssignment : public Visitor {
     125        class ReturnChecker : public Visitor {
    128126          public:
    129                 /// Generates assignment operators for aggregate types as required
    130                 static void addStructAssignment( std::list< Declaration * > &translationUnit );
    131 
    132                 std::list< Declaration * > &get_declsToAdd() { return declsToAdd; }
    133  
    134                 virtual void visit( EnumDecl *enumDecl );
    135                 virtual void visit( StructDecl *structDecl );
    136                 virtual void visit( UnionDecl *structDecl );
    137                 virtual void visit( TypeDecl *typeDecl );
    138                 virtual void visit( ContextDecl *ctxDecl );
    139                 virtual void visit( FunctionDecl *functionDecl );
    140 
    141                 virtual void visit( FunctionType *ftype );
    142                 virtual void visit( PointerType *ftype );
    143  
    144                 virtual void visit( CompoundStmt *compoundStmt );
    145                 virtual void visit( IfStmt *ifStmt );
    146                 virtual void visit( WhileStmt *whileStmt );
    147                 virtual void visit( ForStmt *forStmt );
    148                 virtual void visit( SwitchStmt *switchStmt );
    149                 virtual void visit( ChooseStmt *chooseStmt );
    150                 virtual void visit( CaseStmt *caseStmt );
    151                 virtual void visit( CatchStmt *catchStmt );
    152 
    153                 AddStructAssignment() : functionNesting( 0 ) {}
     127                /// Checks that return statements return nothing if their return type is void
     128                /// and return something if the return type is non-void.
     129                static void checkFunctionReturns( std::list< Declaration * > & translationUnit );
    154130          private:
    155                 template< typename StmtClass > void visitStatement( StmtClass *stmt );
    156  
    157                 std::list< Declaration * > declsToAdd;
    158                 std::set< std::string > structsDone;
    159                 unsigned int functionNesting;                   // current level of nested functions
     131                virtual void visit( FunctionDecl * functionDecl );
     132
     133                virtual void visit( ReturnStmt * returnStmt );
     134
     135                std::list< DeclarationWithType * > returnVals;
    160136        };
    161137
    162138        class EliminateTypedef : public Mutator {
    163139          public:
    164           EliminateTypedef() : scopeLevel( 0 ) {}
    165             /// Replaces typedefs by forward declarations
     140                EliminateTypedef() : scopeLevel( 0 ) {}
     141                /// Replaces typedefs by forward declarations
    166142                static void eliminateTypedef( std::list< Declaration * > &translationUnit );
    167143          private:
     
    177153                virtual Declaration *mutate( UnionDecl * unionDecl );
    178154                virtual Declaration *mutate( EnumDecl * enumDecl );
    179                 virtual Declaration *mutate( ContextDecl * contextDecl );
     155                virtual Declaration *mutate( TraitDecl * contextDecl );
    180156
    181157                template<typename AggDecl>
    182158                AggDecl *handleAggregate( AggDecl * aggDecl );
     159
     160                template<typename AggDecl>
     161                void addImplicitTypedef( AggDecl * aggDecl );
    183162
    184163                typedef std::map< std::string, std::pair< TypedefDecl *, int > > TypedefMap;
     
    189168        };
    190169
     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        };
     179
     180        class CompoundLiteral : public GenPoly::DeclMutator {
     181                DeclarationNode::StorageClass storageclass = DeclarationNode::NoStorageClass;
     182
     183                virtual DeclarationWithType * mutate( ObjectDecl *objectDecl );
     184                virtual Expression *mutate( CompoundLiteralExpr *compLitExpr );
     185        };
     186
    191187        void validate( std::list< Declaration * > &translationUnit, bool doDebug ) {
    192188                Pass1 pass1;
    193189                Pass2 pass2( doDebug, 0 );
    194190                Pass3 pass3( 0 );
     191                CompoundLiteral compoundliteral;
     192
    195193                EliminateTypedef::eliminateTypedef( translationUnit );
    196194                HoistStruct::hoistStruct( translationUnit );
     195                autogenerateRoutines( translationUnit ); // moved up, used to be below compoundLiteral - currently needs Pass1
    197196                acceptAll( translationUnit, pass1 );
    198197                acceptAll( translationUnit, pass2 );
    199                 // need to collect all of the assignment operators prior to
    200                 // this point and only generate assignment operators if one doesn't exist
    201                 AddStructAssignment::addStructAssignment( translationUnit );
     198                ReturnChecker::checkFunctionReturns( translationUnit );
     199                compoundliteral.mutateDeclarationList( translationUnit );
    202200                acceptAll( translationUnit, pass3 );
    203         }
    204        
     201                VerifyCtorDtor::verify( translationUnit );
     202        }
     203
    205204        void validateType( Type *type, const Indexer *indexer ) {
    206205                Pass1 pass1;
     
    210209                type->accept( pass2 );
    211210                type->accept( pass3 );
    212         }
    213 
    214         template< typename Visitor >
    215         void acceptAndAdd( std::list< Declaration * > &translationUnit, Visitor &visitor, bool addBefore ) {
    216                 std::list< Declaration * >::iterator i = translationUnit.begin();
    217                 while ( i != translationUnit.end() ) {
    218                         (*i)->accept( visitor );
    219                         std::list< Declaration * >::iterator next = i;
    220                         next++;
    221                         if ( ! visitor.get_declsToAdd().empty() ) {
    222                                 translationUnit.splice( addBefore ? i : next, visitor.get_declsToAdd() );
    223                         } // if
    224                         i = next;
    225                 } // while
    226211        }
    227212
     
    280265        }
    281266
    282         void HoistStruct::visit( IfStmt *ifStmt ) {
    283                 addVisit( ifStmt, *this );
    284         }
    285 
    286         void HoistStruct::visit( WhileStmt *whileStmt ) {
    287                 addVisit( whileStmt, *this );
    288         }
    289 
    290         void HoistStruct::visit( ForStmt *forStmt ) {
    291                 addVisit( forStmt, *this );
    292         }
    293 
    294267        void HoistStruct::visit( SwitchStmt *switchStmt ) {
    295268                addVisit( switchStmt, *this );
    296269        }
    297270
    298         void HoistStruct::visit( ChooseStmt *switchStmt ) {
    299                 addVisit( switchStmt, *this );
    300         }
    301 
    302         void HoistStruct::visit( CaseStmt *caseStmt ) {
    303                 addVisit( caseStmt, *this );
    304         }
    305 
    306         void HoistStruct::visit( CatchStmt *cathStmt ) {
    307                 addVisit( cathStmt, *this );
    308         }
    309 
    310271        void Pass1::visit( EnumDecl *enumDecl ) {
    311272                // Set the type of each member of the enumeration to be EnumConstant
    312  
    313273                for ( std::list< Declaration * >::iterator i = enumDecl->get_members().begin(); i != enumDecl->get_members().end(); ++i ) {
    314274                        ObjectDecl * obj = dynamic_cast< ObjectDecl * >( *i );
    315275                        assert( obj );
    316                         // obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false, false ), enumDecl->get_name() ) );
    317                         BasicType * enumType = new BasicType( Type::Qualifiers(), BasicType::SignedInt );
    318                         obj->set_type( enumType ) ;
     276                        obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false, false ), enumDecl->get_name() ) );
    319277                } // for
    320278                Parent::visit( enumDecl );
     
    322280
    323281        namespace {
    324                 template< typename DWTIterator >
    325                 void fixFunctionList( DWTIterator begin, DWTIterator end, FunctionType *func ) {
     282                template< typename DWTList >
     283                void fixFunctionList( DWTList & dwts, FunctionType * func ) {
    326284                        // the only case in which "void" is valid is where it is the only one in the list; then it should be removed
    327285                        // entirely other fix ups are handled by the FixFunction class
     286                        typedef typename DWTList::iterator DWTIterator;
     287                        DWTIterator begin( dwts.begin() ), end( dwts.end() );
    328288                        if ( begin == end ) return;
    329289                        FixFunction fixer;
    330290                        DWTIterator i = begin;
    331                         *i = (*i )->acceptMutator( fixer );
     291                        *i = (*i)->acceptMutator( fixer );
    332292                        if ( fixer.get_isVoid() ) {
    333293                                DWTIterator j = i;
    334294                                ++i;
    335                                 func->get_parameters().erase( j );
    336                                 if ( i != end ) { 
     295                                dwts.erase( j );
     296                                if ( i != end ) {
    337297                                        throw SemanticError( "invalid type void in function type ", func );
    338298                                } // if
     
    352312        void Pass1::visit( FunctionType *func ) {
    353313                // Fix up parameters and return types
    354                 fixFunctionList( func->get_parameters().begin(), func->get_parameters().end(), func );
    355                 fixFunctionList( func->get_returnVals().begin(), func->get_returnVals().end(), func );
     314                fixFunctionList( func->get_parameters(), func );
     315                fixFunctionList( func->get_returnVals(), func );
    356316                Visitor::visit( func );
    357317        }
     
    370330                // it's not a semantic error if the struct is not found, just an implicit forward declaration
    371331                if ( st ) {
    372                         assert( ! structInst->get_baseStruct() || structInst->get_baseStruct()->get_members().empty() || ! st->get_members().empty() );
     332                        //assert( ! structInst->get_baseStruct() || structInst->get_baseStruct()->get_members().empty() || ! st->get_members().empty() );
    373333                        structInst->set_baseStruct( st );
    374334                } // if
     
    392352        }
    393353
    394         void Pass2::visit( ContextInstType *contextInst ) {
     354        void Pass2::visit( TraitInstType *contextInst ) {
    395355                Parent::visit( contextInst );
    396                 ContextDecl *ctx = indexer->lookupContext( contextInst->get_name() );
     356                TraitDecl *ctx = indexer->lookupTrait( contextInst->get_name() );
    397357                if ( ! ctx ) {
    398358                        throw SemanticError( "use of undeclared context " + contextInst->get_name() );
     
    400360                for ( std::list< TypeDecl * >::const_iterator i = ctx->get_parameters().begin(); i != ctx->get_parameters().end(); ++i ) {
    401361                        for ( std::list< DeclarationWithType * >::const_iterator assert = (*i )->get_assertions().begin(); assert != (*i )->get_assertions().end(); ++assert ) {
    402                                 if ( ContextInstType *otherCtx = dynamic_cast< ContextInstType * >(*assert ) ) {
     362                                if ( TraitInstType *otherCtx = dynamic_cast< TraitInstType * >(*assert ) ) {
    403363                                        cloneAll( otherCtx->get_members(), contextInst->get_members() );
    404364                                } else {
     
    416376
    417377        void Pass2::visit( StructDecl *structDecl ) {
     378                // visit struct members first so that the types of self-referencing members are updated properly
     379                Parent::visit( structDecl );
    418380                if ( ! structDecl->get_members().empty() ) {
    419381                        ForwardStructsType::iterator fwds = forwardStructs.find( structDecl->get_name() );
     
    425387                        } // if
    426388                } // if
    427                 Indexer::visit( structDecl );
    428389        }
    429390
    430391        void Pass2::visit( UnionDecl *unionDecl ) {
     392                Parent::visit( unionDecl );
    431393                if ( ! unionDecl->get_members().empty() ) {
    432394                        ForwardUnionsType::iterator fwds = forwardUnions.find( unionDecl->get_name() );
     
    438400                        } // if
    439401                } // if
    440                 Indexer::visit( unionDecl );
    441402        }
    442403
     
    464425                        while ( ! toBeDone.empty() ) {
    465426                                for ( std::list< DeclarationWithType * >::iterator assertion = toBeDone.begin(); assertion != toBeDone.end(); ++assertion ) {
    466                                         if ( ContextInstType *ctx = dynamic_cast< ContextInstType * >( (*assertion )->get_type() ) ) {
     427                                        if ( TraitInstType *ctx = dynamic_cast< TraitInstType * >( (*assertion )->get_type() ) ) {
    467428                                                for ( std::list< Declaration * >::const_iterator i = ctx->get_members().begin(); i != ctx->get_members().end(); ++i ) {
    468429                                                        DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( *i );
     
    501462        }
    502463
    503         static const std::list< std::string > noLabels;
    504 
    505         void AddStructAssignment::addStructAssignment( std::list< Declaration * > &translationUnit ) {
    506                 AddStructAssignment visitor;
    507                 acceptAndAdd( translationUnit, visitor, false );
    508         }
    509 
    510         template< typename OutputIterator >
    511         void makeScalarAssignment( ObjectDecl *srcParam, ObjectDecl *dstParam, DeclarationWithType *member, OutputIterator out ) {
    512                 ObjectDecl *obj = dynamic_cast<ObjectDecl *>( member );
    513                 // unnamed bit fields are not copied as they cannot be accessed
    514                 if ( obj != NULL && obj->get_name() == "" && obj->get_bitfieldWidth() != NULL ) return;
    515 
    516                 UntypedExpr *assignExpr = new UntypedExpr( new NameExpr( "?=?" ) );
    517  
    518                 UntypedExpr *derefExpr = new UntypedExpr( new NameExpr( "*?" ) );
    519                 derefExpr->get_args().push_back( new VariableExpr( dstParam ) );
    520  
    521                 // do something special for unnamed members
    522                 Expression *dstselect = new AddressExpr( new MemberExpr( member, derefExpr ) );
    523                 assignExpr->get_args().push_back( dstselect );
    524  
    525                 Expression *srcselect = new MemberExpr( member, new VariableExpr( srcParam ) );
    526                 assignExpr->get_args().push_back( srcselect );
    527  
    528                 *out++ = new ExprStmt( noLabels, assignExpr );
    529         }
    530 
    531         template< typename OutputIterator >
    532         void makeArrayAssignment( ObjectDecl *srcParam, ObjectDecl *dstParam, DeclarationWithType *member, ArrayType *array, OutputIterator out ) {
    533                 static UniqueName indexName( "_index" );
    534  
    535                 // for a flexible array member nothing is done -- user must define own assignment
    536                 if ( ! array->get_dimension() ) return;
    537  
    538                 ObjectDecl *index = new ObjectDecl( indexName.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, new BasicType( Type::Qualifiers(), BasicType::SignedInt ), 0 );
    539                 *out++ = new DeclStmt( noLabels, index );
    540  
    541                 UntypedExpr *init = new UntypedExpr( new NameExpr( "?=?" ) );
    542                 init->get_args().push_back( new AddressExpr( new VariableExpr( index ) ) );
    543                 init->get_args().push_back( new NameExpr( "0" ) );
    544                 Statement *initStmt = new ExprStmt( noLabels, init );
    545                 std::list<Statement *> initList;
    546                 initList.push_back( initStmt );
    547  
    548                 UntypedExpr *cond = new UntypedExpr( new NameExpr( "?<?" ) );
    549                 cond->get_args().push_back( new VariableExpr( index ) );
    550                 cond->get_args().push_back( array->get_dimension()->clone() );
    551  
    552                 UntypedExpr *inc = new UntypedExpr( new NameExpr( "++?" ) );
    553                 inc->get_args().push_back( new AddressExpr( new VariableExpr( index ) ) );
    554  
    555                 UntypedExpr *assignExpr = new UntypedExpr( new NameExpr( "?=?" ) );
    556  
    557                 UntypedExpr *derefExpr = new UntypedExpr( new NameExpr( "*?" ) );
    558                 derefExpr->get_args().push_back( new VariableExpr( dstParam ) );
    559  
    560                 Expression *dstselect = new MemberExpr( member, derefExpr );
    561                 UntypedExpr *dstIndex = new UntypedExpr( new NameExpr( "?+?" ) );
    562                 dstIndex->get_args().push_back( dstselect );
    563                 dstIndex->get_args().push_back( new VariableExpr( index ) );
    564                 assignExpr->get_args().push_back( dstIndex );
    565  
    566                 Expression *srcselect = new MemberExpr( member, new VariableExpr( srcParam ) );
    567                 UntypedExpr *srcIndex = new UntypedExpr( new NameExpr( "?[?]" ) );
    568                 srcIndex->get_args().push_back( srcselect );
    569                 srcIndex->get_args().push_back( new VariableExpr( index ) );
    570                 assignExpr->get_args().push_back( srcIndex );
    571  
    572                 *out++ = new ForStmt( noLabels, initList, cond, inc, new ExprStmt( noLabels, assignExpr ) );
    573         }
    574 
    575         //E ?=?(E volatile*, int),
    576         //  ?=?(E _Atomic volatile*, int);
    577         void makeEnumAssignment( EnumDecl *enumDecl, EnumInstType *refType, unsigned int functionNesting, std::list< Declaration * > &declsToAdd ) {
    578                 FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    579  
    580                 ObjectDecl *returnVal = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
    581                 assignType->get_returnVals().push_back( returnVal );
    582 
    583                 // need two assignment operators with different types
    584                 FunctionType * assignType2 = assignType->clone();
    585 
    586                 // E ?=?(E volatile *, E)
    587                 Type *etype = refType->clone();
    588                 // etype->get_qualifiers() += Type::Qualifiers(false, true, false, false, false, false);
    589 
    590                 ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), etype ), 0 );
    591                 assignType->get_parameters().push_back( dstParam );
    592 
    593                 ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, etype->clone(), 0 );
    594                 assignType->get_parameters().push_back( srcParam );
    595 
    596                 // E ?=?(E volatile *, int)
    597                 assignType2->get_parameters().push_back( dstParam->clone() );
    598                 BasicType * paramType = new BasicType(Type::Qualifiers(), BasicType::SignedInt);
    599                 ObjectDecl *srcParam2 = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, paramType, 0 );
    600                 assignType2->get_parameters().push_back( srcParam2 );
    601 
    602                 // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
    603                 // because each unit generates copies of the default routines for each aggregate.
    604 
    605                 // since there is no definition, these should not be inline
    606                 // make these intrinsic so that the code generator does not make use of them
    607                 FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::Intrinsic, assignType, 0, false, false );
    608                 assignDecl->fixUniqueId();
    609                 FunctionDecl *assignDecl2 = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::Intrinsic, assignType2, 0, false, false );
    610                 assignDecl2->fixUniqueId();
    611 
    612                 // these should be built in the same way that the prelude
    613                 // functions are, so build a list containing the prototypes
    614                 // and allow MakeLibCfa to autogenerate the bodies.
    615                 std::list< Declaration * > assigns;
    616                 assigns.push_back( assignDecl );
    617                 assigns.push_back( assignDecl2 );
    618 
    619                 LibCfa::makeLibCfa( assigns );
    620 
    621                 // need to remove the prototypes, since this may be nested in a routine
    622                 for (int start = 0, end = assigns.size()/2; start < end; start++) {
    623                         delete assigns.front();
    624                         assigns.pop_front();
    625                 } // for
    626 
    627                 declsToAdd.insert( declsToAdd.begin(), assigns.begin(), assigns.end() );
    628         }
    629 
    630 
    631         Declaration *makeStructAssignment( StructDecl *aggregateDecl, StructInstType *refType, unsigned int functionNesting ) {
    632                 FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    633  
    634                 ObjectDecl *returnVal = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
    635                 assignType->get_returnVals().push_back( returnVal );
    636  
    637                 ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), refType->clone() ), 0 );
    638                 assignType->get_parameters().push_back( dstParam );
    639  
    640                 ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType, 0 );
    641                 assignType->get_parameters().push_back( srcParam );
    642 
    643                 // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
    644                 // because each unit generates copies of the default routines for each aggregate.
    645                 FunctionDecl *assignDecl = new FunctionDecl( "?=?", functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true, false );
    646                 assignDecl->fixUniqueId();
    647  
    648                 for ( std::list< Declaration * >::const_iterator member = aggregateDecl->get_members().begin(); member != aggregateDecl->get_members().end(); ++member ) {
    649                         if ( DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( *member ) ) {
    650                                 // query the type qualifiers of this field and skip assigning it if it is marked const.
    651                                 // If it is an array type, we need to strip off the array layers to find its qualifiers.
    652                                 Type * type = dwt->get_type();
    653                                 while ( ArrayType * at = dynamic_cast< ArrayType * >( type ) ) {
    654                                         type = at->get_base();
    655                                 }
    656 
    657                                 if ( type->get_qualifiers().isConst ) {
    658                                         // don't assign const members
    659                                         continue;
    660                                 }
    661 
    662                                 if ( ArrayType *array = dynamic_cast< ArrayType * >( dwt->get_type() ) ) {
    663                                         makeArrayAssignment( srcParam, dstParam, dwt, array, back_inserter( assignDecl->get_statements()->get_kids() ) );
    664                                 } else {
    665                                         makeScalarAssignment( srcParam, dstParam, dwt, back_inserter( assignDecl->get_statements()->get_kids() ) );
    666                                 } // if
    667                         } // if
    668                 } // for
    669                 assignDecl->get_statements()->get_kids().push_back( new ReturnStmt( noLabels, new VariableExpr( srcParam ) ) );
    670  
    671                 return assignDecl;
    672         }
    673 
    674         Declaration *makeUnionAssignment( UnionDecl *aggregateDecl, UnionInstType *refType, unsigned int functionNesting ) {
    675                 FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    676  
    677                 ObjectDecl *returnVal = new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType->clone(), 0 );
    678                 assignType->get_returnVals().push_back( returnVal );
    679  
    680                 ObjectDecl *dstParam = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), refType->clone() ), 0 );
    681                 assignType->get_parameters().push_back( dstParam );
    682  
    683                 ObjectDecl *srcParam = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, refType, 0 );
    684                 assignType->get_parameters().push_back( srcParam );
    685  
    686                 // Routines at global scope marked "static" to prevent multiple definitions is separate translation units
    687                 // because each unit generates copies of the default routines for each aggregate.
    688                 FunctionDecl *assignDecl = new FunctionDecl( "?=?",  functionNesting > 0 ? DeclarationNode::NoStorageClass : DeclarationNode::Static, LinkageSpec::AutoGen, assignType, new CompoundStmt( noLabels ), true, false );
    689                 assignDecl->fixUniqueId();
    690  
    691                 UntypedExpr *copy = new UntypedExpr( new NameExpr( "__builtin_memcpy" ) );
    692                 copy->get_args().push_back( new VariableExpr( dstParam ) );
    693                 copy->get_args().push_back( new AddressExpr( new VariableExpr( srcParam ) ) );
    694                 copy->get_args().push_back( new SizeofExpr( refType->clone() ) );
    695 
    696                 assignDecl->get_statements()->get_kids().push_back( new ExprStmt( noLabels, copy ) );
    697                 assignDecl->get_statements()->get_kids().push_back( new ReturnStmt( noLabels, new VariableExpr( srcParam ) ) );
    698  
    699                 return assignDecl;
    700         }
    701 
    702         void AddStructAssignment::visit( EnumDecl *enumDecl ) {
    703                 if ( ! enumDecl->get_members().empty() ) {
    704                         EnumInstType *enumInst = new EnumInstType( Type::Qualifiers(), enumDecl->get_name() );
    705                         // enumInst->set_baseEnum( enumDecl );
    706                         // declsToAdd.push_back(
    707                         makeEnumAssignment( enumDecl, enumInst, functionNesting, declsToAdd );
     464        void ReturnChecker::checkFunctionReturns( std::list< Declaration * > & translationUnit ) {
     465                ReturnChecker checker;
     466                acceptAll( translationUnit, checker );
     467        }
     468
     469        void ReturnChecker::visit( FunctionDecl * functionDecl ) {
     470                std::list< DeclarationWithType * > oldReturnVals = returnVals;
     471                returnVals = functionDecl->get_functionType()->get_returnVals();
     472                Visitor::visit( functionDecl );
     473                returnVals = oldReturnVals;
     474        }
     475
     476        void ReturnChecker::visit( ReturnStmt * returnStmt ) {
     477                // Previously this also checked for the existence of an expr paired with no return values on
     478                // the  function return type. This is incorrect, since you can have an expression attached to
     479                // a return statement in a void-returning function in C. The expression is treated as if it
     480                // were cast to void.
     481                if ( returnStmt->get_expr() == NULL && returnVals.size() != 0 ) {
     482                        throw SemanticError( "Non-void function returns no values: " , returnStmt );
    708483                }
    709484        }
    710485
    711         void AddStructAssignment::visit( StructDecl *structDecl ) {
    712                 if ( ! structDecl->get_members().empty() && structsDone.find( structDecl->get_name() ) == structsDone.end() ) {
    713                         StructInstType *structInst = new StructInstType( Type::Qualifiers(), structDecl->get_name() );
    714                         structInst->set_baseStruct( structDecl );
    715                         declsToAdd.push_back( makeStructAssignment( structDecl, structInst, functionNesting ) );
    716                         structsDone.insert( structDecl->get_name() );
    717                 } // if
    718         }
    719 
    720         void AddStructAssignment::visit( UnionDecl *unionDecl ) {
    721                 if ( ! unionDecl->get_members().empty() ) {
    722                         UnionInstType *unionInst = new UnionInstType( Type::Qualifiers(), unionDecl->get_name() );
    723                         unionInst->set_baseUnion( unionDecl );
    724                         declsToAdd.push_back( makeUnionAssignment( unionDecl, unionInst, functionNesting ) );
    725                 } // if
    726         }
    727 
    728         void AddStructAssignment::visit( TypeDecl *typeDecl ) {
    729                 CompoundStmt *stmts = 0;
    730                 TypeInstType *typeInst = new TypeInstType( Type::Qualifiers(), typeDecl->get_name(), false );
    731                 typeInst->set_baseType( typeDecl );
    732                 ObjectDecl *src = new ObjectDecl( "_src", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, typeInst->clone(), 0 );
    733                 ObjectDecl *dst = new ObjectDecl( "_dst", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), typeInst->clone() ), 0 );
    734                 if ( typeDecl->get_base() ) {
    735                         stmts = new CompoundStmt( std::list< Label >() );
    736                         UntypedExpr *assign = new UntypedExpr( new NameExpr( "?=?" ) );
    737                         assign->get_args().push_back( new CastExpr( new VariableExpr( dst ), new PointerType( Type::Qualifiers(), typeDecl->get_base()->clone() ) ) );
    738                         assign->get_args().push_back( new CastExpr( new VariableExpr( src ), typeDecl->get_base()->clone() ) );
    739                         stmts->get_kids().push_back( new ReturnStmt( std::list< Label >(), assign ) );
    740                 } // if
    741                 FunctionType *type = new FunctionType( Type::Qualifiers(), false );
    742                 type->get_returnVals().push_back( new ObjectDecl( "", DeclarationNode::NoStorageClass, LinkageSpec::Cforall, 0, typeInst, 0 ) );
    743                 type->get_parameters().push_back( dst );
    744                 type->get_parameters().push_back( src );
    745                 FunctionDecl *func = new FunctionDecl( "?=?", DeclarationNode::NoStorageClass, LinkageSpec::AutoGen, type, stmts, false, false );
    746                 declsToAdd.push_back( func );
    747         }
    748 
    749         void addDecls( std::list< Declaration * > &declsToAdd, std::list< Statement * > &statements, std::list< Statement * >::iterator i ) {
    750                 for ( std::list< Declaration * >::iterator decl = declsToAdd.begin(); decl != declsToAdd.end(); ++decl ) {
    751                         statements.insert( i, new DeclStmt( noLabels, *decl ) );
    752                 } // for
    753                 declsToAdd.clear();
    754         }
    755 
    756         void AddStructAssignment::visit( FunctionType *) {
    757                 // ensure that we don't add assignment ops for types defined as part of the function
    758         }
    759 
    760         void AddStructAssignment::visit( PointerType *) {
    761                 // ensure that we don't add assignment ops for types defined as part of the pointer
    762         }
    763 
    764         void AddStructAssignment::visit( ContextDecl *) {
    765                 // ensure that we don't add assignment ops for types defined as part of the context
    766         }
    767 
    768         template< typename StmtClass >
    769         inline void AddStructAssignment::visitStatement( StmtClass *stmt ) {
    770                 std::set< std::string > oldStructs = structsDone;
    771                 addVisit( stmt, *this );
    772                 structsDone = oldStructs;
    773         }
    774 
    775         void AddStructAssignment::visit( FunctionDecl *functionDecl ) {
    776                 maybeAccept( functionDecl->get_functionType(), *this );
    777                 acceptAll( functionDecl->get_oldDecls(), *this );
    778                 functionNesting += 1;
    779                 maybeAccept( functionDecl->get_statements(), *this );
    780                 functionNesting -= 1;
    781         }
    782 
    783         void AddStructAssignment::visit( CompoundStmt *compoundStmt ) {
    784                 visitStatement( compoundStmt );
    785         }
    786 
    787         void AddStructAssignment::visit( IfStmt *ifStmt ) {
    788                 visitStatement( ifStmt );
    789         }
    790 
    791         void AddStructAssignment::visit( WhileStmt *whileStmt ) {
    792                 visitStatement( whileStmt );
    793         }
    794 
    795         void AddStructAssignment::visit( ForStmt *forStmt ) {
    796                 visitStatement( forStmt );
    797         }
    798 
    799         void AddStructAssignment::visit( SwitchStmt *switchStmt ) {
    800                 visitStatement( switchStmt );
    801         }
    802 
    803         void AddStructAssignment::visit( ChooseStmt *switchStmt ) {
    804                 visitStatement( switchStmt );
    805         }
    806 
    807         void AddStructAssignment::visit( CaseStmt *caseStmt ) {
    808                 visitStatement( caseStmt );
    809         }
    810 
    811         void AddStructAssignment::visit( CatchStmt *cathStmt ) {
    812                 visitStatement( cathStmt );
    813         }
    814486
    815487        bool isTypedef( Declaration *decl ) {
     
    820492                EliminateTypedef eliminator;
    821493                mutateAll( translationUnit, eliminator );
     494                if ( eliminator.typedefNames.count( "size_t" ) ) {
     495                        // grab and remember declaration of size_t
     496                        SizeType = eliminator.typedefNames["size_t"].first->get_base()->clone();
     497                } else {
     498                        // xxx - missing global typedef for size_t - default to long unsigned int, even though that may be wrong
     499                        // eventually should have a warning for this case.
     500                        SizeType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
     501                }
    822502                filter( translationUnit, isTypedef, true );
     503
    823504        }
    824505
    825506        Type *EliminateTypedef::mutate( TypeInstType * typeInst ) {
    826                 // instances of typedef types will come here. If it is an instance 
     507                // instances of typedef types will come here. If it is an instance
    827508                // of a typdef type, link the instance to its actual type.
    828509                TypedefMap::const_iterator def = typedefNames.find( typeInst->get_name() );
     
    837518                                }
    838519                                rtt->get_parameters().clear();
    839                                 cloneAll(typeInst->get_parameters(), rtt->get_parameters());
     520                                cloneAll( typeInst->get_parameters(), rtt->get_parameters() );
     521                                mutateAll( rtt->get_parameters(), *this );  // recursively fix typedefs on parameters
    840522                        } // if
    841523                        delete typeInst;
     
    851533        Declaration *EliminateTypedef::mutate( TypedefDecl * tyDecl ) {
    852534                Declaration *ret = Mutator::mutate( tyDecl );
     535
    853536                if ( typedefNames.count( tyDecl->get_name() ) == 1 && typedefNames[ tyDecl->get_name() ].second == scopeLevel ) {
    854                         // typedef to the same name from the same scope 
     537                        // typedef to the same name from the same scope
    855538                        // must be from the same type
    856539
    857540                        Type * t1 = tyDecl->get_base();
    858541                        Type * t2 = typedefNames[ tyDecl->get_name() ].first->get_base();
    859                         if ( ! typeEquals( t1, t2, true ) ) {
     542                        if ( ! ResolvExpr::typesCompatible( t1, t2, Indexer() ) ) {
    860543                                throw SemanticError( "cannot redefine typedef: " + tyDecl->get_name() );
    861544                        }
     
    876559                } else if ( UnionInstType *aggDecl = dynamic_cast< UnionInstType * >( tyDecl->get_base() ) ) {
    877560                        return new UnionDecl( aggDecl->get_name() );
     561                } else if ( EnumInstType *enumDecl = dynamic_cast< EnumInstType * >( tyDecl->get_base() ) ) {
     562                        return new EnumDecl( enumDecl->get_name() );
    878563                } else {
    879564                        return ret;
     
    902587                DeclarationWithType *ret = Mutator::mutate( objDecl );
    903588                typedefNames = oldNames;
     589                // is the type a function?
    904590                if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) {
     591                        // replace the current object declaration with a function declaration
    905592                        return new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn() );
    906593                } else if ( objDecl->get_isInline() || objDecl->get_isNoreturn() ) {
     
    937624        }
    938625
    939         // there may be typedefs nested within aggregates
    940         // in order for everything to work properly, these
    941         // should be removed as well
     626        // there may be typedefs nested within aggregates in order for everything to work properly, these should be removed
     627        // as well
    942628        template<typename AggDecl>
    943629        AggDecl *EliminateTypedef::handleAggregate( AggDecl * aggDecl ) {
     
    954640        }
    955641
     642        template<typename AggDecl>
     643        void EliminateTypedef::addImplicitTypedef( AggDecl * aggDecl ) {
     644                if ( typedefNames.count( aggDecl->get_name() ) == 0 ) {
     645                        Type *type;
     646                        if ( StructDecl * newDeclStructDecl = dynamic_cast< StructDecl * >( aggDecl ) ) {
     647                                type = new StructInstType( Type::Qualifiers(), newDeclStructDecl->get_name() );
     648                        } else if ( UnionDecl * newDeclUnionDecl = dynamic_cast< UnionDecl * >( aggDecl ) ) {
     649                                type = new UnionInstType( Type::Qualifiers(), newDeclUnionDecl->get_name() );
     650                        } else if ( EnumDecl * newDeclEnumDecl = dynamic_cast< EnumDecl * >( aggDecl )  ) {
     651                                type = new EnumInstType( Type::Qualifiers(), newDeclEnumDecl->get_name() );
     652                        } // if
     653                        TypedefDecl * tyDecl = new TypedefDecl( aggDecl->get_name(), DeclarationNode::NoStorageClass, type );
     654                        typedefNames[ aggDecl->get_name() ] = std::make_pair( tyDecl, scopeLevel );
     655                } // if
     656        }
     657
    956658        Declaration *EliminateTypedef::mutate( StructDecl * structDecl ) {
     659                addImplicitTypedef( structDecl );
    957660                Mutator::mutate( structDecl );
    958661                return handleAggregate( structDecl );
     
    960663
    961664        Declaration *EliminateTypedef::mutate( UnionDecl * unionDecl ) {
     665                addImplicitTypedef( unionDecl );
    962666                Mutator::mutate( unionDecl );
    963667                return handleAggregate( unionDecl );
     
    965669
    966670        Declaration *EliminateTypedef::mutate( EnumDecl * enumDecl ) {
     671                addImplicitTypedef( enumDecl );
    967672                Mutator::mutate( enumDecl );
    968673                return handleAggregate( enumDecl );
    969674        }
    970675
    971                 Declaration *EliminateTypedef::mutate( ContextDecl * contextDecl ) {
     676        Declaration *EliminateTypedef::mutate( TraitDecl * contextDecl ) {
    972677                Mutator::mutate( contextDecl );
    973678                return handleAggregate( contextDecl );
    974679        }
    975680
     681        void VerifyCtorDtor::verify( std::list< Declaration * > & translationUnit ) {
     682                VerifyCtorDtor verifier;
     683                acceptAll( translationUnit, verifier );
     684        }
     685
     686        void VerifyCtorDtor::visit( FunctionDecl * funcDecl ) {
     687                FunctionType * funcType = funcDecl->get_functionType();
     688                std::list< DeclarationWithType * > &returnVals = funcType->get_returnVals();
     689                std::list< DeclarationWithType * > &params = funcType->get_parameters();
     690
     691                if ( funcDecl->get_name() == "?{}" || funcDecl->get_name() == "^?{}" ) {
     692                        if ( params.size() == 0 ) {
     693                                throw SemanticError( "Constructors and destructors require at least one parameter ", funcDecl );
     694                        }
     695                        if ( ! dynamic_cast< PointerType * >( params.front()->get_type() ) ) {
     696                                throw SemanticError( "First parameter of a constructor or destructor must be a pointer ", funcDecl );
     697                        }
     698                        if ( returnVals.size() != 0 ) {
     699                                throw SemanticError( "Constructors and destructors cannot have explicit return values ", funcDecl );
     700                        }
     701                }
     702
     703                Visitor::visit( funcDecl );
     704        }
     705
     706        DeclarationWithType * CompoundLiteral::mutate( ObjectDecl *objectDecl ) {
     707                storageclass = objectDecl->get_storageClass();
     708                DeclarationWithType * temp = Mutator::mutate( objectDecl );
     709                storageclass = DeclarationNode::NoStorageClass;
     710                return temp;
     711        }
     712
     713        Expression *CompoundLiteral::mutate( CompoundLiteralExpr *compLitExpr ) {
     714                // transform [storage_class] ... (struct S){ 3, ... };
     715                // into [storage_class] struct S temp =  { 3, ... };
     716                static UniqueName indexName( "_compLit" );
     717
     718                ObjectDecl *tempvar = new ObjectDecl( indexName.newName(), storageclass, LinkageSpec::C, 0, compLitExpr->get_type(), compLitExpr->get_initializer() );
     719                compLitExpr->set_type( 0 );
     720                compLitExpr->set_initializer( 0 );
     721                delete compLitExpr;
     722                DeclarationWithType * newtempvar = mutate( tempvar );
     723                addDeclaration( newtempvar );                                   // add modified temporary to current block
     724                return new VariableExpr( newtempvar );
     725        }
    976726} // namespace SymTab
    977727
  • src/SymTab/module.mk

    r679864e1 r242d458  
    66## file "LICENCE" distributed with Cforall.
    77##
    8 ## module.mk -- 
     8## module.mk --
    99##
    1010## Author           : Richard C. Bilson
     
    1515###############################################################################
    1616
    17 SRC += SymTab/IdTable.cc \
    18        SymTab/Indexer.cc \
     17SRC += SymTab/Indexer.cc \
    1918       SymTab/Mangler.cc \
    2019       SymTab/Validate.cc \
    2120       SymTab/FixFunction.cc \
    2221       SymTab/ImplementationType.cc \
    23        SymTab/TypeEquality.cc
     22       SymTab/TypeEquality.cc \
     23       SymTab/Autogen.cc
  • src/SynTree/AddressExpr.cc

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

    r679864e1 r242d458  
    1010// Created On       : Sun May 17 23:56:39 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 08:12:49 2015
    13 // Update Count     : 6
     12// Last Modified On : Wed Jul 13 18:03:30 2016
     13// Update Count     : 10
    1414//
    1515
    1616#include "Declaration.h"
    1717#include "Type.h"
    18 #include "utility.h"
     18#include "Common/utility.h"
    1919
    2020
    21 AggregateDecl::AggregateDecl( const std::string &name ) : Parent( name, DeclarationNode::NoStorageClass, LinkageSpec::Cforall ) {
     21AggregateDecl::AggregateDecl( const std::string &name ) : Parent( name, DeclarationNode::NoStorageClass, LinkageSpec::Cforall ), body( false ) {
    2222}
    2323
     
    2525        cloneAll( other.members, members );
    2626        cloneAll( other.parameters, parameters );
     27        body = other.body;
    2728}
    2829
     
    3738
    3839        os << typeString() << " " << get_name();
     40        os << string( indent+2, ' ' ) << "with body " << has_body() << endl;
     41
    3942        if ( ! parameters.empty() ) {
    4043                os << endl << string( indent+2, ' ' ) << "with parameters" << endl;
     
    5255
    5356        os << typeString() << " " << get_name();
     57        os << string( indent+2, ' ' ) << "with body " << has_body() << endl;
     58
    5459        if ( ! parameters.empty() ) {
    5560                os << endl << string( indent+2, ' ' ) << "with parameters" << endl;
     
    6469std::string EnumDecl::typeString() const { return "enum"; }
    6570
    66 std::string ContextDecl::typeString() const { return "context"; }
     71std::string TraitDecl::typeString() const { return "context"; }
    6772
    6873// Local Variables: //
  • src/SynTree/ApplicationExpr.cc

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

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

    r679864e1 r242d458  
    1616#include "Type.h"
    1717#include "Expression.h"
    18 #include "utility.h"
     18#include "Common/utility.h"
    1919
    2020
  • src/SynTree/CommaExpr.cc

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

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

    r679864e1 r242d458  
    1616#include <iostream>
    1717#include <list>
     18#include <string>
    1819
    1920#include "Constant.h"
     
    2829
    2930Constant::~Constant() { delete type; }
     31
     32Constant Constant::from_int( int i ) {
     33        return Constant( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), std::to_string( i ) );
     34}
     35
     36Constant Constant::from_ulong( unsigned long i ) {
     37        return Constant( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), std::to_string( i ) );
     38}
     39
     40Constant Constant::from_double( double d ) {
     41        return Constant( new BasicType( Type::Qualifiers(), BasicType::Double ), std::to_string( d ) );
     42}
    3043
    3144Constant *Constant::clone() const { assert( false ); return 0; }
  • src/SynTree/Constant.h

    r679864e1 r242d458  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 30 15:19:16 2015
    13 // Update Count     : 5
     12// Last Modified On : Thu Jun 30 13:33:17 2016
     13// Update Count     : 6
    1414//
    1515
     
    2929        Type *get_type() { return type; }
    3030        void set_type( Type *newValue ) { type = newValue; }
    31         std::string get_value() { return value; }
     31        std::string &get_value() { return value; }
    3232        void set_value( std::string newValue ) { value = newValue; }
     33
     34        /// generates an integer constant of the given int
     35        static Constant from_int( int i );
     36        /// generates an integer constant of the given unsigned long int
     37        static Constant from_ulong( unsigned long i );
     38        /// generates a floating point constant of the given double
     39        static Constant from_double( double d );
    3340
    3441        virtual Constant *clone() const;
  • src/SynTree/DeclStmt.cc

    r679864e1 r242d458  
    1616#include "Statement.h"
    1717#include "Declaration.h"
    18 #include "utility.h"
     18#include "Common/utility.h"
    1919
    2020DeclStmt::DeclStmt( std::list<Label> labels, Declaration *decl ) : Statement( labels ), decl( decl ) {
  • src/SynTree/Declaration.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Declaration.cc -- 
     7// Declaration.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jul 13 17:58:38 2015
    13 // Update Count     : 10
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Dec 09 14:08:29 2015
     13// Update Count     : 12
    1414//
    1515
     
    2020#include "Initializer.h"
    2121#include "Type.h"
    22 #include "utility.h"
     22#include "Attribute.h"
     23#include "Common/utility.h"
    2324
    2425static UniqueId lastUniqueId = 0;
     
    5556}
    5657
     58std::ostream & operator<<( std::ostream & out, Declaration * decl ) {
     59        decl->print( out );
     60        return out;
     61}
     62
     63
    5764// Local Variables: //
    5865// tab-width: 4 //
  • src/SynTree/Declaration.h

    r679864e1 r242d458  
    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
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jul 13 18:15:59 2015
    13 // Update Count     : 28
     12// Last Modified On : Tue Jul 12 21:03:17 2016
     13// Update Count     : 39
    1414//
    1515
     
    2222#include "Parser/LinkageSpec.h"
    2323#include "Parser/ParseNode.h"
     24#include <string>
    2425
    2526class Declaration {
     
    4041        void set_isNoreturn( bool newValue ) { isNoreturn = newValue; }
    4142        UniqueId get_uniqueId() const { return uniqueId; }
     43        bool get_extension() const { return extension; }
     44        Declaration *set_extension( bool exten ) { extension = exten; return this; }
    4245
    4346        void fixUniqueId( void );
     
    5659        bool isInline, isNoreturn;
    5760        UniqueId uniqueId;
     61        bool extension = false;
    5862};
    5963
    6064class DeclarationWithType : public Declaration {
    6165  public:
    62         DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage );
     66        DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, const std::list< Attribute * > & attributes );
    6367        DeclarationWithType( const DeclarationWithType &other );
    6468        virtual ~DeclarationWithType();
     
    6771        void set_mangleName( std::string newValue ) { mangleName = newValue; }
    6872
     73        std::string get_scopedMangleName() const { return mangleName + "_" + std::to_string(scopeLevel); }
     74
     75        int get_scopeLevel() const { return scopeLevel; }
     76        void set_scopeLevel( int newValue ) { scopeLevel = newValue; }
     77
     78        std::list< Attribute * >& get_attributes() { return attributes; }
     79        const std::list< Attribute * >& get_attributes() const { return attributes; }
     80
    6981        virtual DeclarationWithType *clone() const = 0;
    7082        virtual DeclarationWithType *acceptMutator( Mutator &m ) = 0;
     
    7587        // this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2
    7688        std::string mangleName;
     89        // need to remember the scope level at which the variable was declared, so that
     90        // shadowed identifiers can be accessed
     91        int scopeLevel = 0;
     92
     93        std::list< Attribute * > attributes;
    7794};
    7895
     
    8097        typedef DeclarationWithType Parent;
    8198  public:
    82         ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, bool isInline = false, bool isNoreturn = false );
     99        ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes = std::list< Attribute * >(), bool isInline = false, bool isNoreturn = false );
    83100        ObjectDecl( const ObjectDecl &other );
    84101        virtual ~ObjectDecl();
     
    106123        typedef DeclarationWithType Parent;
    107124  public:
    108         FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn );
     125        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 * >() );
    109126        FunctionDecl( const FunctionDecl &other );
    110127        virtual ~FunctionDecl();
     
    196213        std::list<TypeDecl*>& get_parameters() { return parameters; }
    197214
     215        bool has_body() const { return body; }
     216        AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; }
     217
    198218        virtual void print( std::ostream &os, int indent = 0 ) const;
    199219        virtual void printShort( std::ostream &os, int indent = 0 ) const;
     
    204224        std::list<Declaration*> members;
    205225        std::list<TypeDecl*> parameters;
     226        bool body;
    206227};
    207228
     
    215236        virtual void accept( Visitor &v ) { v.visit( this ); }
    216237        virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    217 
    218238  private:
    219239        virtual std::string typeString() const;
     
    246266};
    247267
    248 class ContextDecl : public AggregateDecl {
    249         typedef AggregateDecl Parent;
    250   public:
    251         ContextDecl( const std::string &name ) : Parent( name ) {}
    252         ContextDecl( const ContextDecl &other ) : Parent( other ) {}
    253 
    254         virtual ContextDecl *clone() const { return new ContextDecl( *this ); }
    255         virtual void accept( Visitor &v ) { v.visit( this ); }
    256         virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    257   private:
    258         virtual std::string typeString() const;
    259 };
     268class TraitDecl : public AggregateDecl {
     269        typedef AggregateDecl Parent;
     270  public:
     271        TraitDecl( const std::string &name ) : Parent( name ) {}
     272        TraitDecl( const TraitDecl &other ) : Parent( other ) {}
     273
     274        virtual TraitDecl *clone() const { return new TraitDecl( *this ); }
     275        virtual void accept( Visitor &v ) { v.visit( this ); }
     276        virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     277  private:
     278        virtual std::string typeString() const;
     279};
     280
     281std::ostream & operator<<( std::ostream & out, Declaration * decl );
    260282
    261283#endif // DECLARATION_H
  • src/SynTree/DeclarationWithType.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // DeclarationWithType.cc -- 
     7// DeclarationWithType.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 08:08:07 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Mon Apr 11 15:35:27 2016
    1313// Update Count     : 3
    1414//
     
    1616#include "Declaration.h"
    1717#include "Type.h"
    18 #include "utility.h"
     18#include "Attribute.h"
     19#include "Common/utility.h"
    1920
    20 DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage )
    21                 : Declaration( name, sc, linkage ) {
     21DeclarationWithType::DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, const std::list< Attribute * > & attributes )
     22                : Declaration( name, sc, linkage ), attributes( attributes ) {
    2223}
    2324
    2425DeclarationWithType::DeclarationWithType( const DeclarationWithType &other )
    25                 : Declaration( other ), mangleName( other.mangleName ) {
     26                : Declaration( other ), mangleName( other.mangleName ), scopeLevel( other.scopeLevel ) {
     27        cloneAll( other.attributes, attributes );
    2628}
    2729
    2830DeclarationWithType::~DeclarationWithType() {
     31        deleteAll( attributes );
    2932}
    3033
  • src/SynTree/Expression.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Expression.cc -- 
     7// Expression.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 Sep 02 12:07:10 2015
    13 // Update Count     : 33
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Wed Aug  3 17:06:51 2016
     13// Update Count     : 45
    1414//
    1515
     
    2222
    2323#include "Type.h"
     24#include "Initializer.h"
    2425#include "Expression.h"
    2526#include "Declaration.h"
    2627#include "Statement.h"
    2728#include "TypeSubstitution.h"
    28 #include "utility.h"
     29#include "Common/utility.h"
    2930
    3031
    3132Expression::Expression( Expression *_aname ) : env( 0 ), argName( _aname ) {}
    3233
    33 Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ) {
     34Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ), extension( other.extension ) {
    3435        cloneAll( other.results, results );
    3536}
     
    5960                argName->print( os, indent+2 );
    6061        } // if
     62
     63        if ( extension ) {
     64                os << std::string( indent, ' ' ) << "with extension:";
     65        } // if
    6166}
    6267
     
    7176
    7277void ConstantExpr::print( std::ostream &os, int indent ) const {
    73         os << std::string( indent, ' ' ) << "constant expression " ;
     78        os << "constant expression " ;
    7479        constant.print( os );
    7580        Expression::print( os, indent );
    76         os << std::endl;
    7781}
    7882
    7983VariableExpr::VariableExpr( DeclarationWithType *_var, Expression *_aname ) : Expression( _aname ), var( _var ) {
     84        assert( var );
     85        assert( var->get_type() );
    8086        add_result( var->get_type()->clone() );
    8187        for ( std::list< Type* >::iterator i = get_results().begin(); i != get_results().end(); ++i ) {
     
    9298
    9399void VariableExpr::print( std::ostream &os, int indent ) const {
    94         os << std::string( indent, ' ' ) << "Variable Expression: ";
     100        os << "Variable Expression: ";
    95101
    96102        Declaration *decl = get_var();
     
    103109SizeofExpr::SizeofExpr( Expression *expr_, Expression *_aname ) :
    104110                Expression( _aname ), expr(expr_), type(0), isType(false) {
    105         add_result( new BasicType( Type::Qualifiers(), BasicType::UnsignedInt ) );
     111        add_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
    106112}
    107113
    108114SizeofExpr::SizeofExpr( Type *type_, Expression *_aname ) :
    109115                Expression( _aname ), expr(0), type(type_), isType(true) {
    110         add_result( new BasicType( Type::Qualifiers(), BasicType::UnsignedInt ) );
     116        add_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
    111117}
    112118
     
    121127
    122128void SizeofExpr::print( std::ostream &os, int indent) const {
    123         os << std::string( indent, ' ' ) << "Sizeof Expression on: ";
     129        os << "Sizeof Expression on: ";
    124130
    125131        if (isType)
     
    127133        else
    128134                expr->print(os, indent + 2);
     135
     136        os << std::endl;
     137        Expression::print( os, indent );
     138}
     139
     140AlignofExpr::AlignofExpr( Expression *expr_, Expression *_aname ) :
     141                Expression( _aname ), expr(expr_), type(0), isType(false) {
     142        add_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
     143}
     144
     145AlignofExpr::AlignofExpr( Type *type_, Expression *_aname ) :
     146                Expression( _aname ), expr(0), type(type_), isType(true) {
     147        add_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
     148}
     149
     150AlignofExpr::AlignofExpr( const AlignofExpr &other ) :
     151        Expression( other ), expr( maybeClone( other.expr ) ), type( maybeClone( other.type ) ), isType( other.isType ) {
     152}
     153
     154AlignofExpr::~AlignofExpr() {
     155        delete expr;
     156        delete type;
     157}
     158
     159void AlignofExpr::print( std::ostream &os, int indent) const {
     160        os << std::string( indent, ' ' ) << "Alignof Expression on: ";
     161
     162        if (isType)
     163                type->print(os, indent + 2);
     164        else
     165                expr->print(os, indent + 2);
     166
     167        os << std::endl;
     168        Expression::print( os, indent );
     169}
     170
     171UntypedOffsetofExpr::UntypedOffsetofExpr( Type *type_, const std::string &member_, Expression *_aname ) :
     172                Expression( _aname ), type(type_), member(member_) {
     173        add_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
     174}
     175
     176UntypedOffsetofExpr::UntypedOffsetofExpr( const UntypedOffsetofExpr &other ) :
     177        Expression( other ), type( maybeClone( other.type ) ), member( other.member ) {}
     178
     179UntypedOffsetofExpr::~UntypedOffsetofExpr() {
     180        delete type;
     181}
     182
     183void UntypedOffsetofExpr::print( std::ostream &os, int indent) const {
     184        os << std::string( indent, ' ' ) << "Untyped Offsetof Expression on member " << member << " of ";
     185
     186        if ( type ) {
     187                type->print(os, indent + 2);
     188        } else {
     189                os << "<NULL>";
     190        }
     191
     192        os << std::endl;
     193        Expression::print( os, indent );
     194}
     195
     196OffsetofExpr::OffsetofExpr( Type *type_, DeclarationWithType *member_, Expression *_aname ) :
     197                Expression( _aname ), type(type_), member(member_) {
     198        add_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
     199}
     200
     201OffsetofExpr::OffsetofExpr( const OffsetofExpr &other ) :
     202        Expression( other ), type( maybeClone( other.type ) ), member( maybeClone( other.member ) ) {}
     203
     204OffsetofExpr::~OffsetofExpr() {
     205        delete type;
     206        delete member;
     207}
     208
     209void OffsetofExpr::print( std::ostream &os, int indent) const {
     210        os << std::string( indent, ' ' ) << "Offsetof Expression on member ";
     211
     212        if ( member ) {
     213                os << member->get_name();
     214        } else {
     215                os << "<NULL>";
     216        }
     217
     218        os << " of ";
     219
     220        if ( type ) {
     221                type->print(os, indent + 2);
     222        } else {
     223                os << "<NULL>";
     224        }
     225
     226        os << std::endl;
     227        Expression::print( os, indent );
     228}
     229
     230OffsetPackExpr::OffsetPackExpr( StructInstType *type_, Expression *aname_ ) : Expression( aname_ ), type( type_ ) {
     231        add_result( new ArrayType( Type::Qualifiers(), new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), 0, false, false ) );
     232}
     233
     234OffsetPackExpr::OffsetPackExpr( const OffsetPackExpr &other ) : Expression( other ), type( maybeClone( other.type ) ) {}
     235
     236OffsetPackExpr::~OffsetPackExpr() { delete type; }
     237
     238void OffsetPackExpr::print( std::ostream &os, int indent ) const {
     239        os << std::string( indent, ' ' ) << "Offset pack expression on ";
     240
     241        if ( type ) {
     242                type->print(os, indent + 2);
     243        } else {
     244                os << "<NULL>";
     245        }
    129246
    130247        os << std::endl;
     
    183300
    184301void CastExpr::print( std::ostream &os, int indent ) const {
    185         os << std::string( indent, ' ' ) << "Cast of:" << std::endl;
     302        os << "Cast of:" << std::endl << std::string( indent+2, ' ' );
    186303        arg->print(os, indent+2);
    187304        os << std::endl << std::string( indent, ' ' ) << "to:" << std::endl;
     
    206323
    207324void UntypedMemberExpr::print( std::ostream &os, int indent ) const {
    208         os << std::string( indent, ' ' ) << "Member Expression, with field: " << get_member();
     325        os << "Untyped Member Expression, with field: " << get_member();
    209326
    210327        Expression *agg = get_aggregate();
    211         os << std::string( indent, ' ' ) << "from aggregate: ";
    212         if (agg != 0) agg->print(os, indent + 2);
     328        os << ", from aggregate: ";
     329        if (agg != 0) {
     330                os << std::string( indent + 2, ' ' );
     331                agg->print(os, indent + 2);
     332        }
     333        os << std::string( indent+2, ' ' );
    213334        Expression::print( os, indent );
    214335}
     
    223344}
    224345
     346//// is this right? It's cloning the member, but the member is a declaration so probably shouldn't be cloned...
    225347MemberExpr::MemberExpr( const MemberExpr &other ) :
    226                 Expression( other ), member( maybeClone( other.member ) ), aggregate( maybeClone( other.aggregate ) ) {
     348                Expression( other ), member( other.member ), aggregate( maybeClone( other.aggregate ) ) {
    227349}
    228350
    229351MemberExpr::~MemberExpr() {
    230         delete member;
     352        // delete member;
    231353        delete aggregate;
    232354}
    233355
    234356void MemberExpr::print( std::ostream &os, int indent ) const {
    235         os << std::string( indent, ' ' ) << "Member Expression, with field: " << std::endl;
     357        os << "Member Expression, with field: " << std::endl;
    236358
    237359        assert( member );
     
    242364        Expression *agg = get_aggregate();
    243365        os << std::string( indent, ' ' ) << "from aggregate: " << std::endl;
    244         if (agg != 0) agg->print(os, indent + 2);
     366        if (agg != 0) {
     367                os << std::string( indent + 2, ' ' );
     368                agg->print(os, indent + 2);
     369        }
     370        os << std::string( indent+2, ' ' );
    245371        Expression::print( os, indent );
    246372}
     
    260386
    261387void UntypedExpr::print( std::ostream &os, int indent ) const {
    262         os << std::string( indent, ' ' ) << "Applying untyped: " << std::endl;
    263         function->print(os, indent + 4);
     388        os << "Applying untyped: " << std::endl;
     389        os << std::string( indent+2, ' ' );
     390        function->print(os, indent + 2);
    264391        os << std::string( indent, ' ' ) << "...to: " << std::endl;
    265         printArgs(os, indent + 4);
     392        printAll(args, os, indent + 2);
    266393        Expression::print( os, indent );
    267394}
     
    269396void UntypedExpr::printArgs( std::ostream &os, int indent ) const {
    270397        std::list<Expression *>::const_iterator i;
    271         for (i = args.begin(); i != args.end(); i++)
     398        for (i = args.begin(); i != args.end(); i++) {
     399                os << std::string(indent, ' ' );
    272400                (*i)->print(os, indent);
     401        }
    273402}
    274403
     
    281410
    282411void NameExpr::print( std::ostream &os, int indent ) const {
    283         os << std::string( indent, ' ' ) << "Name: " << get_name() << std::endl;
     412        os << "Name: " << get_name() << std::endl;
    284413        Expression::print( os, indent );
    285414}
     
    332461}
    333462
     463AsmExpr::AsmExpr( const AsmExpr & other ) : inout( maybeClone( other.inout ) ), constraint( maybeClone( other.constraint ) ), operand( maybeClone( other.operand ) ) {}
     464
     465
    334466void AsmExpr::print( std::ostream &os, int indent ) const {
    335467        os << "Asm Expression: " << std::endl;
     
    339471}
    340472
     473
     474ImplicitCopyCtorExpr::ImplicitCopyCtorExpr( ApplicationExpr * callExpr ) : callExpr( callExpr ) {
     475        assert( callExpr );
     476        cloneAll( callExpr->get_results(), results );
     477}
     478
     479ImplicitCopyCtorExpr::ImplicitCopyCtorExpr( const ImplicitCopyCtorExpr & other ) : Expression( other ), callExpr( maybeClone( other.callExpr ) ) {
     480        cloneAll( other.tempDecls, tempDecls );
     481        cloneAll( other.returnDecls, returnDecls );
     482        cloneAll( other.dtors, dtors );
     483}
     484
     485ImplicitCopyCtorExpr::~ImplicitCopyCtorExpr() {
     486        delete callExpr;
     487        deleteAll( tempDecls );
     488        deleteAll( returnDecls );
     489        deleteAll( dtors );
     490}
     491
     492void ImplicitCopyCtorExpr::print( std::ostream &os, int indent ) const {
     493        os << std::string( indent, ' ' ) <<  "Implicit Copy Constructor Expression: " << std::endl;
     494        assert( callExpr );
     495        callExpr->print( os, indent + 2 );
     496        os << std::endl << std::string( indent, ' ' ) << "with temporaries:" << std::endl;
     497        printAll(tempDecls, os, indent+2);
     498        os << std::endl << std::string( indent, ' ' ) << "with return temporaries:" << std::endl;
     499        printAll(returnDecls, os, indent+2);
     500        Expression::print( os, indent );
     501}
     502
     503UntypedValofExpr::UntypedValofExpr( const UntypedValofExpr & other ) : Expression( other ), body ( maybeClone( other.body ) ) {}
     504
     505UntypedValofExpr::~UntypedValofExpr() { delete body; }
     506
    341507void UntypedValofExpr::print( std::ostream &os, int indent ) const {
    342508        os << std::string( indent, ' ' ) << "Valof Expression: " << std::endl;
    343509        if ( get_body() != 0 )
    344510                get_body()->print( os, indent + 2 );
     511}
     512
     513
     514CompoundLiteralExpr::CompoundLiteralExpr( Type * type, Initializer * initializer ) : type( type ), initializer( initializer ) {
     515        add_result( type->clone() );
     516}
     517
     518CompoundLiteralExpr::CompoundLiteralExpr( const CompoundLiteralExpr &other ) : Expression( other ), type( maybeClone( other.type ) ), initializer( maybeClone( other.initializer ) ) {}
     519
     520CompoundLiteralExpr::~CompoundLiteralExpr() {
     521        delete initializer;
     522        delete type;
     523}
     524
     525void CompoundLiteralExpr::print( std::ostream &os, int indent ) const {
     526        os << "Compound Literal Expression: " << std::endl;
     527        if ( type ) type->print( os, indent + 2 );
     528        if ( initializer ) initializer->print( os, indent + 2 );
     529}
     530
     531RangeExpr::RangeExpr( ConstantExpr *low, ConstantExpr *high ) : low( low ), high( high ) {}
     532RangeExpr::RangeExpr( const RangeExpr &other ) : low( other.low->clone() ), high( other.high->clone() ) {}
     533void RangeExpr::print( std::ostream &os, int indent ) const {
     534        os << std::string( indent, ' ' ) << "Range Expression: ";
     535        low->print( os, indent );
     536        os << " ... ";
     537        high->print( os, indent );
     538}
     539
     540std::ostream & operator<<( std::ostream & out, Expression * expr ) {
     541        expr->print( out );
     542        return out;
    345543}
    346544
  • src/SynTree/Expression.h

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Expression.h -- 
     7// Expression.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 : Fri Jul 24 13:49:28 2015
    13 // Update Count     : 18
     12// Last Modified On : Wed Aug  3 17:08:44 2016
     13// Update Count     : 27
    1414//
    1515
     
    1818
    1919#include <map>
     20#include <memory>
    2021#include "SynTree.h"
    2122#include "Visitor.h"
    2223#include "Mutator.h"
    2324#include "Constant.h"
    24 
     25#include "Common/UniqueName.h"
     26
     27/// Expression is the root type for all expressions
    2528class Expression {
    2629  public:
     
    3639        Expression *get_argName() const { return argName; }
    3740        void set_argName( Expression *name ) { argName = name; }
     41        bool get_extension() const { return extension; }
     42        Expression * set_extension( bool exten ) { extension = exten; return this; }
    3843
    3944        virtual Expression *clone() const = 0;
     
    4550        TypeSubstitution *env;
    4651        Expression* argName; // if expression is used as an argument, it can be "designated" by this name
    47 };
    48 
    49 // ParamEntry contains the i.d. of a declaration and a type that is derived from that declaration,
    50 // but subject to decay-to-pointer and type parameter renaming
    51 
     52        bool extension = false;
     53};
     54
     55/// ParamEntry contains the i.d. of a declaration and a type that is derived from that declaration,
     56/// but subject to decay-to-pointer and type parameter renaming
    5257struct ParamEntry {
    5358        ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 ) {}
     
    6570typedef std::map< UniqueId, ParamEntry > InferredParams;
    6671
    67 // ApplicationExpr represents the application of a function to a set of parameters.  This is the
    68 // result of running an UntypedExpr through the expression analyzer.
    69 
     72/// ApplicationExpr represents the application of a function to a set of parameters.  This is the
     73/// result of running an UntypedExpr through the expression analyzer.
    7074class ApplicationExpr : public Expression {
    7175  public:
     
    8993};
    9094
    91 // UntypedExpr represents the application of a function to a set of parameters, but where the
    92 // particular overload for the function name has not yet been determined.  Most operators are
    93 // converted into functional form automatically, to permit operator overloading.
    94 
     95/// UntypedExpr represents the application of a function to a set of parameters, but where the
     96/// particular overload for the function name has not yet been determined.  Most operators are
     97/// converted into functional form automatically, to permit operator overloading.
    9598class UntypedExpr : public Expression {
    9699  public:
     
    118121};
    119122
    120 // this class contains a name whose meaning is still not determined
     123/// NameExpr contains a name whose meaning is still not determined
    121124class NameExpr : public Expression {
    122125  public:
     
    139142// function-call format.
    140143
    141 // AddressExpr represents a address-of expression, e.g. &e
     144/// AddressExpr represents a address-of expression, e.g. &e
    142145class AddressExpr : public Expression {
    143146  public:
     
    157160};
    158161
     162// xxx - this doesn't appear to actually be hooked in anywhere. We should use this instead of the "&&"" UntypedExpr hack
    159163class LabelAddressExpr : public Expression {
    160164  public:
    161165        LabelAddressExpr( Expression *arg );
    162         LabelAddressExpr( const AddressExpr &other );
     166        LabelAddressExpr( const LabelAddressExpr &other );
    163167        virtual ~LabelAddressExpr();
    164168
     
    174178};
    175179
    176 // CastExpr represents a type cast expression, e.g. (int)e
     180/// CastExpr represents a type cast expression, e.g. (int)e
    177181class CastExpr : public Expression {
    178182  public:
     
    193197};
    194198
    195 // UntypedMemberExpr represents a member selection operation, e.g. q.p before processing by the expression analyzer
     199/// UntypedMemberExpr represents a member selection operation, e.g. q.p before processing by the expression analyzer
    196200class UntypedMemberExpr : public Expression {
    197201  public:
     
    214218};
    215219
    216 // MemberExpr represents a member selection operation, e.g. q.p after processing by the expression analyzer
     220/// MemberExpr represents a member selection operation, e.g. q.p after processing by the expression analyzer
    217221class MemberExpr : public Expression {
    218222  public:
     
    235239};
    236240
    237 // VariableExpr represents an expression that simply refers to the value of a named variable
     241/// VariableExpr represents an expression that simply refers to the value of a named variable
    238242class VariableExpr : public Expression {
    239243  public:
     
    253257};
    254258
    255 // ConstantExpr represents an expression that simply refers to the value of a constant
     259/// ConstantExpr represents an expression that simply refers to the value of a constant
    256260class ConstantExpr : public Expression {
    257261  public:
     
    271275};
    272276
    273 // SizeofExpr represents a sizeof expression (could be sizeof(int) or sizeof 3+4)
     277/// SizeofExpr represents a sizeof expression (could be sizeof(int) or sizeof 3+4)
    274278class SizeofExpr : public Expression {
    275279  public:
     
    296300};
    297301
    298 // AttrExpr represents an @attribute expression (like sizeof, but user-defined)
     302/// AlignofExpr represents an alignof expression
     303class AlignofExpr : public Expression {
     304  public:
     305        AlignofExpr( Expression *expr, Expression *_aname = 0 );
     306        AlignofExpr( const AlignofExpr &other );
     307        AlignofExpr( Type *type, Expression *_aname = 0 );
     308        virtual ~AlignofExpr();
     309
     310        Expression *get_expr() const { return expr; }
     311        void set_expr( Expression *newValue ) { expr = newValue; }
     312        Type *get_type() const { return type; }
     313        void set_type( Type *newValue ) { type = newValue; }
     314        bool get_isType() const { return isType; }
     315        void set_isType( bool newValue ) { isType = newValue; }
     316
     317        virtual AlignofExpr *clone() const { return new AlignofExpr( *this ); }
     318        virtual void accept( Visitor &v ) { v.visit( this ); }
     319        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     320        virtual void print( std::ostream &os, int indent = 0 ) const;
     321  private:
     322        Expression *expr;
     323        Type *type;
     324        bool isType;
     325};
     326
     327/// UntypedOffsetofExpr represents an offsetof expression before resolution
     328class UntypedOffsetofExpr : public Expression {
     329  public:
     330        UntypedOffsetofExpr( Type *type, const std::string &member, Expression *_aname = 0 );
     331        UntypedOffsetofExpr( const UntypedOffsetofExpr &other );
     332        virtual ~UntypedOffsetofExpr();
     333
     334        std::string get_member() const { return member; }
     335        void set_member( const std::string &newValue ) { member = newValue; }
     336        Type *get_type() const { return type; }
     337        void set_type( Type *newValue ) { type = newValue; }
     338
     339        virtual UntypedOffsetofExpr *clone() const { return new UntypedOffsetofExpr( *this ); }
     340        virtual void accept( Visitor &v ) { v.visit( this ); }
     341        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     342        virtual void print( std::ostream &os, int indent = 0 ) const;
     343  private:
     344        Type *type;
     345        std::string member;
     346};
     347
     348/// OffsetofExpr represents an offsetof expression
     349class OffsetofExpr : public Expression {
     350  public:
     351        OffsetofExpr( Type *type, DeclarationWithType *member, Expression *_aname = 0 );
     352        OffsetofExpr( const OffsetofExpr &other );
     353        virtual ~OffsetofExpr();
     354
     355        Type *get_type() const { return type; }
     356        void set_type( Type *newValue ) { type = newValue; }
     357        DeclarationWithType *get_member() const { return member; }
     358        void set_member( DeclarationWithType *newValue ) { member = newValue; }
     359
     360        virtual OffsetofExpr *clone() const { return new OffsetofExpr( *this ); }
     361        virtual void accept( Visitor &v ) { v.visit( this ); }
     362        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     363        virtual void print( std::ostream &os, int indent = 0 ) const;
     364  private:
     365        Type *type;
     366        DeclarationWithType *member;
     367};
     368
     369/// Expression representing a pack of field-offsets for a generic type
     370class OffsetPackExpr : public Expression {
     371public:
     372        OffsetPackExpr( StructInstType *type_, Expression *aname_ = 0 );
     373        OffsetPackExpr( const OffsetPackExpr &other );
     374        virtual ~OffsetPackExpr();
     375
     376        StructInstType *get_type() const { return type; }
     377        void set_type( StructInstType *newValue ) { type = newValue; }
     378
     379        virtual OffsetPackExpr *clone() const { return new OffsetPackExpr( *this ); }
     380        virtual void accept( Visitor &v ) { v.visit( this ); }
     381        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     382
     383        virtual void print( std::ostream &os, int indent = 0 ) const;
     384
     385private:
     386        StructInstType *type;
     387};
     388
     389/// AttrExpr represents an @attribute expression (like sizeof, but user-defined)
    299390class AttrExpr : public Expression {
    300391  public:
     
    324415};
    325416
    326 // LogicalExpr represents a short-circuit boolean expression (&& or ||)
     417/// LogicalExpr represents a short-circuit boolean expression (&& or ||)
    327418class LogicalExpr : public Expression {
    328419  public:
     
    347438};
    348439
    349 // ConditionalExpr represents the three-argument conditional ( p ? a : b )
     440/// ConditionalExpr represents the three-argument conditional ( p ? a : b )
    350441class ConditionalExpr : public Expression {
    351442  public:
     
    371462};
    372463
    373 // CommaExpr represents the sequence operator ( a, b )
     464/// CommaExpr represents the sequence operator ( a, b )
    374465class CommaExpr : public Expression {
    375466  public:
     
    392483};
    393484
    394 // TupleExpr represents a tuple expression ( [a, b, c] )
     485/// TupleExpr represents a tuple expression ( [a, b, c] )
    395486class TupleExpr : public Expression {
    396487  public:
     
    410501};
    411502
    412 // SolvedTupleExpr represents a TupleExpr whose components have been type-resolved. It is effectively a shell for the code generator to work on
     503/// SolvedTupleExpr represents a TupleExpr whose components have been type-resolved. It is effectively a shell for the code generator to work on
    413504class SolvedTupleExpr : public Expression {
    414505  public:
     
    428519};
    429520
    430 // TypeExpr represents a type used in an expression (e.g. as a type generator parameter)
     521/// TypeExpr represents a type used in an expression (e.g. as a type generator parameter)
    431522class TypeExpr : public Expression {
    432523  public:
     
    446537};
    447538
    448 // AsmExpr represents a GCC 'asm constraint operand' used in an asm statement: [output] "=f" (result)
     539/// AsmExpr represents a GCC 'asm constraint operand' used in an asm statement: [output] "=f" (result)
    449540class AsmExpr : public Expression {
    450541  public:
    451542        AsmExpr( Expression *inout, ConstantExpr *constraint, Expression *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
     543        AsmExpr( const AsmExpr & other );
    452544        virtual ~AsmExpr() { delete inout; delete constraint; delete operand; };
    453545
     
    472564};
    473565
    474 // ValofExpr represents a GCC 'lambda expression'
     566/// ImplicitCopyCtorExpr represents the application of a function to a set of parameters,
     567/// along with a set of copy constructor calls, one for each argument.
     568class ImplicitCopyCtorExpr : public Expression {
     569public:
     570        ImplicitCopyCtorExpr( ApplicationExpr * callExpr );
     571        ImplicitCopyCtorExpr( const ImplicitCopyCtorExpr & other );
     572        virtual ~ImplicitCopyCtorExpr();
     573
     574        ApplicationExpr *get_callExpr() const { return callExpr; }
     575        void set_callExpr( ApplicationExpr *newValue ) { callExpr = newValue; }
     576
     577        std::list< ObjectDecl * > & get_tempDecls() { return tempDecls; }
     578        void set_tempDecls( std::list< ObjectDecl * > newValue ) { tempDecls = newValue; }
     579
     580        std::list< ObjectDecl * > & get_returnDecls() { return returnDecls; }
     581        void set_returnDecls( std::list< ObjectDecl * > newValue ) { returnDecls = newValue; }
     582
     583        std::list< Expression * > & get_dtors() { return dtors; }
     584        void set_dtors( std::list< Expression * > newValue ) { dtors = newValue; }
     585
     586        virtual ImplicitCopyCtorExpr *clone() const { return new ImplicitCopyCtorExpr( *this ); }
     587        virtual void accept( Visitor &v ) { v.visit( this ); }
     588        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     589        virtual void print( std::ostream &os, int indent = 0 ) const;
     590  private:
     591        ApplicationExpr * callExpr;
     592        std::list< ObjectDecl * > tempDecls;
     593        std::list< ObjectDecl * > returnDecls;
     594        std::list< Expression * > dtors;
     595};
     596
     597/// ValofExpr represents a GCC 'lambda expression'
    475598class UntypedValofExpr : public Expression {
    476599  public:
    477600        UntypedValofExpr( Statement *_body, Expression *_aname = 0 ) : Expression( _aname ), body ( _body ) {}
    478         virtual ~UntypedValofExpr() {}
     601        UntypedValofExpr( const UntypedValofExpr & other );
     602        virtual ~UntypedValofExpr();
    479603
    480604        Expression *get_value();
     
    488612        Statement *body;
    489613};
     614
     615/// CompoundLiteralExpr represents a C99 'compound literal'
     616class CompoundLiteralExpr : public Expression {
     617  public:
     618        CompoundLiteralExpr( Type * type, Initializer * initializer );
     619        CompoundLiteralExpr( const CompoundLiteralExpr &other );
     620        ~CompoundLiteralExpr();
     621
     622        Type * get_type() const { return type; }
     623        void set_type( Type * t ) { type = t; }
     624
     625        Initializer * get_initializer() const { return initializer; }
     626        void set_initializer( Initializer * i ) { initializer = i; }
     627
     628        virtual CompoundLiteralExpr *clone() const { return new CompoundLiteralExpr( *this ); }
     629        virtual void accept( Visitor &v ) { v.visit( this ); }
     630        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     631        virtual void print( std::ostream &os, int indent = 0 ) const;
     632  private:
     633        Type * type;
     634        Initializer * initializer;
     635};
     636
     637class RangeExpr : public Expression {
     638  public:
     639        RangeExpr( ConstantExpr *low, ConstantExpr *high );
     640        RangeExpr( const RangeExpr &other );
     641
     642        ConstantExpr * get_low() const { return low.get(); }
     643        ConstantExpr * get_high() const { return high.get(); }
     644        RangeExpr * set_low( ConstantExpr *low ) { RangeExpr::low.reset( low ); return this; }
     645        RangeExpr * set_high( ConstantExpr *high ) { RangeExpr::high.reset( high ); return this; }
     646
     647        virtual RangeExpr *clone() const { return new RangeExpr( *this ); }
     648        virtual void accept( Visitor &v ) { v.visit( this ); }
     649        virtual Expression *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     650        virtual void print( std::ostream &os, int indent = 0 ) const;
     651  private:
     652        std::unique_ptr<ConstantExpr> low, high;
     653};
     654
     655std::ostream & operator<<( std::ostream & out, Expression * expr );
    490656
    491657#endif // EXPRESSION_H
  • src/SynTree/FunctionDecl.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // FunctionDecl.cc -- 
     7// FunctionDecl.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jul 13 18:11:44 2015
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri May 06 15:59:48 2016
    1313// Update Count     : 19
    1414//
     
    1919#include "Statement.h"
    2020#include "Type.h"
    21 #include "utility.h"
     21#include "Attribute.h"
     22#include "Common/utility.h"
    2223
    23 FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn )
    24                 : Parent( name, sc, linkage ), type( type ), statements( statements ) {
     24FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, std::list< Attribute * > attributes )
     25                : Parent( name, sc, linkage, attributes ), type( type ), statements( statements ) {
    2526        set_isInline( isInline );
    2627        set_isNoreturn( isNoreturn );
     
    5253        using std::endl;
    5354        using std::string;
    54        
     55
    5556        if ( get_name() != "" ) {
    5657                os << get_name() << ": ";
     
    6566                os << "_Noreturn ";
    6667        } // if
     68
     69        printAll( get_attributes(), os, indent );
     70
    6771        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    6872                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
     
    8791        if ( statements ) {
    8892                os << string( indent + 2, ' ' ) << "with body " << endl;
     93                os << string( indent + 4, ' ' );
    8994                statements->print( os, indent + 4 );
    9095        } // if
     
    9499        using std::endl;
    95100        using std::string;
    96        
     101
    97102        if ( get_name() != "" ) {
    98103                os << get_name() << ": ";
     
    104109                os << "_Noreturn ";
    105110        } // if
     111
     112        // xxx - should printShort print attributes?
     113
    106114        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    107115                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
  • src/SynTree/FunctionType.cc

    r679864e1 r242d458  
    1818#include "Type.h"
    1919#include "Declaration.h"
    20 #include "utility.h"
     20#include "Common/utility.h"
    2121
    2222FunctionType::FunctionType( const Type::Qualifiers &tq, bool isVarArgs ) : Type( tq ), isVarArgs( isVarArgs ) {
  • src/SynTree/Initializer.cc

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

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

    r679864e1 r242d458  
    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
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jul 25 19:21:33 2015
    13 // Update Count     : 11
     12// Last Modified On : Thu Aug  4 11:23:21 2016
     13// Update Count     : 19
    1414//
    1515
     
    2222#include "Expression.h"
    2323#include "Constant.h"
    24 #include "utility.h"
     24#include "Common/utility.h"
    2525
    2626Mutator::Mutator() {}
     
    6363}
    6464
    65 Declaration *Mutator::mutate( ContextDecl *aggregateDecl ) {
     65Declaration *Mutator::mutate( TraitDecl *aggregateDecl ) {
    6666        handleAggregateDecl( aggregateDecl );
    6767        return aggregateDecl;
     
    126126Statement *Mutator::mutate( SwitchStmt *switchStmt ) {
    127127        switchStmt->set_condition( maybeMutate( switchStmt->get_condition(), *this ) );
    128         mutateAll( switchStmt->get_branches(), *this );
     128        mutateAll( switchStmt->get_statements(), *this );
    129129        return switchStmt;
    130 }
    131 
    132 Statement *Mutator::mutate( ChooseStmt *switchStmt ) {
    133         switchStmt->set_condition( maybeMutate( switchStmt->get_condition(), *this ) );
    134         mutateAll( switchStmt->get_branches(), *this );
    135         return switchStmt;
    136 }
    137 
    138 Statement *Mutator::mutate( FallthruStmt *fallthruStmt ) {
    139         return fallthruStmt;
    140130}
    141131
     
    180170        declStmt->set_decl( maybeMutate( declStmt->get_decl(), *this ) );
    181171        return declStmt;
     172}
     173
     174Statement *Mutator::mutate( ImplicitCtorDtorStmt *impCtorDtorStmt ) {
     175        impCtorDtorStmt->set_callStmt( maybeMutate( impCtorDtorStmt->get_callStmt(), *this ) );
     176        return impCtorDtorStmt;
    182177}
    183178
     
    251246}
    252247
     248Expression *Mutator::mutate( AlignofExpr *alignofExpr ) {
     249        mutateAll( alignofExpr->get_results(), *this );
     250        if ( alignofExpr->get_isType() ) {
     251                alignofExpr->set_type( maybeMutate( alignofExpr->get_type(), *this ) );
     252        } else {
     253                alignofExpr->set_expr( maybeMutate( alignofExpr->get_expr(), *this ) );
     254        }
     255        return alignofExpr;
     256}
     257
     258Expression *Mutator::mutate( UntypedOffsetofExpr *offsetofExpr ) {
     259        mutateAll( offsetofExpr->get_results(), *this );
     260        offsetofExpr->set_type( maybeMutate( offsetofExpr->get_type(), *this ) );
     261        return offsetofExpr;
     262}
     263
     264Expression *Mutator::mutate( OffsetofExpr *offsetofExpr ) {
     265        mutateAll( offsetofExpr->get_results(), *this );
     266        offsetofExpr->set_type( maybeMutate( offsetofExpr->get_type(), *this ) );
     267        offsetofExpr->set_member( maybeMutate( offsetofExpr->get_member(), *this ) );
     268        return offsetofExpr;
     269}
     270
     271Expression *Mutator::mutate( OffsetPackExpr *offsetPackExpr ) {
     272        mutateAll( offsetPackExpr->get_results(), *this );
     273        offsetPackExpr->set_type( maybeMutate( offsetPackExpr->get_type(), *this ) );
     274        return offsetPackExpr;
     275}
     276
    253277Expression *Mutator::mutate( AttrExpr *attrExpr ) {
    254278        mutateAll( attrExpr->get_results(), *this );
     
    308332}
    309333
     334Expression* Mutator::mutate( ImplicitCopyCtorExpr *impCpCtorExpr ) {
     335        impCpCtorExpr->set_callExpr( maybeMutate( impCpCtorExpr->get_callExpr(), *this ) );
     336        mutateAll( impCpCtorExpr->get_tempDecls(), *this );
     337        mutateAll( impCpCtorExpr->get_returnDecls(), *this );
     338        return impCpCtorExpr;
     339}
     340
    310341Expression *Mutator::mutate( UntypedValofExpr *valofExpr ) {
    311342        mutateAll( valofExpr->get_results(), *this );
    312343        return valofExpr;
     344}
     345
     346Expression *Mutator::mutate( CompoundLiteralExpr *compLitExpr ) {
     347        mutateAll( compLitExpr->get_results(), *this );
     348        compLitExpr->set_type( maybeMutate( compLitExpr->get_type(), *this ) );
     349        compLitExpr->set_initializer( maybeMutate( compLitExpr->get_initializer(), *this ) );
     350        return compLitExpr;
     351}
     352
     353Expression *Mutator::mutate( RangeExpr *rangeExpr ) {
     354        rangeExpr->set_low( maybeMutate( rangeExpr->get_low(), *this ) );
     355        rangeExpr->set_high( maybeMutate( rangeExpr->get_high(), *this ) );
     356        return rangeExpr;
    313357}
    314358
     
    364408}
    365409
    366 Type *Mutator::mutate( ContextInstType *aggregateUseType ) {
     410Type *Mutator::mutate( TraitInstType *aggregateUseType ) {
    367411        handleReferenceToType( aggregateUseType );
    368412        mutateAll( aggregateUseType->get_members(), *this );
     
    398442}
    399443
     444Type *Mutator::mutate( VarArgsType *varArgsType ) {
     445        mutateAll( varArgsType->get_forall(), *this );
     446        return varArgsType;
     447}
     448
    400449Initializer *Mutator::mutate( SingleInit *singleInit ) {
    401450        singleInit->set_value( singleInit->get_value()->acceptMutator( *this ) );
     
    407456        mutateAll( listInit->get_initializers(), *this );
    408457        return listInit;
     458}
     459
     460Initializer *Mutator::mutate( ConstructorInit *ctorInit ) {
     461        ctorInit->set_ctor( maybeMutate( ctorInit->get_ctor(), *this ) );
     462        ctorInit->set_init( maybeMutate( ctorInit->get_init(), *this ) );
     463        return ctorInit;
    409464}
    410465
  • src/SynTree/Mutator.h

    r679864e1 r242d458  
    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
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 23 23:24:18 2015
    13 // Update Count     : 7
     12// Last Modified On : Wed Aug  3 16:59:45 2016
     13// Update Count     : 12
    1414//
    1515#include <cassert>
    1616
    1717#include "SynTree.h"
    18 #include "SemanticError.h"
     18#include "Common/SemanticError.h"
    1919
    2020#ifndef MUTATOR_H
     
    3131        virtual Declaration* mutate( UnionDecl *aggregateDecl );
    3232        virtual Declaration* mutate( EnumDecl *aggregateDecl );
    33         virtual Declaration* mutate( ContextDecl *aggregateDecl );
     33        virtual Declaration* mutate( TraitDecl *aggregateDecl );
    3434        virtual TypeDecl* mutate( TypeDecl *typeDecl );
    3535        virtual Declaration* mutate( TypedefDecl *typeDecl );
     
    4242        virtual Statement* mutate( ForStmt *forStmt );
    4343        virtual Statement* mutate( SwitchStmt *switchStmt );
    44         virtual Statement* mutate( ChooseStmt *chooseStmt );
    45         virtual Statement* mutate( FallthruStmt *fallthruStmt );
    4644        virtual Statement* mutate( CaseStmt *caseStmt );
    4745        virtual Statement* mutate( BranchStmt *branchStmt );
     
    5250        virtual NullStmt* mutate( NullStmt *nullStmt );
    5351        virtual Statement* mutate( DeclStmt *declStmt );
     52        virtual Statement* mutate( ImplicitCtorDtorStmt *impCtorDtorStmt );
    5453
    5554        virtual Expression* mutate( ApplicationExpr *applicationExpr );
     
    6261        virtual Expression* mutate( MemberExpr *memberExpr );
    6362        virtual Expression* mutate( VariableExpr *variableExpr );
    64         virtual Expression* mutate( ConstantExpr *constantExpr ); 
     63        virtual Expression* mutate( ConstantExpr *constantExpr );
    6564        virtual Expression* mutate( SizeofExpr *sizeofExpr );
     65        virtual Expression* mutate( AlignofExpr *alignofExpr );
     66        virtual Expression* mutate( UntypedOffsetofExpr *offsetofExpr );
     67        virtual Expression* mutate( OffsetofExpr *offsetofExpr );
     68        virtual Expression* mutate( OffsetPackExpr *offsetPackExpr );
    6669        virtual Expression* mutate( AttrExpr *attrExpr );
    6770        virtual Expression* mutate( LogicalExpr *logicalExpr );
     
    7275        virtual Expression* mutate( TypeExpr *typeExpr );
    7376        virtual Expression* mutate( AsmExpr *asmExpr );
     77        virtual Expression* mutate( ImplicitCopyCtorExpr *impCpCtorExpr );
    7478        virtual Expression* mutate( UntypedValofExpr *valofExpr );
     79        virtual Expression* mutate( CompoundLiteralExpr *compLitExpr );
     80        virtual Expression* mutate( RangeExpr *rangeExpr );
    7581
    7682        virtual Type* mutate( VoidType *basicType );
     
    8288        virtual Type* mutate( UnionInstType *aggregateUseType );
    8389        virtual Type* mutate( EnumInstType *aggregateUseType );
    84         virtual Type* mutate( ContextInstType *aggregateUseType );
     90        virtual Type* mutate( TraitInstType *aggregateUseType );
    8591        virtual Type* mutate( TypeInstType *aggregateUseType );
    8692        virtual Type* mutate( TupleType *tupleType );
    8793        virtual Type* mutate( TypeofType *typeofType );
    8894        virtual Type* mutate( AttrType *attrType );
     95        virtual Type* mutate( VarArgsType *varArgsType );
    8996
    9097        virtual Initializer* mutate( SingleInit *singleInit );
    9198        virtual Initializer* mutate( ListInit *listInit );
     99        virtual Initializer* mutate( ConstructorInit *ctorInit );
    92100
    93101        virtual Subrange *mutate( Subrange *subrange );
     
    103111inline TreeType *maybeMutate( TreeType *tree, MutatorType &mutator ) {
    104112        if ( tree ) {
    105                 TreeType *newnode = dynamic_cast< TreeType* >( tree->acceptMutator( mutator ) );
     113                TreeType *newnode = dynamic_cast< TreeType * >( tree->acceptMutator( mutator ) );
    106114                assert( newnode );
    107115                return newnode;
  • src/SynTree/NamedTypeDecl.cc

    r679864e1 r242d458  
    1616#include "Declaration.h"
    1717#include "Type.h"
    18 #include "utility.h"
     18#include "Common/utility.h"
    1919
    2020NamedTypeDecl::NamedTypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *base )
  • src/SynTree/ObjectDecl.cc

    r679864e1 r242d458  
    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
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jul 13 18:08:27 2015
    13 // Update Count     : 16
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri May 13 13:23:32 2016
     13// Update Count     : 30
    1414//
    1515
     
    1818#include "Initializer.h"
    1919#include "Expression.h"
    20 #include "utility.h"
     20#include "Attribute.h"
     21#include "Common/utility.h"
     22#include "Statement.h"
    2123
    22 ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, bool isInline, bool isNoreturn )
    23         : Parent( name, sc, linkage ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
     24ObjectDecl::ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, const std::list< Attribute * > attributes, bool isInline, bool isNoreturn )
     25        : Parent( name, sc, linkage, attributes ), type( type ), init( init ), bitfieldWidth( bitfieldWidth ) {
    2426        set_isInline( isInline );
    2527        set_isNoreturn( isNoreturn );
     
    4547        } // if
    4648
     49        printAll( get_attributes(), os, indent );
     50
    4751        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    4852                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
     
    5256                get_type()->print( os, indent );
    5357        } else {
    54                 os << "untyped entity ";
     58                os << " untyped entity ";
    5559        } // if
    5660
    5761        if ( init ) {
    58                 os << "with initializer ";
     62                os << " with initializer ";
    5963                init->print( os, indent );
     64                os << std::endl << std::string(indent, ' ');
     65                os << "maybeConstructed? " << init->get_maybeConstructed();
    6066        } // if
    6167
    6268        if ( bitfieldWidth ) {
    63                 os << "with bitfield width ";
     69                os << std::string(indent, ' ');
     70                os << " with bitfield width ";
    6471                bitfieldWidth->print( os );
    6572        } // if
     
    6976#if 0
    7077        if ( get_mangleName() != "") {
    71                 os << get_mangleName() << ": "; 
    72         } else 
     78                os << get_mangleName() << ": ";
     79        } else
    7380#endif
    7481        if ( get_name() != "" ) {
    7582                os << get_name() << ": ";
    7683        } // if
     84
     85        // xxx - should printShort print attributes?
    7786
    7887        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
  • src/SynTree/PointerType.cc

    r679864e1 r242d458  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 10:15:16 2015
    13 // Update Count     : 2
     12// Last Modified On : Tue Dec 15 15:39:10 2015
     13// Update Count     : 5
    1414//
    1515
    1616#include "Type.h"
    1717#include "Expression.h"
    18 #include "utility.h"
     18#include "Common/utility.h"
    1919
    2020PointerType::PointerType( const Type::Qualifiers &tq, Type *base )
    2121        : Type( tq ), base( base ), dimension( 0 ), isVarLen( false ), isStatic( false ) {
    22         base->set_isLvalue( false );
    2322}
    2423
    2524PointerType::PointerType( const Type::Qualifiers &tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic )
    2625        : Type( tq ), base( base ), dimension( dimension ), isVarLen( isVarLen ), isStatic( isStatic ) {
    27         base->set_isLvalue( false );
    2826}
    2927
  • src/SynTree/ReferenceToType.cc

    r679864e1 r242d458  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 08:31:48 2015
    13 // Update Count     : 4
     12// Last Modified On : Wed Jul 13 18:03:30 2016
     13// Update Count     : 9
    1414//
    1515
     
    2121#include "Expression.h"
    2222#include "TypeSubstitution.h"
    23 #include "utility.h"
     23#include "Common/utility.h"
    2424
    2525ReferenceToType::ReferenceToType( const Type::Qualifiers &tq, const std::string &name ) : Type( tq ), name( name ) {
     
    5959std::string StructInstType::typeString() const { return "struct"; }
    6060
     61std::list<TypeDecl*>* StructInstType::get_baseParameters() {
     62        if ( ! baseStruct ) return NULL;
     63        return &baseStruct->get_parameters();
     64}
     65
    6166void StructInstType::lookup( const std::string &name, std::list< Declaration* > &foundDecls ) const {
    6267        assert( baseStruct );
     
    6469}
    6570
     71void StructInstType::print( std::ostream &os, int indent ) const {
     72        using std::endl;
     73
     74        if ( baseStruct == NULL ) ReferenceToType::print( os, indent );
     75        else {
     76                Type::print( os, indent );
     77                os << "instance of " << typeString() << " " << name << " with body " << baseStruct->has_body() << " ";
     78                if ( ! parameters.empty() ) {
     79                        os << endl << std::string( indent, ' ' ) << "with parameters" << endl;
     80                        printAll( parameters, os, indent+2 );
     81                } // if
     82        } // if
     83}
     84
    6685std::string UnionInstType::typeString() const { return "union"; }
     86
     87std::list<TypeDecl*>* UnionInstType::get_baseParameters() {
     88        if ( ! baseUnion ) return NULL;
     89        return &baseUnion->get_parameters();
     90}
    6791
    6892void UnionInstType::lookup( const std::string &name, std::list< Declaration* > &foundDecls ) const {
     
    7195}
    7296
     97void UnionInstType::print( std::ostream &os, int indent ) const {
     98        using std::endl;
     99
     100        if ( baseUnion == NULL ) ReferenceToType::print( os, indent );
     101        else {
     102                Type::print( os, indent );
     103                os << "instance of " << typeString() << " " << name << " with body " << baseUnion->has_body() << " ";
     104                if ( ! parameters.empty() ) {
     105                        os << endl << std::string( indent, ' ' ) << "with parameters" << endl;
     106                        printAll( parameters, os, indent+2 );
     107                } // if
     108        } // if
     109}
     110
    73111std::string EnumInstType::typeString() const { return "enum"; }
    74112
    75 std::string ContextInstType::typeString() const { return "context"; }
     113std::string TraitInstType::typeString() const { return "context"; }
    76114
    77 ContextInstType::ContextInstType( const ContextInstType &other ) : Parent( other ) {
     115TraitInstType::TraitInstType( const TraitInstType &other ) : Parent( other ) {
    78116        cloneAll( other.members, members );
    79117}
    80118
    81 ContextInstType::~ContextInstType() {
     119TraitInstType::~TraitInstType() {
    82120        deleteAll( members );
    83121}
  • src/SynTree/Statement.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Statement.cc -- 
     7// Statement.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 : Sat Jul 25 12:19:50 2015
    13 // Update Count     : 53
     12// Last Modified On : Thu Aug  4 11:25:20 2016
     13// Update Count     : 61
    1414//
    1515
     
    3636ExprStmt::ExprStmt( std::list<Label> _labels, Expression *_expr ) : Statement( _labels ), expr( _expr ) {}
    3737
    38 ExprStmt::~ExprStmt() {}
     38ExprStmt::ExprStmt( const ExprStmt &other ) : Statement( other ), expr( maybeClone( other.expr ) ) {}
     39
     40ExprStmt::~ExprStmt() {
     41        delete expr;
     42}
    3943
    4044void ExprStmt::print( std::ostream &os, int indent ) const {
    41         os << string( indent, ' ' ) << "Expression Statement:" << endl;
     45        os << "Expression Statement:" << endl << std::string( indent + 2, ' ' );
    4246        expr->print( os, indent + 2 );
    43 } 
     47}
    4448
    4549
    4650AsmStmt::AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> output, std::list<Expression *> input, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels ) : Statement( labels ), voltile( voltile ), instruction( instruction ), output( output ), input( input ), clobber( clobber ), gotolabels( gotolabels ) {}
     51
     52AsmStmt::AsmStmt( const AsmStmt & other ) : Statement( other ), voltile( other.voltile ), instruction( maybeClone( other.instruction ) ), gotolabels( other.gotolabels ) {
     53  cloneAll( other.output, output );
     54  cloneAll( other.input, input );
     55  cloneAll( other.clobber, clobber );
     56}
    4757
    4858AsmStmt::~AsmStmt() {
     
    6070                os << endl << std::string( indent, ' ' ) << "output: " << endl;
    6171                printAll( output, os, indent + 2 );
    62         } // if 
     72        } // if
    6373        if ( ! input.empty() ) {
    6474                os << std::string( indent, ' ' ) << "input: " << endl << std::string( indent, ' ' );
     
    6979                printAll( clobber, os, indent + 2 );
    7080        } // if
    71 } 
     81}
    7282
    7383
     
    7787        Statement( labels ), originalTarget( _target ), target( _target ), computedTarget( NULL ), type( _type ) {
    7888        //actually this is a syntactic error signaled by the parser
    79         if ( type == BranchStmt::Goto && target.size() == 0 )
     89        if ( type == BranchStmt::Goto && target.empty() )
    8090                throw SemanticError("goto without target");
    8191}
     
    93103ReturnStmt::ReturnStmt( std::list<Label> labels, Expression *_expr, bool throwP ) : Statement( labels ), expr( _expr ), isThrow( throwP ) {}
    94104
     105ReturnStmt::ReturnStmt( const ReturnStmt & other ) : Statement( other ), expr( maybeClone( other.expr ) ), isThrow( other.isThrow ) {}
     106
    95107ReturnStmt::~ReturnStmt() {
    96108        delete expr;
     
    98110
    99111void ReturnStmt::print( std::ostream &os, int indent ) const {
    100         os << std::string( indent, ' ' ) << string ( isThrow? "Throw":"Return" ) << " Statement, returning: ";
    101         if ( expr != 0 ) expr->print( os );
     112        os << string ( isThrow? "Throw":"Return" ) << " Statement, returning: ";
     113        if ( expr != 0 ) {
     114                os << endl << string( indent+2, ' ' );
     115                expr->print( os, indent + 2 );
     116        }
    102117        os << endl;
    103118}
     
    106121        Statement( _labels ), condition( _condition ), thenPart( _thenPart ), elsePart( _elsePart ) {}
    107122
     123IfStmt::IfStmt( const IfStmt & other ) :
     124        Statement( other ), condition( maybeClone( other.condition ) ), thenPart( maybeClone( other.thenPart ) ), elsePart( maybeClone( other.elsePart ) ) {}
     125
    108126IfStmt::~IfStmt() {}
    109127
    110128void IfStmt::print( std::ostream &os, int indent ) const {
    111         os << string( indent, ' ' ) << "If on condition: " << endl ;
     129        os << "If on condition: " << endl ;
     130        os << string( indent+4, ' ' );
    112131        condition->print( os, indent + 4 );
    113132
    114         os << string( indent, ' ' ) << ".... and branches: " << endl;
    115 
     133        os << string( indent+2, ' ' ) << "... then: " << endl;
     134
     135        os << string( indent+4, ' ' );
    116136        thenPart->print( os, indent + 4 );
    117137
    118138        if ( elsePart != 0 ) {
     139                os << string( indent+2, ' ' ) << "... else: " << endl;
     140                os << string( indent+4, ' ' );
    119141                elsePart->print( os, indent + 4 );
    120142        } // if
    121143}
    122144
    123 SwitchStmt::SwitchStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_branches ):
    124         Statement( _labels ), condition( _condition ), branches( _branches ) {
     145SwitchStmt::SwitchStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_statements ):
     146        Statement( _labels ), condition( _condition ), statements( _statements ) {
     147}
     148
     149SwitchStmt::SwitchStmt( const SwitchStmt & other ):
     150        Statement( other ), condition( maybeClone( other.condition ) ) {
     151        cloneAll( other.statements, statements );
    125152}
    126153
    127154SwitchStmt::~SwitchStmt() {
    128155        delete condition;
    129         // destroy branches
    130 }
    131 
    132 void SwitchStmt::add_case( CaseStmt *c ) {}
     156        // destroy statements
     157}
    133158
    134159void SwitchStmt::print( std::ostream &os, int indent ) const {
    135         os << string( indent, ' ' ) << "Switch on condition: ";
     160        os << "Switch on condition: ";
    136161        condition->print( os );
    137162        os << endl;
    138163
    139         // branches
     164        // statements
    140165        std::list<Statement *>::const_iterator i;
    141         for ( i = branches.begin(); i != branches.end(); i++)
     166        for ( i = statements.begin(); i != statements.end(); i++)
    142167                (*i)->print( os, indent + 4 );
    143168
    144         //for_each( branches.begin(), branches.end(), mem_fun( bind1st(&Statement::print ), os ));
    145 }
    146 
    147 CaseStmt::CaseStmt( std::list<Label> _labels, Expression *_condition, std::list<Statement *> &_statements, bool deflt ) throw ( SemanticError ) : 
     169        //for_each( statements.begin(), statements.end(), mem_fun( bind1st(&Statement::print ), os ));
     170}
     171
     172CaseStmt::CaseStmt( std::list<Label> _labels, Expression *_condition, std::list<Statement *> &_statements, bool deflt ) throw ( SemanticError ) :
    148173        Statement( _labels ), condition( _condition ), stmts( _statements ), _isDefault( deflt ) {
    149174        if ( isDefault() && condition != 0 )
     
    151176}
    152177
     178CaseStmt::CaseStmt( const CaseStmt & other ) :
     179        Statement( other ), condition( maybeClone(other.condition ) ), _isDefault( other._isDefault ) {
     180        cloneAll( other.stmts, stmts );
     181}
     182
    153183CaseStmt::~CaseStmt() {
    154184        delete condition;
    155185}
    156186
    157 CaseStmt * CaseStmt::makeDefault( std::list<Label> labels, std::list<Statement *> branches ) {
    158         return new CaseStmt( labels, 0, branches, true );
     187CaseStmt * CaseStmt::makeDefault( std::list<Label> labels, std::list<Statement *> stmts ) {
     188        return new CaseStmt( labels, 0, stmts, true );
    159189}
    160190
     
    176206}
    177207
    178 //ChooseStmt::ChooseStmt( std::list<Label> labels, Expression *condition, Statement *body ) {}
    179 ChooseStmt::ChooseStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_branches ):
    180         Statement( _labels ), condition( _condition ), branches( _branches ) {
    181 }
    182 
    183 ChooseStmt::~ChooseStmt() {
    184         delete condition;
    185 }
    186 
    187 void ChooseStmt::add_case( CaseStmt *c ) {}
    188 
    189 void ChooseStmt::print( std::ostream &os, int indent ) const {
    190         os << string( indent, ' ' ) << "Choose on condition: ";
    191         condition->print( os );
    192         os << endl;
    193 
    194         // branches
    195         std::list<Statement *>::const_iterator i;
    196         for ( i = branches.begin(); i != branches.end(); i++)
    197                 (*i )->print( os, indent + 4 );
    198 
    199         //for_each( branches.begin(), branches.end(), mem_fun( bind1st(&Statement::print ), os ));
    200 }
    201 
    202 void FallthruStmt::print( std::ostream &os, int indent ) const {
    203         os << string( indent, ' ' ) << "Fall-through statement" << endl;
    204 }
    205 
    206208WhileStmt::WhileStmt( std::list<Label> labels, Expression *condition_, Statement *body_, bool isDoWhile_ ):
    207209        Statement( labels ), condition( condition_), body( body_), isDoWhile( isDoWhile_) {
    208210}
    209211
     212WhileStmt::WhileStmt( const WhileStmt & other ):
     213        Statement( other ), condition( maybeClone( other.condition ) ), body( maybeClone( other.body ) ), isDoWhile( other.isDoWhile ) {
     214}
     215
    210216WhileStmt::~WhileStmt() {
    211217        delete body;
     
    213219
    214220void WhileStmt::print( std::ostream &os, int indent ) const {
    215         os << string( indent, ' ' ) << "While on condition: " << endl ;
     221        os << "While on condition: " << endl ;
    216222        condition->print( os, indent + 4 );
    217223
     
    223229ForStmt::ForStmt( std::list<Label> labels, std::list<Statement *> initialization_, Expression *condition_, Expression *increment_, Statement *body_ ):
    224230        Statement( labels ), initialization( initialization_ ), condition( condition_ ), increment( increment_ ), body( body_ ) {
     231}
     232
     233ForStmt::ForStmt( const ForStmt & other ):
     234        Statement( other ), condition( maybeClone( other.condition ) ), increment( maybeClone( other.increment ) ), body( maybeClone( other.body ) ) {
     235                cloneAll( other.initialization, initialization );
     236
    225237}
    226238
     
    233245
    234246void ForStmt::print( std::ostream &os, int indent ) const {
    235         os << string( indent, ' ' ) << "Labels: {";
     247        os << "Labels: {";
    236248        for ( std::list<Label>::const_iterator it = get_labels().begin(); it != get_labels().end(); ++it) {
    237249                os << *it << ",";
     
    241253        os << string( indent, ' ' ) << "For Statement" << endl ;
    242254
    243         os << string( indent + 2, ' ' ) << "initialization: \n"; 
     255        os << string( indent + 2, ' ' ) << "initialization: \n";
    244256        for ( std::list<Statement *>::const_iterator it = initialization.begin(); it != initialization.end(); ++it ) {
     257                os << string( indent + 4, ' ' );
    245258                (*it)->print( os, indent + 4 );
    246259        }
    247260
    248         os << "\n" << string( indent + 2, ' ' ) << "condition: \n";
    249         if ( condition != 0 )
     261        os << "\n" << string( indent + 2, ' ' ) << "condition: \n";
     262        if ( condition != 0 ) {
     263                os << string( indent + 4, ' ' );
    250264                condition->print( os, indent + 4 );
    251 
    252         os << "\n" << string( indent + 2, ' ' ) << "increment: \n";
    253         if ( increment != 0 )
     265        }
     266
     267        os << "\n" << string( indent + 2, ' ' ) << "increment: \n";
     268        if ( increment != 0 ) {
     269                os << string( indent + 4, ' ' );
    254270                increment->print( os, indent + 4 );
    255 
    256         os << "\n" << string( indent + 2, ' ' ) << "statement block: \n";
    257         if ( body != 0 )
     271        }
     272
     273        os << "\n" << string( indent + 2, ' ' ) << "statement block: \n";
     274        if ( body != 0 ) {
     275                os << string( indent + 4, ' ' );
    258276                body->print( os, indent + 4 );
     277        }
    259278
    260279        os << endl;
     
    265284}
    266285
    267 TryStmt::TryStmt( const TryStmt &other ) : Statement( other.labels ) {
    268         block = other.block;
    269         std::copy( other.handlers.begin(), other.handlers.end(), back_inserter( handlers ) );
    270         finallyBlock = other.finallyBlock;
     286TryStmt::TryStmt( const TryStmt &other ) : Statement( other ), block( maybeClone( other.block ) ), finallyBlock( maybeClone( other.finallyBlock ) ) {
     287        cloneAll( other.handlers, handlers );
    271288}
    272289
     
    276293
    277294void TryStmt::print( std::ostream &os, int indent ) const {
    278         os << string( indent, ' ' ) << "Try Statement" << endl;
     295        os << "Try Statement" << endl;
    279296        os << string( indent + 2, ' ' ) << "with block: " << endl;
    280297        block->print( os, indent + 4 );
     
    296313}
    297314
     315CatchStmt::CatchStmt( const CatchStmt & other ) :
     316        Statement( other ), decl ( maybeClone( other.decl ) ), body( maybeClone( other.body ) ), catchRest ( other.catchRest ) {
     317}
     318
    298319CatchStmt::~CatchStmt() {
    299320        delete decl;
     
    302323
    303324void CatchStmt::print( std::ostream &os, int indent ) const {
    304         os << string( indent, ' ' ) << "Catch Statement" << endl;
     325        os << "Catch Statement" << endl;
    305326
    306327        os << string( indent, ' ' ) << "... catching" << endl;
     
    319340}
    320341
     342FinallyStmt::FinallyStmt( const FinallyStmt & other ) : Statement( other ), block( maybeClone( other.block ) ) {
     343}
     344
    321345FinallyStmt::~FinallyStmt() {
    322346        delete block;
     
    324348
    325349void FinallyStmt::print( std::ostream &os, int indent ) const {
    326         os << string( indent, ' ' ) << "Finally Statement" << endl;
     350        os << "Finally Statement" << endl;
    327351        os << string( indent + 2, ' ' ) << "with block: " << endl;
    328352        block->print( os, indent + 4 );
     
    331355NullStmt::NullStmt( std::list<Label> labels ) : CompoundStmt( labels ) {}
    332356NullStmt::NullStmt() : CompoundStmt( std::list<Label>() ) {}
    333 NullStmt::~NullStmt() {}
    334357
    335358void NullStmt::print( std::ostream &os, int indent ) const {
    336         os << string( indent, ' ' ) << "Null Statement" << endl ;
     359        os << "Null Statement" << endl ;
     360}
     361
     362ImplicitCtorDtorStmt::ImplicitCtorDtorStmt( Statement * callStmt ) : Statement( std::list<Label>() ), callStmt( callStmt ) {
     363        assert( callStmt );
     364}
     365
     366ImplicitCtorDtorStmt::ImplicitCtorDtorStmt( const ImplicitCtorDtorStmt & other ) : Statement( other ), callStmt( maybeClone( other.callStmt ) ) {
     367}
     368
     369ImplicitCtorDtorStmt::~ImplicitCtorDtorStmt() {
     370        delete callStmt;
     371}
     372
     373void ImplicitCtorDtorStmt::print( std::ostream &os, int indent ) const {
     374        os << "Implicit Ctor Dtor Statement" << endl;
     375        os << string( indent + 2, ' ' ) << "with Ctor/Dtor: ";
     376        callStmt->print( os, indent + 2);
     377        os << endl;
     378}
     379
     380std::ostream & operator<<( std::ostream & out, Statement * statement ) {
     381        statement->print( out );
     382        return out;
    337383}
    338384
  • src/SynTree/Statement.h

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Statement.h -- 
     7// Statement.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 : Sat Jul 25 18:25:37 2015
    13 // Update Count     : 44
     12// Last Modified On : Thu Aug  4 11:26:02 2016
     13// Update Count     : 64
    1414//
    1515
     
    2121#include "Mutator.h"
    2222#include "Common/SemanticError.h"
     23#include "Type.h"
     24#include "Label.h"
    2325
    2426class Statement {
     
    5759  public:
    5860        ExprStmt( std::list<Label> labels, Expression *expr );
     61        ExprStmt( const ExprStmt &other );
    5962        virtual ~ExprStmt();
    6063
     
    7376  public:
    7477        AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> input, std::list<Expression *> output, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels );
     78        AsmStmt( const AsmStmt &other );
    7579        virtual ~AsmStmt();
    7680
     
    103107  public:
    104108        IfStmt( std::list<Label> labels, Expression *condition, Statement *thenPart, Statement *elsePart );
     109        IfStmt( const IfStmt &other );
    105110        virtual ~IfStmt();
    106111
     
    111116        Statement *get_elsePart() { return elsePart; }
    112117        void set_elsePart( Statement *newValue ) { elsePart = newValue; }
    113        
     118
    114119        virtual IfStmt *clone() const { return new IfStmt( *this ); }
    115120        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    124129class SwitchStmt : public Statement {
    125130  public:
    126         SwitchStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &branches );
     131        SwitchStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &statements );
     132        SwitchStmt( const SwitchStmt &other );
    127133        virtual ~SwitchStmt();
    128134
     
    130136        void set_condition( Expression *newValue ) { condition = newValue; }
    131137
    132         std::list<Statement *> & get_branches() { return branches; }
    133         void add_case( CaseStmt * );
     138        std::list<Statement *> & get_statements() { return statements; }
    134139
    135140        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    140145  private:
    141146        Expression * condition;
    142         std::list<Statement *> branches; // should be list of CaseStmt
    143 };
    144 
    145 class ChooseStmt : public Statement {
    146   public:
    147         ChooseStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &branches );
    148         virtual ~ChooseStmt();
    149 
    150         Expression *get_condition() { return condition; }
    151         void set_condition( Expression *newValue ) { condition = newValue; }
    152 
    153         std::list<Statement *>& get_branches() { return branches; }
    154         void add_case( CaseStmt * );
    155 
    156         virtual void accept( Visitor &v ) { v.visit( this ); }
    157         virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    158 
    159         virtual ChooseStmt *clone() const { return new ChooseStmt( *this ); }
    160         virtual void print( std::ostream &os, int indent = 0 ) const;
    161   private:
    162         Expression *condition;
    163         std::list<Statement *> branches; // should be list of CaseStmt
    164 };
    165 
    166 class FallthruStmt : public Statement {
    167   public:
    168         FallthruStmt( std::list<Label> labels ) : Statement( labels ) { }
    169 
    170         virtual void accept( Visitor &v ) { v.visit( this ); }
    171         virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    172 
    173         virtual FallthruStmt *clone() const { return new FallthruStmt( *this ); }
    174         virtual void print( std::ostream &os, int indent = 0 ) const;
     147        std::list<Statement *> statements;
    175148};
    176149
    177150class CaseStmt : public Statement {
    178151  public:
    179         CaseStmt( std::list<Label> labels, Expression *conditions,
    180               std::list<Statement *> &stmts, bool isdef = false ) throw(SemanticError);
     152        CaseStmt( std::list<Label> labels, Expression *conditions, std::list<Statement *> &stmts, bool isdef = false ) throw(SemanticError);
     153        CaseStmt( const CaseStmt &other );
    181154        virtual ~CaseStmt();
    182155
    183         static CaseStmt * makeDefault( std::list<Label> labels = std::list<Label>(),
    184                 std::list<Statement *> stmts = std::list<Statement *>() );
     156        static CaseStmt * makeDefault( std::list<Label> labels = std::list<Label>(), std::list<Statement *> stmts = std::list<Statement *>() );
    185157
    186158        bool isDefault() const { return _isDefault; }
     
    192164        std::list<Statement *> &get_statements() { return stmts; }
    193165        void set_statements( std::list<Statement *> &newValue ) { stmts = newValue; }
    194        
     166
    195167        virtual void accept( Visitor &v ) { v.visit( this ); }
    196168        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     
    208180        WhileStmt( std::list<Label> labels, Expression *condition,
    209181               Statement *body, bool isDoWhile = false );
     182        WhileStmt( const WhileStmt &other );
    210183        virtual ~WhileStmt();
    211184
     
    216189        bool get_isDoWhile() { return isDoWhile; }
    217190        void set_isDoWhile( bool newValue ) { isDoWhile = newValue; }
    218        
     191
    219192        virtual WhileStmt *clone() const { return new WhileStmt( *this ); }
    220193        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    231204        ForStmt( std::list<Label> labels, std::list<Statement *> initialization,
    232205             Expression *condition = 0, Expression *increment = 0, Statement *body = 0 );
     206        ForStmt( const ForStmt &other );
    233207        virtual ~ForStmt();
    234208
     
    241215        Statement *get_body() { return body; }
    242216        void set_body( Statement *newValue ) { body = newValue; }
    243        
     217
    244218        virtual ForStmt *clone() const { return new ForStmt( *this ); }
    245219        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    259233        BranchStmt( std::list<Label> labels, Label target, Type ) throw (SemanticError);
    260234        BranchStmt( std::list<Label> labels, Expression *computedTarget, Type ) throw (SemanticError);
    261         virtual ~BranchStmt() {}
    262235
    263236        Label get_originalTarget() { return originalTarget; }
    264237        Label get_target() { return target; }
    265238        void set_target( Label newValue ) { target = newValue; }
    266        
     239
    267240        Expression *get_computedTarget() { return computedTarget; }
    268241        void set_target( Expression * newValue ) { computedTarget = newValue; }
     
    286259  public:
    287260        ReturnStmt( std::list<Label> labels, Expression *expr, bool throwP = false );
     261        ReturnStmt( const ReturnStmt &other );
    288262        virtual ~ReturnStmt();
    289263
    290264        Expression *get_expr() { return expr; }
    291265        void set_expr( Expression *newValue ) { expr = newValue; }
    292        
     266
    293267        virtual ReturnStmt *clone() const { return new ReturnStmt( *this ); }
    294268        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    305279        NullStmt();
    306280        NullStmt( std::list<Label> labels );
    307         virtual ~NullStmt();
    308281
    309282        virtual NullStmt *clone() const { return new NullStmt( *this ); }
     
    311284        virtual NullStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    312285        virtual void print( std::ostream &os, int indent = 0 ) const;
    313        
    314   private:
    315 };
    316 
    317 class TryStmt : public Statement { 
     286
     287  private:
     288};
     289
     290class TryStmt : public Statement {
    318291  public:
    319292        TryStmt( std::list<Label> labels, CompoundStmt *tryBlock, std::list<Statement *> &handlers, FinallyStmt *finallyBlock = 0 );
     
    332305        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    333306        virtual void print( std::ostream &os, int indent = 0 ) const;
    334        
     307
    335308  private:
    336309        CompoundStmt *block;
    337310        std::list<Statement *> handlers;
    338311        FinallyStmt *finallyBlock;
    339 }; 
     312};
    340313
    341314class CatchStmt : public Statement {
    342315  public:
    343316        CatchStmt( std::list<Label> labels, Declaration *decl, Statement *body, bool isCatchRest = false );
     317        CatchStmt( const CatchStmt &other );
    344318        virtual ~CatchStmt();
    345319
     
    349323        Statement *get_body() { return body; }
    350324        void set_body( Statement *newValue ) { body = newValue; }
    351        
     325
    352326        virtual CatchStmt *clone() const { return new CatchStmt( *this ); }
    353327        virtual void accept( Visitor &v ) { v.visit( this ); }
    354328        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    355329        virtual void print( std::ostream &os, int indent = 0 ) const;
    356        
     330
    357331  private:
    358332        Declaration *decl;
     
    361335};
    362336
    363 class FinallyStmt : public Statement { 
     337class FinallyStmt : public Statement {
    364338  public:
    365339        FinallyStmt( std::list<Label> labels, CompoundStmt *block );
     340        FinallyStmt( const FinallyStmt &other );
    366341        virtual ~FinallyStmt();
    367342
    368343        CompoundStmt *get_block() const { return block; }
    369344        void set_block( CompoundStmt *newValue ) { block = newValue; }
    370        
     345
    371346        virtual FinallyStmt *clone() const { return new FinallyStmt( *this ); }
    372347        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    375350  private:
    376351        CompoundStmt *block;
    377 }; 
     352};
    378353
    379354
     
    385360        virtual ~DeclStmt();
    386361
    387         Declaration *get_decl() { return decl; }
     362        Declaration *get_decl() const { return decl; }
    388363        void set_decl( Declaration *newValue ) { decl = newValue; }
    389364
     
    395370        Declaration *decl;
    396371};
     372
     373
     374/// represents an implicit application of a constructor or destructor. Qualifiers are replaced
     375/// immediately before and after the call so that qualified objects can be constructed
     376/// with the same functions as unqualified objects.
     377class ImplicitCtorDtorStmt : public Statement {
     378  public:
     379        ImplicitCtorDtorStmt( Statement * callStmt );
     380        ImplicitCtorDtorStmt( const ImplicitCtorDtorStmt & other );
     381        virtual ~ImplicitCtorDtorStmt();
     382
     383        Statement *get_callStmt() const { return callStmt; }
     384        void set_callStmt( Statement * newValue ) { callStmt = newValue; }
     385
     386        virtual ImplicitCtorDtorStmt *clone() const { return new ImplicitCtorDtorStmt( *this ); }
     387        virtual void accept( Visitor &v ) { v.visit( this ); }
     388        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     389        virtual void print( std::ostream &os, int indent = 0 ) const;
     390
     391  private:
     392        // Non-owned pointer to the constructor/destructor statement
     393        Statement * callStmt;
     394};
     395
     396
     397std::ostream & operator<<( std::ostream & out, Statement * statement );
    397398
    398399#endif // STATEMENT_H
  • src/SynTree/SynTree.h

    r679864e1 r242d458  
    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
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 23 23:25:04 2015
    13 // Update Count     : 3
     12// Last Modified On : Wed Aug  3 17:02:34 2016
     13// Update Count     : 7
    1414//
    1515
     
    3030class UnionDecl;
    3131class EnumDecl;
    32 class ContextDecl;
     32class TraitDecl;
    3333class NamedTypeDecl;
    3434class TypeDecl;
     
    4545class ForStmt;
    4646class SwitchStmt;
    47 class ChooseStmt;
    48 class FallthruStmt;
    4947class CaseStmt;
    5048class BranchStmt;
     
    5654class DeclStmt;
    5755class NullStmt;
     56class ImplicitCtorDtorStmt;
    5857
    5958class Expression;
     
    6968class ConstantExpr;
    7069class SizeofExpr;
     70class AlignofExpr;
     71class UntypedOffsetofExpr;
     72class OffsetofExpr;
     73class OffsetPackExpr;
    7174class AttrExpr;
    7275class LogicalExpr;
     
    7780class TypeExpr;
    7881class AsmExpr;
     82class ImplicitCopyCtorExpr;
    7983class UntypedValofExpr;
     84class CompoundLiteralExpr;
     85class RangeExpr;
    8086
    8187class Type;
     
    8995class UnionInstType;
    9096class EnumInstType;
    91 class ContextInstType;
     97class TraitInstType;
    9298class TypeInstType;
    9399class TupleType;
    94100class TypeofType;
    95101class AttrType;
     102class VarArgsType;
    96103
    97104class Initializer;
    98105class SingleInit;
    99106class ListInit;
     107class ConstructorInit;
    100108
    101109class Subrange;
     
    104112class Constant;
    105113
    106 typedef std::string Label;
     114// typedef std::string Label;
     115class Label;
    107116typedef unsigned int UniqueId;
    108117
    109118class TypeSubstitution;
     119
     120// gcc attribute
     121class Attribute;
    110122
    111123#endif // SYNTREE_H
  • src/SynTree/TupleExpr.cc

    r679864e1 r242d458  
    1515
    1616#include "Expression.h"
    17 #include "utility.h"
     17#include "Common/utility.h"
    1818
    1919TupleExpr::TupleExpr( Expression *_aname ) : Expression( _aname ) {
  • src/SynTree/TupleType.cc

    r679864e1 r242d458  
    1515
    1616#include "Type.h"
    17 #include "utility.h"
     17#include "Common/utility.h"
    1818
    1919TupleType::TupleType( const Type::Qualifiers &tq ) : Type( tq ) {
  • src/SynTree/Type.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Type.cc -- 
     7// Type.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul  9 16:45:13 2015
    13 // Update Count     : 3
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Dec 09 14:08:48 2015
     13// Update Count     : 4
    1414//
    1515
     
    1818#include "Type.h"
    1919#include "Declaration.h"
    20 #include "utility.h"
     20#include "Common/utility.h"
    2121
    2222const char *BasicType::typeNames[BasicType::NUMBER_OF_BASIC_TYPES] = {
     
    5454}
    5555
     56void Type::Qualifiers::print( std::ostream &os, int indent ) const {
     57        if ( isConst ) {
     58                os << "const ";
     59        } // if
     60        if ( isVolatile ) {
     61                os << "volatile ";
     62        } // if
     63        if ( isRestrict ) {
     64                os << "restrict ";
     65        } // if
     66        if ( isLvalue ) {
     67                os << "lvalue ";
     68        } // if
     69        if ( isAtomic ) {
     70                os << "_Atomic ";
     71        } // if
     72        if ( isAttribute ) {
     73                os << "__attribute(( )) ";
     74        } // if
     75}
     76
    5677void Type::print( std::ostream &os, int indent ) const {
    5778        if ( ! forall.empty() ) {
     
    6081                os << std::string( indent+2, ' ' );
    6182        } // if
    62         if ( tq.isConst ) {
    63                 os << "const ";
    64         } // if
    65         if ( tq.isVolatile ) {
    66                 os << "volatile ";
    67         } // if
    68         if ( tq.isRestrict ) {
    69                 os << "restrict ";
    70         } // if
    71         if ( tq.isLvalue ) {
    72                 os << "lvalue ";
    73         } // if
    74         if ( tq.isAtomic ) {
    75                 os << "_Atomic ";
    76         } // if
    77         if ( tq.isAttribute ) {
    78                 os << "__attribute(( )) ";
    79         } // if
     83        tq.print( os, indent );
     84}
     85
     86std::ostream & operator<<( std::ostream & out, Type * type ) {
     87        type->print( out );
     88        return out;
    8089}
    8190
  • src/SynTree/Type.h

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Type.h -- 
     7// Type.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul  9 16:46:15 2015
    13 // Update Count     : 14
     12// Last Modified On : Wed Jul 13 11:46:54 2016
     13// Update Count     : 23
    1414//
    1515
     
    2323class Type {
    2424  public:
    25         struct Qualifiers { 
     25        struct Qualifiers {
    2626                Qualifiers(): isConst( false ), isVolatile( false ), isRestrict( false ), isLvalue( false ), isAtomic( false ), isAttribute( false ) {}
    2727                Qualifiers( bool isConst, bool isVolatile, bool isRestrict, bool isLvalue, bool isAtomic, bool isAttribute ): isConst( isConst ), isVolatile( isVolatile ), isRestrict( isRestrict ), isLvalue( isLvalue ), isAtomic( isAtomic ), isAttribute( isAttribute ) {}
    28        
     28
    2929                Qualifiers &operator+=( const Qualifiers &other );
    3030                Qualifiers &operator-=( const Qualifiers &other );
     
    3636                bool operator<( const Qualifiers &other );
    3737                bool operator>( const Qualifiers &other );
    38        
     38                void print( std::ostream &os, int indent = 0 ) const;
     39
    3940                bool isConst;
    4041                bool isVolatile;
     
    4344                bool isAtomic;
    4445                bool isAttribute;
    45         };     
     46        };
    4647
    4748        Type( const Qualifiers &tq );
     
    8586class BasicType : public Type {
    8687  public:
    87         enum Kind { 
     88        enum Kind {
    8889                Bool,
    8990                Char,
     
    108109                LongDoubleImaginary,
    109110                NUMBER_OF_BASIC_TYPES
    110         }; 
     111        };
    111112
    112113        static const char *typeNames[];                                         // string names for basic types, MUST MATCH with Kind
     
    149150  private:
    150151        Type *base;
    151        
     152
    152153        // In C99, pointer types can be qualified in many ways e.g., int f( int a[ static 3 ] )
    153154        Expression *dimension;
     
    188189        virtual ~FunctionType();
    189190
    190         std::list<DeclarationWithType*>& get_returnVals() { return returnVals; }
    191         std::list<DeclarationWithType*>& get_parameters() { return parameters; }
     191        std::list<DeclarationWithType*> & get_returnVals() { return returnVals; }
     192        std::list<DeclarationWithType*> & get_parameters() { return parameters; }
    192193        bool get_isVarArgs() { return isVarArgs; }
    193194        void set_isVarArgs( bool newValue ) { isVarArgs = newValue; }
     
    201202        std::list<DeclarationWithType*> parameters;
    202203
    203         // does the function accept a variable number of arguments following the arguments
    204         // specified in the parameters list.    This could be because of
     204        // Does the function accept a variable number of arguments following the arguments specified in the parameters list.
     205        // This could be because of
    205206        // - an ellipsis in a prototype declaration
    206207        // - an unprototyped declaration
     
    217218        void set_name( std::string newValue ) { name = newValue; }
    218219        std::list< Expression* >& get_parameters() { return parameters; }
    219        
     220
    220221        virtual ReferenceToType *clone() const = 0;
    221222        virtual void accept( Visitor &v ) = 0;
     
    225226        virtual std::string typeString() const = 0;
    226227        std::list< Expression* > parameters;
    227   private:
    228228        std::string name;
     229  private:
    229230};
    230231
     
    237238        StructDecl *get_baseStruct() const { return baseStruct; }
    238239        void set_baseStruct( StructDecl *newValue ) { baseStruct = newValue; }
    239        
    240         // a utility function
     240
     241        /// Accesses generic parameters of base struct (NULL if none such)
     242        std::list<TypeDecl*> * get_baseParameters();
     243
     244        /// Looks up the members of this struct named "name" and places them into "foundDecls".
     245        /// Clones declarations into "foundDecls", caller responsible for freeing
    241246        void lookup( const std::string &name, std::list< Declaration* > &foundDecls ) const;
    242247
     
    244249        virtual void accept( Visitor &v ) { v.visit( this ); }
    245250        virtual Type *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     251
     252        virtual void print( std::ostream &os, int indent = 0 ) const;
    246253  private:
    247254        virtual std::string typeString() const;
    248        
     255
    249256        // this decl is not "owned" by the struct inst; it is merely a pointer to elsewhere in the tree,
    250257        // where the structure used in this type is actually defined
     
    260267        UnionDecl *get_baseUnion() const { return baseUnion; }
    261268        void set_baseUnion( UnionDecl *newValue ) { baseUnion = newValue; }
    262        
    263         // a utility function
     269
     270        /// Accesses generic parameters of base union (NULL if none such)
     271        std::list<TypeDecl*> * get_baseParameters();
     272
     273        /// looks up the members of this union named "name" and places them into "foundDecls"
     274        /// Clones declarations into "foundDecls", caller responsible for freeing
    264275        void lookup( const std::string &name, std::list< Declaration* > &foundDecls ) const;
    265276
     
    267278        virtual void accept( Visitor &v ) { v.visit( this ); }
    268279        virtual Type *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     280
     281        virtual void print( std::ostream &os, int indent = 0 ) const;
    269282  private:
    270283        virtual std::string typeString() const;
    271        
     284
    272285        // this decl is not "owned" by the union inst; it is merely a pointer to elsewhere in the tree,
    273286        // where the union used in this type is actually defined
     
    288301};
    289302
    290 class ContextInstType : public ReferenceToType {
     303class TraitInstType : public ReferenceToType {
    291304        typedef ReferenceToType Parent;
    292305  public:
    293         ContextInstType( const Type::Qualifiers &tq, const std::string &name ) : Parent( tq, name ) {}
    294         ContextInstType( const ContextInstType &other );
    295         ~ContextInstType();
     306        TraitInstType( const Type::Qualifiers &tq, const std::string &name ) : Parent( tq, name ) {}
     307        TraitInstType( const TraitInstType &other );
     308        ~TraitInstType();
    296309
    297310        std::list< Declaration* >& get_members() { return members; }
    298311
    299         virtual ContextInstType *clone() const { return new ContextInstType( *this ); }
     312        virtual TraitInstType *clone() const { return new TraitInstType( *this ); }
    300313        virtual void accept( Visitor &v ) { v.visit( this ); }
    301314        virtual Type *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    302315  private:
    303316        virtual std::string typeString() const;
    304        
     317
    305318        // this member is filled in by the validate pass, which instantiates the members of the correponding
    306319        // aggregate with the actual type parameters specified for this use of the context
     
    319332        bool get_isFtype() const { return isFtype; }
    320333        void set_isFtype( bool newValue ) { isFtype = newValue; }
    321        
     334
    322335        virtual TypeInstType *clone() const { return new TypeInstType( *this ); }
    323336        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    392405};
    393406
     407/// Represents the GCC built-in varargs type
     408class VarArgsType : public Type {
     409  public:
     410        VarArgsType();
     411        VarArgsType( Type::Qualifiers tq );
     412
     413        virtual VarArgsType *clone() const { return new VarArgsType( *this ); }
     414        virtual void accept( Visitor &v ) { v.visit( this ); }
     415        virtual Type *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     416        virtual void print( std::ostream &os, int indent = 0 ) const;
     417};
     418
    394419inline Type::Qualifiers &Type::Qualifiers::operator+=( const Type::Qualifiers &other ) {
    395420        isConst |= other.isConst;
     
    418443        return isConst == other.isConst
    419444                && isVolatile == other.isVolatile
    420                 && isRestrict == other.isRestrict
    421 //      && isLvalue == other.isLvalue
     445//              && isRestrict == other.isRestrict
     446//              && isLvalue == other.isLvalue
    422447                && isAtomic == other.isAtomic;
    423448}
     
    426451        return isConst != other.isConst
    427452                || isVolatile != other.isVolatile
    428                 || isRestrict != other.isRestrict
    429 //      || isLvalue != other.isLvalue
     453//              || isRestrict != other.isRestrict
     454//              || isLvalue != other.isLvalue
    430455                || isAtomic != other.isAtomic;
    431456}
     
    434459        return isConst <= other.isConst
    435460                && isVolatile <= other.isVolatile
    436                 && isRestrict <= other.isRestrict
    437 //      && isLvalue >= other.isLvalue
     461//              && isRestrict <= other.isRestrict
     462//              && isLvalue >= other.isLvalue
    438463                && isAtomic == other.isAtomic;
    439464}
     
    442467        return isConst >= other.isConst
    443468                && isVolatile >= other.isVolatile
    444                 && isRestrict >= other.isRestrict
    445 //      && isLvalue <= other.isLvalue
     469//              && isRestrict >= other.isRestrict
     470//              && isLvalue <= other.isLvalue
    446471                && isAtomic == other.isAtomic;
    447472}
     
    454479        return operator!=( other ) && operator>=( other );
    455480}
     481
     482std::ostream & operator<<( std::ostream & out, Type * type );
    456483
    457484#endif // TYPE_H
  • src/SynTree/TypeDecl.cc

    r679864e1 r242d458  
    1616#include "Declaration.h"
    1717#include "Type.h"
    18 #include "utility.h"
     18#include "Common/utility.h"
    1919
    2020TypeDecl::TypeDecl( const std::string &name, DeclarationNode::StorageClass sc, Type *type, Kind kind ) : Parent( name, sc, type ), kind( kind ) {
  • src/SynTree/TypeExpr.cc

    r679864e1 r242d458  
    1616#include "Expression.h"
    1717#include "Type.h"
    18 #include "utility.h"
     18#include "Common/utility.h"
    1919
    2020TypeExpr::TypeExpr( Type *type ) : type( type ) {
  • src/SynTree/TypeSubstitution.cc

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TypeSubstitution.cc -- 
     7// TypeSubstitution.cc --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 11:10:04 2015
    13 // Update Count     : 2
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Apr 26 11:15:29 2016
     13// Update Count     : 3
    1414//
    1515
     
    7272Type *TypeSubstitution::lookup( std::string formalType ) const {
    7373        TypeEnvType::const_iterator i = typeEnv.find( formalType );
     74       
     75        // break on not in substitution set
     76        if ( i == typeEnv.end() ) return 0;
     77       
     78        // attempt to transitively follow TypeInstType links.
     79        while ( TypeInstType *actualType = dynamic_cast< TypeInstType* >( i->second ) ) {
     80                const std::string& typeName = actualType->get_name();
     81               
     82                // break cycles in the transitive follow
     83                if ( formalType == typeName ) break;
     84               
     85                // Look for the type this maps to, returning previous mapping if none-such
     86                i = typeEnv.find( typeName );
     87                if ( i == typeEnv.end() ) return actualType;
     88        }
     89       
     90        // return type from substitution set
     91        return i->second;
     92       
     93#if 0
    7494        if ( i == typeEnv.end() ) {
    7595                return 0;
     
    7797                return i->second;
    7898        } // if
     99#endif
    79100}
    80101
     
    96117        BoundVarsType::const_iterator bound = boundVars.find( inst->get_name() );
    97118        if ( bound != boundVars.end() ) return inst;
    98        
     119
    99120        TypeEnvType::const_iterator i = typeEnv.find( inst->get_name() );
    100121        if ( i == typeEnv.end() ) {
     
    126147Type *TypeSubstitution::handleType( TypeClass *type ) {
    127148        BoundVarsType oldBoundVars( boundVars );
     149        // bind type variables from forall-qualifiers
    128150        if ( freeOnly ) {
    129151                for ( std::list< TypeDecl* >::const_iterator tyvar = type->get_forall().begin(); tyvar != type->get_forall().end(); ++tyvar ) {
     
    136158}
    137159
     160template< typename TypeClass >
     161Type *TypeSubstitution::handleAggregateType( TypeClass *type ) {
     162        BoundVarsType oldBoundVars( boundVars );
     163        // bind type variables from forall-qualifiers
     164        if ( freeOnly ) {
     165                for ( std::list< TypeDecl* >::const_iterator tyvar = type->get_forall().begin(); tyvar != type->get_forall().end(); ++tyvar ) {
     166                        boundVars.insert( (*tyvar )->get_name() );
     167                } // for
     168        } // if
     169        // bind type variables from generic type instantiations
     170        std::list< TypeDecl* > *baseParameters = type->get_baseParameters();
     171        if ( baseParameters && ! type->get_parameters().empty() ) {
     172                for ( std::list< TypeDecl* >::const_iterator tyvar = baseParameters->begin(); tyvar != baseParameters->end(); ++tyvar ) {
     173                        boundVars.insert( (*tyvar)->get_name() );
     174                } // for
     175        } // if
     176        Type *ret = Mutator::mutate( type );
     177        boundVars = oldBoundVars;
     178        return ret;
     179}
     180
    138181Type * TypeSubstitution::mutate( VoidType *basicType ) {
    139182        return handleType( basicType );
     
    157200
    158201Type * TypeSubstitution::mutate( StructInstType *aggregateUseType ) {
    159         return handleType( aggregateUseType );
     202        return handleAggregateType( aggregateUseType );
    160203}
    161204
    162205Type * TypeSubstitution::mutate( UnionInstType *aggregateUseType ) {
    163         return handleType( aggregateUseType );
     206        return handleAggregateType( aggregateUseType );
    164207}
    165208
     
    168211}
    169212
    170 Type * TypeSubstitution::mutate( ContextInstType *aggregateUseType ) {
     213Type * TypeSubstitution::mutate( TraitInstType *aggregateUseType ) {
    171214        return handleType( aggregateUseType );
    172215}
     
    174217Type * TypeSubstitution::mutate( TupleType *tupleType ) {
    175218        return handleType( tupleType );
     219}
     220
     221Type * TypeSubstitution::mutate( VarArgsType *varArgsType ) {
     222        return handleType( varArgsType );
    176223}
    177224
     
    191238}
    192239
     240std::ostream & operator<<( std::ostream & out, const TypeSubstitution & sub ) {
     241        sub.print( out );
     242        return out;
     243}
     244
     245
    193246// Local Variables: //
    194247// tab-width: 4 //
  • src/SynTree/TypeSubstitution.h

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TypeSubstitution.h -- 
     7// TypeSubstitution.h --
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 11:12:30 2015
    13 // Update Count     : 1
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri Apr 29 15:00:20 2016
     13// Update Count     : 2
    1414//
    1515
     
    3333        TypeSubstitution( const TypeSubstitution &other );
    3434        virtual ~TypeSubstitution();
    35        
     35
    3636        TypeSubstitution &operator=( const TypeSubstitution &other );
    37        
     37
    3838        template< typename SynTreeClass > int apply( SynTreeClass *&input );
    3939        template< typename SynTreeClass > int applyFree( SynTreeClass *&input );
    40        
     40
    4141        void add( std::string formalType, Type *actualType );
    4242        void add( const TypeSubstitution &other );
     
    4444        Type *lookup( std::string formalType ) const;
    4545        bool empty() const;
    46        
     46
    4747        template< typename FormalIterator, typename ActualIterator >
    4848        void add( FormalIterator formalBegin, FormalIterator formalEnd, ActualIterator actualBegin );
    49        
     49
     50        /// this function is unused...
    5051        template< typename TypeInstListIterator >
    5152        void extract( TypeInstListIterator begin, TypeInstListIterator end, TypeSubstitution &result );
    52        
     53
    5354        void normalize();
    5455
     
    5859        virtual Type* mutate(TypeInstType *aggregateUseType);
    5960        virtual Expression* mutate(NameExpr *nameExpr);
    60        
     61
     62        /// Records type variable bindings from forall-statements
    6163        template< typename TypeClass > Type *handleType( TypeClass *type );
    62        
     64        /// Records type variable bindings from forall-statements and instantiations of generic types
     65        template< typename TypeClass > Type *handleAggregateType( TypeClass *type );
     66
    6367        virtual Type* mutate(VoidType *basicType);
    6468        virtual Type* mutate(BasicType *basicType);
     
    6973        virtual Type* mutate(UnionInstType *aggregateUseType);
    7074        virtual Type* mutate(EnumInstType *aggregateUseType);
    71         virtual Type* mutate(ContextInstType *aggregateUseType);
     75        virtual Type* mutate(TraitInstType *aggregateUseType);
    7276        virtual Type* mutate(TupleType *tupleType);
    73        
     77        virtual Type* mutate(VarArgsType *varArgsType);
     78
    7479        // TODO: worry about traversing into a forall-qualified function type or type decl with assertions
    75        
     80
    7681        void initialize( const TypeSubstitution &src, TypeSubstitution &dest );
    7782
     
    132137        return subCount;
    133138}
    134        
     139
    135140template< typename SynTreeClass >
    136141int TypeSubstitution::applyFree( SynTreeClass *&input ) {
     
    145150        return subCount;
    146151}
    147        
     152
    148153template< typename TypeInstListIterator >
    149154void TypeSubstitution::extract( TypeInstListIterator begin, TypeInstListIterator end, TypeSubstitution &result ) {
     155        // xxx - this function doesn't extract varEnv - is this intentional?
    150156        while ( begin != end ) {
    151157                TypeEnvType::iterator cur = typeEnv.find( (*begin++)->get_name() );
     
    169175}
    170176
     177std::ostream & operator<<( std::ostream & out, const TypeSubstitution & sub );
     178
    171179#endif // TYPESUBSTITUTION_H
    172180
  • src/SynTree/TypeofType.cc

    r679864e1 r242d458  
    1616#include "Type.h"
    1717#include "Expression.h"
    18 #include "utility.h"
     18#include "Common/utility.h"
    1919
    2020TypeofType::TypeofType( const Type::Qualifiers &tq, Expression *expr ) : Type( tq ), expr( expr ) {
  • src/SynTree/Visitor.cc

    r679864e1 r242d458  
    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
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jul 24 16:11:05 2015
    13 // Update Count     : 15
     12// Last Modified On : Thu Aug  4 11:24:25 2016
     13// Update Count     : 21
    1414//
    1515
     
    3939}
    4040
    41 void Visitor::visit( AggregateDecl *aggregateDecl ) {
     41void Visitor::handleAggregateDecl( AggregateDecl *aggregateDecl ) {
    4242        acceptAll( aggregateDecl->get_parameters(), *this );
    4343        acceptAll( aggregateDecl->get_members(), *this );
     
    4545
    4646void Visitor::visit( StructDecl *aggregateDecl ) {
    47         visit( static_cast< AggregateDecl* >( aggregateDecl ) );
     47        handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
    4848}
    4949
    5050void Visitor::visit( UnionDecl *aggregateDecl ) {
    51         visit( static_cast< AggregateDecl* >( aggregateDecl ) );
     51        handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
    5252}
    5353
    5454void Visitor::visit( EnumDecl *aggregateDecl ) {
    55         visit( static_cast< AggregateDecl* >( aggregateDecl ) );
    56 }
    57 
    58 void Visitor::visit( ContextDecl *aggregateDecl ) {
    59         visit( static_cast< AggregateDecl* >( aggregateDecl ) );
    60 }
    61 
    62 void Visitor::visit( NamedTypeDecl *typeDecl ) {
     55        handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
     56}
     57
     58void Visitor::visit( TraitDecl *aggregateDecl ) {
     59        handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
     60}
     61
     62void Visitor::handleNamedTypeDecl( NamedTypeDecl *typeDecl ) {
    6363        acceptAll( typeDecl->get_parameters(), *this );
    6464        acceptAll( typeDecl->get_assertions(), *this );
     
    6767
    6868void Visitor::visit( TypeDecl *typeDecl ) {
    69         visit( static_cast< NamedTypeDecl* >( typeDecl ) );
     69        handleNamedTypeDecl( static_cast< NamedTypeDecl* >( typeDecl ) );
    7070}
    7171
    7272void Visitor::visit( TypedefDecl *typeDecl ) {
    73         visit( static_cast< NamedTypeDecl* >( typeDecl ) );
     73        handleNamedTypeDecl( static_cast< NamedTypeDecl* >( typeDecl ) );
    7474}
    7575
     
    109109void Visitor::visit( SwitchStmt *switchStmt ) {
    110110        maybeAccept( switchStmt->get_condition(), *this );
    111         acceptAll( switchStmt->get_branches(), *this );
    112 }
    113 
    114 void Visitor::visit( ChooseStmt *switchStmt ) {
    115         maybeAccept( switchStmt->get_condition(), *this );
    116         acceptAll( switchStmt->get_branches(), *this );
    117 }
    118 
    119 void Visitor::visit( FallthruStmt *fallthruStmt ) {}
     111        acceptAll( switchStmt->get_statements(), *this );
     112}
    120113
    121114void Visitor::visit( CaseStmt *caseStmt ) {
     
    150143void Visitor::visit( DeclStmt *declStmt ) {
    151144        maybeAccept( declStmt->get_decl(), *this );
     145}
     146
     147void Visitor::visit( ImplicitCtorDtorStmt *impCtorDtorStmt ) {
     148        maybeAccept( impCtorDtorStmt->get_callStmt(), *this );
    152149}
    153150
     
    210207}
    211208
     209void Visitor::visit( AlignofExpr *alignofExpr ) {
     210        acceptAll( alignofExpr->get_results(), *this );
     211        if ( alignofExpr->get_isType() ) {
     212                maybeAccept( alignofExpr->get_type(), *this );
     213        } else {
     214                maybeAccept( alignofExpr->get_expr(), *this );
     215        }
     216}
     217
     218void Visitor::visit( UntypedOffsetofExpr *offsetofExpr ) {
     219        acceptAll( offsetofExpr->get_results(), *this );
     220        maybeAccept( offsetofExpr->get_type(), *this );
     221}
     222
     223void Visitor::visit( OffsetofExpr *offsetofExpr ) {
     224        acceptAll( offsetofExpr->get_results(), *this );
     225        maybeAccept( offsetofExpr->get_type(), *this );
     226        maybeAccept( offsetofExpr->get_member(), *this );
     227}
     228
     229void Visitor::visit( OffsetPackExpr *offsetPackExpr ) {
     230        acceptAll( offsetPackExpr->get_results(), *this );
     231        maybeAccept( offsetPackExpr->get_type(), *this );
     232}
     233
    212234void Visitor::visit( AttrExpr *attrExpr ) {
    213235        acceptAll( attrExpr->get_results(), *this );
     
    259281}
    260282
     283void Visitor::visit( ImplicitCopyCtorExpr *impCpCtorExpr ) {
     284        maybeAccept( impCpCtorExpr->get_callExpr(), *this );
     285        acceptAll( impCpCtorExpr->get_tempDecls(), *this );
     286        acceptAll( impCpCtorExpr->get_returnDecls(), *this );
     287}
     288
    261289void Visitor::visit( UntypedValofExpr *valofExpr ) {
    262290        acceptAll( valofExpr->get_results(), *this );
    263291        maybeAccept( valofExpr->get_body(), *this );
     292}
     293
     294void Visitor::visit( CompoundLiteralExpr *compLitExpr ) {
     295        acceptAll( compLitExpr->get_results(), *this );
     296        maybeAccept( compLitExpr->get_type(), *this );
     297        maybeAccept( compLitExpr->get_initializer(), *this );
     298}
     299
     300void Visitor::visit( RangeExpr *rangeExpr ) {
     301        maybeAccept( rangeExpr->get_low(), *this );
     302        maybeAccept( rangeExpr->get_high(), *this );
    264303}
    265304
     
    289328}
    290329
    291 void Visitor::visit( ReferenceToType *aggregateUseType ) {
     330void Visitor::handleReferenceToType( ReferenceToType *aggregateUseType ) {
    292331        acceptAll( aggregateUseType->get_forall(), *this );
    293332        acceptAll( aggregateUseType->get_parameters(), *this );
     
    295334
    296335void Visitor::visit( StructInstType *aggregateUseType ) {
    297         visit( static_cast< ReferenceToType * >( aggregateUseType ) );
     336        handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
    298337}
    299338
    300339void Visitor::visit( UnionInstType *aggregateUseType ) {
    301         visit( static_cast< ReferenceToType * >( aggregateUseType ) );
     340        handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
    302341}
    303342
    304343void Visitor::visit( EnumInstType *aggregateUseType ) {
    305         visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    306 }
    307 
    308 void Visitor::visit( ContextInstType *aggregateUseType ) {
    309         visit( static_cast< ReferenceToType * >( aggregateUseType ) );
     344        handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
     345}
     346
     347void Visitor::visit( TraitInstType *aggregateUseType ) {
     348        handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
    310349        acceptAll( aggregateUseType->get_members(), *this );
    311350}
    312351
    313352void Visitor::visit( TypeInstType *aggregateUseType ) {
    314         visit( static_cast< ReferenceToType * >( aggregateUseType ) );
     353        handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
    315354}
    316355
     
    335374}
    336375
     376void Visitor::visit( VarArgsType *varArgsType ) {
     377        acceptAll( varArgsType->get_forall(), *this );
     378}
     379
    337380void Visitor::visit( SingleInit *singleInit ) {
    338381        singleInit->get_value()->accept( *this );
     
    342385        acceptAll( listInit->get_designators(), *this );
    343386        acceptAll( listInit->get_initializers(), *this );
     387}
     388
     389void Visitor::visit( ConstructorInit *ctorInit ) {
     390        maybeAccept( ctorInit->get_ctor(), *this );
     391        maybeAccept( ctorInit->get_init(), *this );
    344392}
    345393
  • src/SynTree/Visitor.h

    r679864e1 r242d458  
    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
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 23 23:22:23 2015
    13 // Update Count     : 4
     12// Last Modified On : Wed Aug  3 17:01:50 2016
     13// Update Count     : 9
    1414//
    1515
     
    1818
    1919#include "SynTree.h"
    20 #include "SemanticError.h"
    21 #include "CompilerError.h"
     20#include "Common/SemanticError.h"
     21#include "Common/CompilerError.h"
    2222
    2323class Visitor {
     
    3131        virtual void visit( UnionDecl *aggregateDecl );
    3232        virtual void visit( EnumDecl *aggregateDecl );
    33         virtual void visit( ContextDecl *aggregateDecl );
     33        virtual void visit( TraitDecl *aggregateDecl );
    3434        virtual void visit( TypeDecl *typeDecl );
    3535        virtual void visit( TypedefDecl *typeDecl );
     
    4242        virtual void visit( ForStmt *forStmt );
    4343        virtual void visit( SwitchStmt *switchStmt );
    44         virtual void visit( ChooseStmt *switchStmt );
    45         virtual void visit( FallthruStmt *switchStmt );
    4644        virtual void visit( CaseStmt *caseStmt );
    4745        virtual void visit( BranchStmt *branchStmt );
     
    5250        virtual void visit( NullStmt *nullStmt );
    5351        virtual void visit( DeclStmt *declStmt );
     52        virtual void visit( ImplicitCtorDtorStmt *impCtorDtorStmt );
    5453
    5554        virtual void visit( ApplicationExpr *applicationExpr );
     
    6261        virtual void visit( MemberExpr *memberExpr );
    6362        virtual void visit( VariableExpr *variableExpr );
    64         virtual void visit( ConstantExpr *constantExpr ); 
     63        virtual void visit( ConstantExpr *constantExpr );
    6564        virtual void visit( SizeofExpr *sizeofExpr );
     65        virtual void visit( AlignofExpr *alignofExpr );
     66        virtual void visit( UntypedOffsetofExpr *offsetofExpr );
     67        virtual void visit( OffsetofExpr *offsetofExpr );
     68        virtual void visit( OffsetPackExpr *offsetPackExpr );
    6669        virtual void visit( AttrExpr *attrExpr );
    6770        virtual void visit( LogicalExpr *logicalExpr );
     
    7275        virtual void visit( TypeExpr *typeExpr );
    7376        virtual void visit( AsmExpr *asmExpr );
     77        virtual void visit( ImplicitCopyCtorExpr *impCpCtorExpr );
    7478        virtual void visit( UntypedValofExpr *valofExpr );
     79        virtual void visit( CompoundLiteralExpr *compLitExpr );
     80        virtual void visit( RangeExpr *rangeExpr );
    7581
    7682        virtual void visit( VoidType *basicType );
     
    8288        virtual void visit( UnionInstType *aggregateUseType );
    8389        virtual void visit( EnumInstType *aggregateUseType );
    84         virtual void visit( ContextInstType *aggregateUseType );
     90        virtual void visit( TraitInstType *aggregateUseType );
    8591        virtual void visit( TypeInstType *aggregateUseType );
    8692        virtual void visit( TupleType *tupleType );
    8793        virtual void visit( TypeofType *typeofType );
    8894        virtual void visit( AttrType *attrType );
     95        virtual void visit( VarArgsType *varArgsType );
    8996
    9097        virtual void visit( SingleInit *singleInit );
    9198        virtual void visit( ListInit *listInit );
     99        virtual void visit( ConstructorInit *ctorInit );
    92100
    93101        virtual void visit( Subrange *subrange );
     
    95103        virtual void visit( Constant *constant );
    96104  private:
    97         virtual void visit( AggregateDecl *aggregateDecl );
    98         virtual void visit( NamedTypeDecl *typeDecl );
    99         virtual void visit( ReferenceToType *aggregateUseType );
     105        virtual void handleAggregateDecl( AggregateDecl *aggregateDecl );
     106        virtual void handleNamedTypeDecl( NamedTypeDecl *typeDecl );
     107        virtual void handleReferenceToType( ReferenceToType *aggregateUseType );
    100108};
    101109
  • src/SynTree/module.mk

    r679864e1 r242d458  
    66## file "LICENCE" distributed with Cforall.
    77##
    8 ## module.mk -- 
     8## module.mk --
    99##
    1010## Author           : Richard C. Bilson
     
    2525       SynTree/TypeofType.cc \
    2626       SynTree/AttrType.cc \
     27       SynTree/VarArgsType.cc \
    2728       SynTree/Constant.cc \
    2829       SynTree/Expression.cc \
     
    4546       SynTree/Visitor.cc \
    4647       SynTree/Mutator.cc \
    47        SynTree/CodeGenVisitor.cc \
    48        SynTree/TypeSubstitution.cc
     48       SynTree/AddStmtVisitor.cc \
     49       SynTree/TypeSubstitution.cc \
     50       SynTree/Attribute.cc
    4951
  • src/Tuples/AssignExpand.h

    r679864e1 r242d458  
    2323#include "SynTree/Expression.h"
    2424
    25 #include "UniqueName.h"
     25#include "Common/UniqueName.h"
    2626
    2727namespace Tuples {
  • src/Tuples/FlattenTuple.cc

    r679864e1 r242d458  
    3737        }
    3838
    39         void FlattenTuple::CollectArgs::visit( UntypedExpr       *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    40         void FlattenTuple::CollectArgs::visit( NameExpr          *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    41         void FlattenTuple::CollectArgs::visit( CastExpr          *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    42         void FlattenTuple::CollectArgs::visit( AddressExpr       *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    43         void FlattenTuple::CollectArgs::visit( UntypedMemberExpr *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    44         void FlattenTuple::CollectArgs::visit( MemberExpr        *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    45         void FlattenTuple::CollectArgs::visit( VariableExpr      *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    46         void FlattenTuple::CollectArgs::visit( ConstantExpr      *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    47         void FlattenTuple::CollectArgs::visit( SizeofExpr        *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    48         void FlattenTuple::CollectArgs::visit( AttrExpr          *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    49         void FlattenTuple::CollectArgs::visit( LogicalExpr       *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    50         void FlattenTuple::CollectArgs::visit( ConditionalExpr   *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    51         void FlattenTuple::CollectArgs::visit( CommaExpr         *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    52         void FlattenTuple::CollectArgs::visit( TypeExpr          *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    53         void FlattenTuple::CollectArgs::visit( UntypedValofExpr  *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     39        void FlattenTuple::CollectArgs::visit( UntypedExpr         *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     40        void FlattenTuple::CollectArgs::visit( NameExpr            *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     41        void FlattenTuple::CollectArgs::visit( CastExpr            *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     42        void FlattenTuple::CollectArgs::visit( AddressExpr         *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     43        void FlattenTuple::CollectArgs::visit( UntypedMemberExpr   *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     44        void FlattenTuple::CollectArgs::visit( MemberExpr          *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     45        void FlattenTuple::CollectArgs::visit( VariableExpr        *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     46        void FlattenTuple::CollectArgs::visit( ConstantExpr        *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     47        void FlattenTuple::CollectArgs::visit( SizeofExpr          *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     48        void FlattenTuple::CollectArgs::visit( AlignofExpr         *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     49        void FlattenTuple::CollectArgs::visit( UntypedOffsetofExpr *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     50        void FlattenTuple::CollectArgs::visit( OffsetofExpr        *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     51        void FlattenTuple::CollectArgs::visit( OffsetPackExpr      *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     52        void FlattenTuple::CollectArgs::visit( AttrExpr            *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     53        void FlattenTuple::CollectArgs::visit( LogicalExpr         *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     54        void FlattenTuple::CollectArgs::visit( ConditionalExpr     *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     55        void FlattenTuple::CollectArgs::visit( CommaExpr           *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     56        void FlattenTuple::CollectArgs::visit( TypeExpr            *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
     57        void FlattenTuple::CollectArgs::visit( UntypedValofExpr    *expr )  {  currentArgs.insert( currentArgs.end(), expr );  }
    5458
    5559        void FlattenTuple::CollectArgs::visit( TupleExpr *tupleExpr) {
  • src/Tuples/FlattenTuple.h

    r679864e1 r242d458  
    4242                        virtual void visit( ConstantExpr * );
    4343                        virtual void visit( SizeofExpr * );
     44                        virtual void visit( AlignofExpr * );
     45                        virtual void visit( UntypedOffsetofExpr * );
     46                        virtual void visit( OffsetofExpr * );
     47                        virtual void visit( OffsetPackExpr * );
    4448                        virtual void visit( AttrExpr * );
    4549                        virtual void visit( LogicalExpr * );
  • src/Tuples/FunctionChecker.cc

    r679864e1 r242d458  
    1616#include "FunctionChecker.h"
    1717#include "FunctionFixer.h"
    18 #include "SemanticError.h"
     18#include "Common/SemanticError.h"
    1919
    2020#include <algorithm>
  • src/Tuples/FunctionChecker.h

    r679864e1 r242d458  
    2121#include <iostream>
    2222
    23 #include "UniqueName.h"
     23#include "Common/UniqueName.h"
    2424
    2525#include "SynTree/SynTree.h"
  • src/Tuples/TupleAssignment.cc

    r679864e1 r242d458  
    1919#include "SynTree/Expression.h"
    2020#include "TupleAssignment.h"
    21 #include "SemanticError.h"
     21#include "Common/SemanticError.h"
    2222
    2323#include <functional>
  • src/driver/Makefile.am

    r679864e1 r242d458  
    1111## Created On       : Sun May 31 08:49:31 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Sun May 31 08:50:25 2015
    14 ## Update Count     : 1
     13## Last Modified On : Thu Jan 28 09:04:40 2016
     14## Update Count     : 7
    1515###############################################################################
    1616
     
    2525cc1lib_PROGRAMS = cc1
    2626cc1_SOURCES = cc1.cc
     27
     28MAINTAINERCLEANFILES = @CFA_PREFIX@/bin/${bin_PROGRAMS} @CFA_PREFIX@/lib/${cc1lib_PROGRAMS}
  • src/driver/Makefile.in

    r679864e1 r242d458  
    6262CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    6363        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
     64AM_V_CXX = $(am__v_CXX_@AM_V@)
     65am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
     66am__v_CXX_0 = @echo "  CXX   " $@;
     67AM_V_at = $(am__v_at_@AM_V@)
     68am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     69am__v_at_0 = @
    6470CXXLD = $(CXX)
    6571CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    6672        -o $@
     73AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
     74am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
     75am__v_CXXLD_0 = @echo "  CXXLD " $@;
     76AM_V_GEN = $(am__v_GEN_@AM_V@)
     77am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     78am__v_GEN_0 = @echo "  GEN   " $@;
    6779SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
    6880DIST_SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
     
    7385ALLOCA = @ALLOCA@
    7486AMTAR = @AMTAR@
     87AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    7588AUTOCONF = @AUTOCONF@
    7689AUTOHEADER = @AUTOHEADER@
     
    8093CC = @CC@
    8194CCDEPMODE = @CCDEPMODE@
     95CFA_BACKEND_CC = @CFA_BACKEND_CC@
    8296CFA_BINDIR = @CFA_BINDIR@
     97CFA_FLAGS = @CFA_FLAGS@
    8398CFA_INCDIR = @CFA_INCDIR@
    8499CFA_LIBDIR = @CFA_LIBDIR@
     
    98113EGREP = @EGREP@
    99114EXEEXT = @EXEEXT@
    100 GCC_PATH = @GCC_PATH@
    101115GREP = @GREP@
    102116INSTALL = @INSTALL@
     
    182196cc1libdir = ${libdir}
    183197cc1_SOURCES = cc1.cc
     198MAINTAINERCLEANFILES = @CFA_PREFIX@/bin/${bin_PROGRAMS} @CFA_PREFIX@/lib/${cc1lib_PROGRAMS}
    184199all: all-am
    185200
     
    195210          esac; \
    196211        done; \
    197         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/driver/Makefile'; \
     212        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/driver/Makefile'; \
    198213        $(am__cd) $(top_srcdir) && \
    199           $(AUTOMAKE) --gnu src/driver/Makefile
     214          $(AUTOMAKE) --foreign src/driver/Makefile
    200215.PRECIOUS: Makefile
    201216Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
     
    292307cc1$(EXEEXT): $(cc1_OBJECTS) $(cc1_DEPENDENCIES) $(EXTRA_cc1_DEPENDENCIES)
    293308        @rm -f cc1$(EXEEXT)
    294         $(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
     309        $(AM_V_CXXLD)$(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
    295310cfa$(EXEEXT): $(cfa_OBJECTS) $(cfa_DEPENDENCIES) $(EXTRA_cfa_DEPENDENCIES)
    296311        @rm -f cfa$(EXEEXT)
    297         $(CXXLINK) $(cfa_OBJECTS) $(cfa_LDADD) $(LIBS)
     312        $(AM_V_CXXLD)$(CXXLINK) $(cfa_OBJECTS) $(cfa_LDADD) $(LIBS)
    298313
    299314mostlyclean-compile:
     
    307322
    308323.cc.o:
    309 @am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
    310 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    311 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     324@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     325@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     326@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    312327@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    313 @am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ $<
     328@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
    314329
    315330.cc.obj:
    316 @am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
    317 @am__fastdepCXX_TRUE@   $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    318 @AMDEP_TRUE@@am__fastdepCXX_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     331@am__fastdepCXX_TRUE@   $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     332@am__fastdepCXX_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     333@AMDEP_TRUE@@am__fastdepCXX_FALSE@      $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    319334@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    320 @am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     335@am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    321336
    322337ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     
    439454        @echo "This command is intended for maintainers to use"
    440455        @echo "it deletes files that may require special tools to rebuild."
     456        -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
    441457clean: clean-am
    442458
  • src/driver/cc1.cc

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

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // cfa.cc -- 
     7// cfa.cc --
    88//
    99// Author           : Peter A. Buhr
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 16 17:09:23 2015
    13 // Update Count     : 124
     12// Last Modified On : Tue Aug  2 12:23:11 2016
     13// Update Count     : 147
    1414//
    1515
     
    7575        string langstd;                                                                         // language standard
    7676
    77         string compiler_path( GCC_PATH );                                       // path/name of C compiler
     77        string compiler_path( CFA_BACKEND_CC );                         // path/name of C compiler
    7878        string compiler_name;                                                           // name of C compiler
    7979
     
    8787        bool cpp_flag = false;                                                          // -E or -M flag, preprocessor only
    8888        bool std_flag = false;                                                          // -std= flag
    89         bool debugging = false;                                                         // -g flag
     89        bool noincstd_flag = false;                                                     // -no-include-std= flag
     90        bool debugging __attribute(( unused )) = false;         // -g flag
    9091
    9192        const char *args[argc + 100];                                           // cfa command line values, plus some space for additional flags
     
    144145                        } else if ( arg == "-nohelp" ) {
    145146                                help = false;                                                   // strip the nohelp flag
     147                        } else if ( arg == "-no-include-std" ) {
     148                                noincstd_flag = true;                                   // strip the no-include-std flag
    146149                        } else if ( arg == "-compiler" ) {
    147150                                // use the user specified compiler
     
    165168                                nargs += 1;
    166169                        } else if ( prefix( arg, "-std=" ) ) {
    167                                 std_flag = true;                                                // std=XX provided
     170                                std_flag = true;                                                // -std=XX provided
    168171                                args[nargs] = argv[i];                                  // pass the argument along
    169172                                nargs += 1;
     
    244247        } // if
    245248
     249        // add the CFA include-library paths, which allow direct access to header files without directory qualification
     250
    246251        args[nargs] = "-I" CFA_INCDIR;
     252        nargs += 1;
     253        if ( ! noincstd_flag ) {                                                        // do not use during build
     254                args[nargs] = "-I" CFA_INCDIR "/stdhdr";
     255                nargs += 1;
     256        } // if
     257        args[nargs] = "-I" CFA_INCDIR "/containers";
    247258        nargs += 1;
    248259
     
    263274        args[nargs] = ( *new string( string("-D__CFA_PATCHLEVEL__=") + Patch ) ).c_str();
    264275        nargs += 1;
     276        args[nargs] = "-D__CFA__";
     277        nargs += 1;
     278        args[nargs] = "-D__CFORALL__";
     279        nargs += 1;
    265280
    266281        if ( cpp_flag ) {
     
    270285
    271286        if ( CFA_flag ) {
    272                 args[nargs] = "-D__CFA__";
     287                args[nargs] = "-D__CFA_PREPROCESS_";
    273288                nargs += 1;
    274289        } // if
     
    302317                args[nargs] = "-no-integrated-cpp";
    303318                nargs += 1;
    304                 args[nargs] = "-Wno-deprecated"; 
     319                args[nargs] = "-Wno-deprecated";
    305320                nargs += 1;
    306321                if ( ! std_flag ) {                                                             // default c99, if none specified
    307                         args[nargs] = "-std=c99";
     322                        args[nargs] = "-std=gnu99";
    308323                        nargs += 1;
    309324                } // if
     325                args[nargs] = "-fgnu89-inline";
     326                nargs += 1;
    310327                args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
    311328                nargs += 1;
     329                args[nargs] = "-lm";
     330                nargs += 1;
    312331        } else {
    313                 cerr << argv[0] << " error, compiler " << compiler_name << " not supported." << endl;
     332                cerr << argv[0] << " error, compiler \"" << compiler_name << "\" unsupported." << endl;
    314333                exit( EXIT_FAILURE );
    315334        } // if
  • src/examples/Makefile.am

    r679864e1 r242d458  
    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 09:08:15 2015
    1212## Last Modified By : Peter A. Buhr
    13 ## Last Modified On : Thu Jun  4 23:13:10 2015
    14 ## Update Count     : 22
     13## Last Modified On : Mon Jan 25 22:31:42 2016
     14## Update Count     : 25
    1515###############################################################################
    1616
     
    1919CC = @CFA_BINDIR@/cfa
    2020
    21 noinst_PROGRAMS = fstream_test vector_test
    22 fstream_test_SOURCES = iostream.c fstream.c fstream_test.c
    23 vector_test_SOURCES = vector_int.c fstream.c iostream.c array.c iterator.c vector_test.c
     21noinst_PROGRAMS = fstream_test vector_test avl_test # build but do not install
     22fstream_test_SOURCES = fstream_test.c
     23vector_test_SOURCES = vector_int.c array.c vector_test.c
     24avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
  • src/examples/Makefile.in

    r679864e1 r242d458  
    3636PRE_UNINSTALL = :
    3737POST_UNINSTALL = :
    38 noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT)
     38noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
     39        avl_test$(EXEEXT)
    3940subdir = src/examples
    4041DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
     
    4849CONFIG_CLEAN_VPATH_FILES =
    4950PROGRAMS = $(noinst_PROGRAMS)
    50 am_fstream_test_OBJECTS = iostream.$(OBJEXT) fstream.$(OBJEXT) \
    51         fstream_test.$(OBJEXT)
     51am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \
     52        avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \
     53        avl-private.$(OBJEXT)
     54avl_test_OBJECTS = $(am_avl_test_OBJECTS)
     55avl_test_LDADD = $(LDADD)
     56am_fstream_test_OBJECTS = fstream_test.$(OBJEXT)
    5257fstream_test_OBJECTS = $(am_fstream_test_OBJECTS)
    5358fstream_test_LDADD = $(LDADD)
    54 am_vector_test_OBJECTS = vector_int.$(OBJEXT) fstream.$(OBJEXT) \
    55         iostream.$(OBJEXT) array.$(OBJEXT) iterator.$(OBJEXT) \
     59am_vector_test_OBJECTS = vector_int.$(OBJEXT) array.$(OBJEXT) \
    5660        vector_test.$(OBJEXT)
    5761vector_test_OBJECTS = $(am_vector_test_OBJECTS)
     
    6165am__depfiles_maybe = depfiles
    6266am__mv = mv -f
     67AM_V_lt = $(am__v_lt_@AM_V@)
     68am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     69am__v_lt_0 = --silent
    6370COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    6471        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     72AM_V_CC = $(am__v_CC_@AM_V@)
     73am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     74am__v_CC_0 = @echo "  CC    " $@;
     75AM_V_at = $(am__v_at_@AM_V@)
     76am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     77am__v_at_0 = @
    6578CCLD = $(CC)
    6679LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    67 SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
    68 DIST_SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
     80AM_V_CCLD = $(am__v_CCLD_@AM_V@)
     81am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
     82am__v_CCLD_0 = @echo "  CCLD  " $@;
     83AM_V_GEN = $(am__v_GEN_@AM_V@)
     84am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     85am__v_GEN_0 = @echo "  GEN   " $@;
     86SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
     87        $(vector_test_SOURCES)
     88DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
     89        $(vector_test_SOURCES)
    6990ETAGS = etags
    7091CTAGS = ctags
     
    7394ALLOCA = @ALLOCA@
    7495AMTAR = @AMTAR@
     96AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    7597AUTOCONF = @AUTOCONF@
    7698AUTOHEADER = @AUTOHEADER@
     
    80102CC = @CFA_BINDIR@/cfa
    81103CCDEPMODE = @CCDEPMODE@
     104CFA_BACKEND_CC = @CFA_BACKEND_CC@
    82105CFA_BINDIR = @CFA_BINDIR@
     106CFA_FLAGS = @CFA_FLAGS@
    83107CFA_INCDIR = @CFA_INCDIR@
    84108CFA_LIBDIR = @CFA_LIBDIR@
     
    100124EGREP = @EGREP@
    101125EXEEXT = @EXEEXT@
    102 GCC_PATH = @GCC_PATH@
    103126GREP = @GREP@
    104127INSTALL = @INSTALL@
     
    176199top_builddir = @top_builddir@
    177200top_srcdir = @top_srcdir@
    178 fstream_test_SOURCES = iostream.c fstream.c fstream_test.c
    179 vector_test_SOURCES = vector_int.c fstream.c iostream.c array.c iterator.c vector_test.c
     201fstream_test_SOURCES = fstream_test.c
     202vector_test_SOURCES = vector_int.c array.c vector_test.c
     203avl_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
    180204all: all-am
    181205
     
    191215          esac; \
    192216        done; \
    193         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/examples/Makefile'; \
     217        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/examples/Makefile'; \
    194218        $(am__cd) $(top_srcdir) && \
    195           $(AUTOMAKE) --gnu src/examples/Makefile
     219          $(AUTOMAKE) --foreign src/examples/Makefile
    196220.PRECIOUS: Makefile
    197221Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
     
    215239clean-noinstPROGRAMS:
    216240        -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
     241avl_test$(EXEEXT): $(avl_test_OBJECTS) $(avl_test_DEPENDENCIES) $(EXTRA_avl_test_DEPENDENCIES)
     242        @rm -f avl_test$(EXEEXT)
     243        $(AM_V_CCLD)$(LINK) $(avl_test_OBJECTS) $(avl_test_LDADD) $(LIBS)
    217244fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES)
    218245        @rm -f fstream_test$(EXEEXT)
    219         $(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
     246        $(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
    220247vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES)
    221248        @rm -f vector_test$(EXEEXT)
    222         $(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
     249        $(AM_V_CCLD)$(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
    223250
    224251mostlyclean-compile:
     
    229256
    230257@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@
    231 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream.Po@am__quote@
     258@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl-private.Po@am__quote@
     259@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl0.Po@am__quote@
     260@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl1.Po@am__quote@
     261@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl2.Po@am__quote@
     262@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl3.Po@am__quote@
     263@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl4.Po@am__quote@
     264@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl_test.Po@am__quote@
    232265@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream_test.Po@am__quote@
    233 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iostream.Po@am__quote@
    234 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iterator.Po@am__quote@
    235266@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_int.Po@am__quote@
    236267@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_test.Po@am__quote@
    237268
    238269.c.o:
    239 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
    240 @am__fastdepCC_TRUE@    $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    241 @AMDEP_TRUE@@am__fastdepCC_FALSE@       source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    242 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    243 @am__fastdepCC_FALSE@   $(COMPILE) -c $<
     270@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     271@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     272@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     273@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     274@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
    244275
    245276.c.obj:
    246 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
    247 @am__fastdepCC_TRUE@    $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    248 @AMDEP_TRUE@@am__fastdepCC_FALSE@       source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    249 @AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    250 @am__fastdepCC_FALSE@   $(COMPILE) -c `$(CYGPATH_W) '$<'`
     277@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     278@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     279@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     280@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     281@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
     282
     283avl_test.o: avltree/avl_test.c
     284@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
     285@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po
     286@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.o' libtool=no @AMDEPBACKSLASH@
     287@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     288@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
     289
     290avl_test.obj: avltree/avl_test.c
     291@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`
     292@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl_test.Tpo $(DEPDIR)/avl_test.Po
     293@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl_test.c' object='avl_test.obj' libtool=no @AMDEPBACKSLASH@
     294@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     295@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`
     296
     297avl0.o: avltree/avl0.c
     298@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
     299@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po
     300@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl0.c' object='avl0.o' libtool=no @AMDEPBACKSLASH@
     301@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     302@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
     303
     304avl0.obj: avltree/avl0.c
     305@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`
     306@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl0.Tpo $(DEPDIR)/avl0.Po
     307@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl0.c' object='avl0.obj' libtool=no @AMDEPBACKSLASH@
     308@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     309@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`
     310
     311avl1.o: avltree/avl1.c
     312@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
     313@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po
     314@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl1.c' object='avl1.o' libtool=no @AMDEPBACKSLASH@
     315@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     316@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
     317
     318avl1.obj: avltree/avl1.c
     319@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`
     320@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl1.Tpo $(DEPDIR)/avl1.Po
     321@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl1.c' object='avl1.obj' libtool=no @AMDEPBACKSLASH@
     322@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     323@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`
     324
     325avl2.o: avltree/avl2.c
     326@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
     327@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po
     328@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl2.c' object='avl2.o' libtool=no @AMDEPBACKSLASH@
     329@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     330@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
     331
     332avl2.obj: avltree/avl2.c
     333@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`
     334@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl2.Tpo $(DEPDIR)/avl2.Po
     335@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl2.c' object='avl2.obj' libtool=no @AMDEPBACKSLASH@
     336@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     337@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`
     338
     339avl3.o: avltree/avl3.c
     340@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
     341@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po
     342@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl3.c' object='avl3.o' libtool=no @AMDEPBACKSLASH@
     343@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     344@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
     345
     346avl3.obj: avltree/avl3.c
     347@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`
     348@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl3.Tpo $(DEPDIR)/avl3.Po
     349@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl3.c' object='avl3.obj' libtool=no @AMDEPBACKSLASH@
     350@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     351@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`
     352
     353avl4.o: avltree/avl4.c
     354@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
     355@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po
     356@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl4.c' object='avl4.o' libtool=no @AMDEPBACKSLASH@
     357@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     358@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
     359
     360avl4.obj: avltree/avl4.c
     361@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`
     362@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl4.Tpo $(DEPDIR)/avl4.Po
     363@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl4.c' object='avl4.obj' libtool=no @AMDEPBACKSLASH@
     364@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     365@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`
     366
     367avl-private.o: avltree/avl-private.c
     368@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
     369@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po
     370@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.o' libtool=no @AMDEPBACKSLASH@
     371@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     372@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
     373
     374avl-private.obj: avltree/avl-private.c
     375@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`
     376@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/avl-private.Tpo $(DEPDIR)/avl-private.Po
     377@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='avltree/avl-private.c' object='avl-private.obj' libtool=no @AMDEPBACKSLASH@
     378@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     379@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`
    251380
    252381ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
  • src/examples/abstype.c

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

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:14:58 2015
    13 // Update Count     : 1
     12// Last Modified On : Mon Feb 29 18:06:17 2016
     13// Update Count     : 10
    1414//
    1515
    16 #include "fstream.h"
     16#include <fstream>
    1717
    1818int main() {
    19         ofstream *sout = ofstream_stdout();
    20         ifstream *sin = ifstream_stdin();
    21         sout << "Bonjour au monde!\n";
    22         sout << 3 << " " << 3.5 << " " << 'a' << " " << "abc" << "\n";
    23         int i, j, k;
    24         sin >> &i >> &j >> &k;
    25         sout << "i:" << i << " j:" << j << " k:" << k << "\n";
     19        sout | "Bonjour au monde!" | endl;
    2620}
    2721
    2822// Local Variables: //
    2923// tab-width: 4 //
    30 // compile-command: "cfa hello.c fstream.o iostream.o" //
     24// compile-command: "cfa hello.c" //
    3125// End: //
  • src/examples/huge.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:15:34 2015
    13 // Update Count     : 1
     12// Last Modified On : Tue Mar  8 22:16:32 2016
     13// Update Count     : 2
    1414//
    1515
    16 int huge( int n, forall( type T ) T (*f)( T ) ) {
     16int huge( int n, forall( otype T ) T (*f)( T ) ) {
    1717        if ( n <= 0 )
    1818                return f( 0 );
  • src/examples/identity.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:16:30 2015
    13 // Update Count     : 2
     12// Last Modified On : Tue Mar  8 22:15:08 2016
     13// Update Count     : 13
    1414//
    1515
    16 #include "fstream.h"
     16#include <fstream>
    1717
    18 forall( type T )
     18forall( otype T )
    1919T identity( T t ) {
    2020        return t;
     
    2222
    2323int main() {
    24         ofstream *sout = ofstream_stdout();
    25         char c = 'a';
    26         c = identity( c );
    27         sout << c << ' ' << identity( c ) << '\n';
    28         int i = 5;
    29         i = identity( i );
    30         sout << i << ' ' << identity( i ) << '\n';
    31         double d = 3.2;
    32         d = identity( d );
    33         sout << d << ' ' << identity( d ) << '\n';
     24        sout | "char\t\t\t"                                     | identity( 'z' ) | endl;
     25        sout | "signed int\t\t"                         | identity( 4 ) | endl;
     26        sout | "unsigned int\t\t"                       | identity( 4u ) | endl;
     27        sout | "signed long int\t\t"            | identity( 4l ) | endl;
     28        sout | "unsigned long int\t"            | identity( 4ul ) | endl;
     29        sout | "signed long long int\t"         | identity( 4ll ) | endl;
     30        sout | "unsigned long long int\t"       | identity( 4ull ) | endl;
     31        sout | "float\t\t\t"                            | identity( 4.1f ) | endl;
     32        sout | "double\t\t\t"                           | identity( 4.1 ) | endl;
     33        sout | "long double\t\t"                        | identity( 4.1l ) | endl;
    3434}
    3535
    3636// Local Variables: //
    3737// tab-width: 4 //
    38 // compile-command: "cfa identity.c fstream.o iostream.o" //
     38// compile-command: "cfa identity.c" //
    3939// End: //
  • src/examples/includes.c

    r679864e1 r242d458  
    77// includes.c --
    88//
    9 // Author           : Richard C. Bilson
     9// 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 : Fri Jun 26 15:04:33 2015
    13 // Update Count     : 14
     12// Last Modified On : Tue Jul 12 17:59:25 2016
     13// Update Count     : 371
    1414//
    1515
     16// ***********************************************
     17// USE -std=c99 WITH gxx TO GET SAME OUTPUT AS cfa
     18// ***********************************************
     19
     20#ifdef __CFA__
     21extern "C" {
     22#endif // __CFA__
     23
    1624#if 0
    17 //#include <aio.h>              // FAILS -- includes locale.h
     25#if 1
     26#define _GNU_SOURCE
     27#include <aio.h>
     28#include <a.out.h>
    1829#include <aliases.h>
    1930#include <alloca.h>
    2031#include <ansidecl.h>
    2132#include <ar.h>
    22 #include <argp.h>               // FAILS -- includes locale.h
    23 #include <argz.h>               // FAILS -- includes locale.h
     33#include <argp.h>
     34#include <argz.h>
    2435#include <assert.h>
    25 #include <bfd.h>                // contains structure field "type"
     36#include <bfd.h>
     37#include <bfdlink.h>
     38#include <byteswap.h>
     39#include <cblas.h>
     40#include <cblas_f77.h>
    2641#include <complex.h>
    27 #include <ctype.h>              // FAILS -- includes locale.h
     42#include <cpio.h>
     43#include <crypt.h>
     44#include <ctype.h>
     45#include <curses.h>
     46//#include <demangle.h>
     47#include <dialog.h>
     48#include <dirent.h>
     49#include <dis-asm.h>
     50#endif
     51#if 0
     52#include <dlfcn.h>
     53#include <dlg_colors.h>
     54#include <dlg_config.h>
     55#include <dlg_keys.h>
     56#include <elf.h>
     57#include <endian.h>
     58#include <envz.h>
     59#include <err.h>
    2860#include <errno.h>
     61#include <error.h>
     62#include <eti.h>
     63#include <evdns.h>
     64#include <event.h>
     65#include <evhttp.h>
     66#endif
     67#if 0
     68#include <evrpc.h>
     69#include <evutil.h>
     70#include <execinfo.h>
     71#include <expat.h>
     72#include <expat_config.h>
     73#include <expat_external.h>
     74#include <fcntl.h>
     75#include <features.h>
    2976#include <fenv.h>
    3077#include <float.h>
     78#include <fmtmsg.h>
     79#include <fnmatch.h>
     80#include <form.h>
     81#include <fpu_control.h>
     82#include <fstab.h>
     83//#include <ft2build.h>
     84#include <fts.h>
     85#include <ftw.h>
     86#include <gconv.h>
     87//#include <gcrypt.h>
     88//#include <gcrypt-module.h>
     89#include <getopt.h>
     90//#include <gettext-po.h>
     91#include <glob.h>
     92//#include <gmp.h>                      // infinite loop
     93////#include <gmpxx.h>
     94//#include <gmp-x86_64.h>
     95#include <gnu-versions.h>
     96//#include <gpg-error.h>
     97#include <grp.h>
     98#include <gshadow.h>
     99#include <iconv.h>
     100#include <idna.h>
     101#include <idn-free.h>
     102#include <idn-int.h>
     103#include <ieee754.h>
     104#include <ifaddrs.h>
    31105#include <inttypes.h>
    32106#include <iso646.h>
     107#include <jerror.h>
     108//#include <jmorecfg.h>
     109//#include <jpegint.h>
     110//#include <jpeglib.h>
    33111#include <limits.h>
    34 #include <locale.h>             // FAILS -- "no reasonable alternatives for applying ... Name: ?+? ..."
    35 #include <math.h>               // contains structure field "type"
     112#include <locale.h>
     113#include <math.h>
     114#include <ncurses.h>
    36115#include <setjmp.h>
    37116#include <signal.h>
     
    41120#include <stdlib.h>
    42121#include <stdio.h>
    43 #include <string.h>             // FAILS -- includes locale.h
     122#include <string.h>
    44123#include <tgmath.h>
    45 #include <time.h>               // FAILS -- includes locale.h
     124#include <time.h>
    46125#include <unistd.h>
    47 #include <wchar.h>              // FAILS -- includes locale.h
    48 #include <wctype.h>             // FAILS -- includes locale.h
    49 #include <curses.h>
     126#include <wchar.h>
     127#include <wctype.h>
     128#endif // 0
     129
    50130#else
    51 #include <aio.h>                // FAILS -- includes locale.h
     131
     132#define _GNU_SOURCE
     133//#include <bfd.h>
     134//#include <error.h>
     135
     136#include <demangle.h>
     137
    52138#endif // 0
     139
     140#ifdef __CFA__
     141} // extern "C"
     142#endif // __CFA__
    53143
    54144// Local Variables: //
  • src/examples/index.h

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:17:31 2015
    13 // Update Count     : 1
     12// Last Modified On : Wed Mar  2 18:10:46 2016
     13// Update Count     : 2
    1414//
    1515
    16 context index( type T ) {
     16trait index( type T ) {
    1717        T ?+?( T, T );
    1818        T ?-?( T, T );
  • src/examples/it_out.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:41:23 2015
    13 // Update Count     : 4
     12// Last Modified On : Tue Mar  8 22:14:39 2016
     13// Update Count     : 8
    1414//
    1515
    1616typedef unsigned long streamsize_type;
    1717
    18 context ostream( dtype os_type ) {
     18trait ostream( dtype os_type ) {
    1919        os_type *write( os_type *, const char *, streamsize_type );
    2020        int fail( os_type * );
    2121};
    2222
    23 context writeable( type T ) {
     23trait writeable( otype T ) {
    2424        forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, T );
    2525};
     
    2929forall( dtype os_type | ostream( os_type ) ) os_type * ?<<?( os_type *, const char * );
    3030
    31 context istream( dtype is_type ) {
     31trait istream( dtype is_type ) {
    3232        is_type *read( is_type *, char *, streamsize_type );
    3333        is_type *unread( is_type *, char );
     
    3636};
    3737
    38 context readable( type T ) {
     38trait readable( otype T ) {
    3939        forall( dtype is_type | istream( is_type ) ) is_type * ?<<?( is_type *, T );
    4040};
     
    4343forall( dtype is_type | istream( is_type ) ) is_type * ?>>?( is_type *, int* );
    4444
    45 context iterator( type iterator_type, type elt_type ) {
     45trait iterator( otype iterator_type, otype elt_type ) {
    4646        iterator_type ?++( iterator_type* );
    4747        iterator_type ++?( iterator_type* );
     
    5252};
    5353
    54 forall( type elt_type | writeable( elt_type ),
    55                 type iterator_type | iterator( iterator_type, elt_type ),
     54forall( otype elt_type | writeable( elt_type ),
     55                otype iterator_type | iterator( iterator_type, elt_type ),
    5656                dtype os_type | ostream( os_type ) )
    5757void write_all( iterator_type begin, iterator_type end, os_type *os );
    5858
    59 forall( type elt_type | writeable( elt_type ),
    60                 type iterator_type | iterator( iterator_type, elt_type ),
     59forall( otype elt_type | writeable( elt_type ),
     60                otype iterator_type | iterator( iterator_type, elt_type ),
    6161                dtype os_type | ostream( os_type ) )
    6262void write_all( elt_type begin, iterator_type end, os_type *os ) {
  • src/examples/new.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:23:55 2015
    13 // Update Count     : 1
     12// Last Modified On : Tue Mar  8 22:13:20 2016
     13// Update Count     : 4
    1414//
    1515
    16 forall( type T )
     16forall( otype T )
    1717void f( T *t ) {
    1818        t--;
     
    2525        t - 4;
    2626        t[7];
    27         7[t];
    2827}
    2928
  • src/examples/prolog.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:25:52 2015
    13 // Update Count     : 1
     12// Last Modified On : Tue Mar  8 22:09:39 2016
     13// Update Count     : 5
    1414//
    1515
    16 extern "C" { extern int printf( const char *fmt, ... ); }
     16#include <fstream>
    1717
    18 void printResult( int x ) { printf( "int\n" ); }
    19 void printResult( double x ) { printf( "double\n" ); }
    20 void printResult( char * x ) { printf( "char*\n" ); }
     18void printResult( int x ) { sout | "int" | endl; }
     19void printResult( double x ) { sout | "double" | endl; }
     20void printResult( char * x ) { sout | "char*" | endl; }
    2121
    2222void is_arithmetic( int x ) {}
     
    2525void is_integer( int x ) {}
    2626
    27 context ArithmeticType( type T ) {
     27trait ArithmeticType( otype T ) {
    2828        void is_arithmetic( T );
    2929};
    3030
    31 context IntegralType( type T | ArithmeticType( T ) ) {
     31trait IntegralType( otype T | ArithmeticType( T ) ) {
    3232        void is_integer( T );
    3333};
    3434
    35 forall( type T | IntegralType( T ) | { void printResult( T ); } )
     35forall( otype T | IntegralType( T ) | { void printResult( T ); } )
    3636void hornclause( T param ) {
    3737        printResult( param );
  • src/examples/quad.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:26:36 2015
    13 // Update Count     : 2
     12// Last Modified On : Tue Mar  8 22:07:02 2016
     13// Update Count     : 8
    1414//
    1515
    16 extern "C" {
    17 #include <stdio.h>
    18 }
     16#include <fstream>
    1917
    20 forall( type T | { T ?*?( T, T ); } )
     18forall( otype T | { T ?*?( T, T ); } )
    2119T square( T t ) {
    2220        return t * t;
    2321}
    2422
    25 forall( type U | { U square( U ); } )
     23forall( otype U | { U square( U ); } )
    2624U quad( U u ) {
    2725        return square( square( u ) );
     
    3028int main() {
    3129        int N = 2;
    32         printf( "result of quad of %d is %d\n", N, quad( N ) );
     30        sout | "result of quad of" | N | "is" | quad( N ) | endl;
    3331}
    3432
  • src/examples/s.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:42:39 2015
    13 // Update Count     : 2
     12// Last Modified On : Sun Jan  3 22:38:45 2016
     13// Update Count     : 3
    1414//
    1515
     
    1717
    1818void f() {
    19 //      int a;
    20 //      a ? 4 : 5;
     19        int a;
     20        a ? 4 : 5;
    2121        1 ? 4 : 5;
    2222        0 ? 4 : 5;
  • src/examples/simplePoly.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:31:17 2015
    13 // Update Count     : 2
     12// Last Modified On : Tue Mar  8 22:06:41 2016
     13// Update Count     : 3
    1414//
    1515
    16 forall( type T, type U | { T f( T, U ); } )
     16forall( otype T, otype U | { T f( T, U ); } )
    1717T q( T t, U u ) {
    1818        return f( t, u );
  • src/examples/simpler.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:31:48 2015
    13 // Update Count     : 1
     12// Last Modified On : Tue Mar  8 22:06:30 2016
     13// Update Count     : 2
    1414//
    1515
    16 forall( type T ) T id( T, T );
     16forall( otype T ) T id( T, T );
    1717
    1818int main() {
  • src/examples/specialize.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:32:26 2015
    13 // Update Count     : 2
     12// Last Modified On : Tue Mar  8 22:06:17 2016
     13// Update Count     : 3
    1414//
    1515
     
    3939}
    4040
    41 forall( type T ) T f( T t )
     41forall( otype T ) T f( T t )
    4242{
    4343        printf( "in f; sizeof T is %d\n", sizeof( T ) );
  • src/examples/square.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:43:34 2015
    13 // Update Count     : 2
     12// Last Modified On : Tue Mar  8 22:05:48 2016
     13// Update Count     : 27
    1414//
    1515
    16 extern "C" {
    17 #include <stdio.h>
    18 }
     16#include <fstream>
    1917
    20 forall( type T | { T ?*?( T, T ); } )
     18forall( otype T | { T ?*?( T, T ); } )
    2119T square( T t ) {
    2220        return t * t;
    23 }
    24 
    25 //char ?*?( char a1, char a2 ) {
    26 //      return (char)( (int)a1 * (int)a2 );
    27 //}
     21} // square
    2822
    2923int main() {
    30         char c = 5;
    31         short int s = 5;
    32         int i = 5;
    33         float f = 5.0;
    34         double d = 5.0;
    35 //      printf( "result of square of 5 is %d\n", (char)square( c ) );
    36         printf( "result of square of 5 is %d\n", square( s ) );
    37         printf( "result of square of 5 is %d\n", square( i ) );
    38         printf( "result of square of 5 is %f\n", square( f ) );
    39         printf( "result of square of 5 is %f\n", square( d ) );
    40 }
     24#if 0
     25        sout | "result of squaring 9 is " | endl;
     26
     27        // char does not have multiplication.
     28        char ?*?( char a1, char a2 ) {
     29                return (char)((int)a1 * (int)a2);
     30        } // ?*?
     31        char c = 9;
     32        sout | "char\t\t\t" | square( c ) | endl;
     33
     34        sout | square( s ) | endl;
     35#endif
     36        short s = 9;
     37        square( s );
     38#if 0
     39        signed int i = 9;
     40        sout | "signed int\t\t" | square( i ) | endl;
     41
     42        unsigned int ui = 9;
     43        sout | "unsigned int\t\t" | square( ui ) | endl;
     44
     45        long int li = 9;
     46        sout | "signed long int\t\t" | square( li ) | endl;
     47
     48        unsigned long int uli = 9;
     49        sout | "unsigned long int\t" | square( uli ) | endl;
     50
     51        signed long long int lli = 9;
     52        sout | "signed long long int\t" | square( lli ) | endl;
     53
     54        unsigned long long int ulli = 9;
     55        sout | "unsigned long long int\t" | square( ulli ) | endl;
     56
     57        float f = 9.0;
     58        sout | "float\t\t\t" | square( f ) | endl;
     59
     60        double d = 9.0;
     61        sout | "double\t\t\t" | square( d ) | endl;
     62
     63        long double ld = 9.0;
     64        sout | "long double\t\t" | square( ld ) | endl;
     65#endif
     66} // main
    4167
    4268// Local Variables: //
  • src/examples/sum.c

    r679864e1 r242d458  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // sum.c --
     7// sum.c -- test resolvers ability to deal with many variables with the same name and to use the minimum number of casts
     8//    necessary to disambiguate overloaded variable names.
    89//
    9 // Author           : Richard C. Bilson
     10// Author           : Peter A. Buhr
    1011// Created On       : Wed May 27 17:56:53 2015
    1112// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  1 20:46:35 2015
    13 // Update Count     : 18
     13// Last Modified On : Thu May 26 09:25:42 2016
     14// Update Count     : 201
    1415//
    1516
    16 extern "C" {
    17         int printf( const char *, ... );
    18 }
     17#include <fstream>
    1918
    20 context sumable( type T ) {
     19trait sumable( otype T ) {
    2120        const T 0;
    2221        T ?+?( T, T );
     22        T ?+=?( T *, T );
     23        T ++?( T * );
    2324        T ?++( T * );
    24         T ?+=?( T *, T );
    25 };
     25}; // sumable
    2626
    27 forall( type T | sumable( T ) )
    28 T sum( int n, T a[] ) {
    29         T total;                                                                                        // instantiate T, select 0
    30         total = 0;
    31         for ( int i = 0; i < n; i += 1 )
    32                 total = total + a[i];                                                   // select +
     27forall( otype T | sumable( T ) )
     28T sum( unsigned int n, T a[] ) {
     29        T total = 0;                                                                            // instantiate T, select 0
     30        for ( unsigned int i = 0; i < n; i += 1 )
     31                total += a[i];                                                                  // select +
    3332        return total;
    34 }
     33} // sum
    3534
    3635// Required to satisfy sumable as char does not have addition.
    3736const char 0;
    38 char ?+?( char op1, char op2 ) { return op1 + op2; }
    39 char ?++( char *op ) { return *op + 1; }
     37char ?+?( char t1, char t2 ) { return (int)t1 + t2; }   // cast forces integer addition, otherwise recursion
     38char ?+=?( char *t1, char t2 ) { *t1 = *t1 + t2; return *t1; }
     39char ++?( char *t ) { *t += 1; return *t; }
     40char ?++( char *t ) { char temp = *t; *t += 1; return temp; }
    4041
    41 const double 0; // TEMPORARY, incorrect use of int 0
     42int main( void ) {
     43        const int low = 5, High = 15, size = High - low;
    4244
    43 int main() {
    44         const int low = 5, High = 15, size = High - low;
    45         int si = 0, ai[size];
    46         int v = low;
     45        char s = 0, a[size], v = low;
    4746        for ( int i = 0; i < size; i += 1, v += 1 ) {
    48                 si += v;
    49                 ai[i] = v;
    50         }
    51         printf( "sum from %d to %d is %d, check %d\n",
    52                         low, High, sum( size, ai ), si );
     47                s += v;
     48                a[i] = v;
     49        } // for
     50        sout | "sum from" | low | "to" | High | "is"
     51                 | (int)sum( size, a ) | ", check" | (int)s | endl;
    5352
    54 //      char ci[size];
    55 //      char c = sum( size, ci );
    56 //      float fi[size];
    57 //      float f = sum( size, fi );
     53        int s = 0, a[size], v = low;
     54        for ( int i = 0; i < size; i += 1, v += 1 ) {
     55                s += (int)v;
     56                a[i] = (int)v;
     57        } // for
     58        sout | "sum from" | low | "to" | High | "is"
     59                 | sum( size, (int *)a ) | ", check" | (int)s | endl;
    5860
    59         double sd = 0.0, ad[size];
    60         double v = low / 10.0;
     61        float s = 0.0, a[size], v = low / 10.0;
     62        for ( int i = 0; i < size; i += 1, v += 0.1f ) {
     63                s += (float)v;
     64                a[i] = (float)v;
     65        } // for
     66        sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
     67                 | sum( size, (float *)a ) | ", check" | (float)s | endl;
     68
     69        double s = 0, a[size], v = low / 10.0;
    6170        for ( int i = 0; i < size; i += 1, v += 0.1 ) {
    62                 sd += v;
    63                 ad[i] = v;
    64         }
    65         printf( "sum from %g to %g is %g, check %g\n",
    66                         low / 10.0, High / 10.0, sum( size, ad ), sd );
    67 }
     71                s += (double)v;
     72                a[i] = (double)v;
     73        } // for
     74        sout | "sum from" | low / 10.0 | "to" | High / 10.0 | "is"
     75                 | sum( size, (double *)a ) | ", check" | (double)s | endl;
     76
     77        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 }; }
     79        S ?+=?( S *t1, S t2 ) { *t1 = *t1 + t2; return *t1; }
     80        S ++?( S *t ) { *t += 1; return *t; }
     81        S ?++( S *t ) { S temp = *t; *t += 1; return temp; }
     82        ofstream * ?|?( ofstream * os, S v ) { return os | v.i | v.j; }
     83
     84        S s = 0, a[size], v = { low, low };
     85        for ( int i = 0; i < size; i += 1, v += (S)1 ) {
     86                s += (S)v;
     87                a[i] = (S)v;
     88        } // for
     89        sout | "sum from" | low | "to" | High | "is"
     90                 | sum( size, (S *)a ) | ", check" | (S)s | endl;
     91} // main
    6892
    6993// Local Variables: //
  • src/examples/twice.c

    r679864e1 r242d458  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed May 27 18:37:23 2015
    13 // Update Count     : 1
     12// Last Modified On : Tue Mar  8 22:04:58 2016
     13// Update Count     : 16
    1414//
    1515
    16 #include "fstream.h"
     16#include <fstream>
    1717
    18 forall( type T | { T ?+?( T, T ); T ?++( T * ); [T] ?+=?( T *, T ); } )
     18forall( otype T | { T ?+?( T, T ); T ?++( T * ); [T] ?+=?( T *, T ); } )
    1919T twice( const T t ) {
    2020        return t + t;
    2121}
    2222
    23 int main() {
    24         ofstream *sout = ofstream_stdout();
    25         sout << twice( 1 ) << ' ' << twice( 3.2 ) << '\n';
     23int main( void ) {
     24        // char does not have addition
     25        char ?+?( char op1, char op2 ) { return (int)op1 + op2; } // cast forces integer addition or recursion
     26        char ++?( char *op ) { *op += 1; return *op; }
     27        char ?++( char *op ) { char temp = *op; *op += 1; return temp; }
     28
     29        sout | twice( 'a' ) | ' ' | twice( 1 ) | twice( 3.2 ) | endl;
    2630}
    2731
    2832// Local Variables: //
    2933// tab-width: 4 //
    30 // compile-command: "cfa twice.c fstream.o iostream.o" //
     34// compile-command: "cfa twice.c" //
    3135// End: //
  • src/initialization.txt

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

    r679864e1 r242d458  
    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 : Thu Jun  4 22:49:16 2015
    14 ## Update Count     : 7
     13## Last Modified On : Tue Aug  2 12:17:23 2016
     14## Update Count     : 196
    1515###############################################################################
    1616
    17 libcfa_a_SOURCES = libcfa-prelude.c
     17# create object files in directory with source files
     18AUTOMAKE_OPTIONS = subdir-objects
     19
    1820lib_LIBRARIES = libcfa.a
    1921
    2022# put into lib for now
    2123cfalibdir = ${libdir}
    22 cfalib_DATA = prelude.cf builtins.cf
     24cfalib_DATA = builtins.cf extras.cf prelude.cf
     25
     26# create extra forward types/declarations to reduce inclusion of library files
     27extras.cf : extras.regx extras.c
     28        ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
    2329
    2430# create forward declarations for gcc builtins
    25 ${libdir}/builtins.cf : ${libdir} ${srcdir}/builtins.cf
    26         ${INSTALL} ${srcdir}/builtins.cf ${libdir}
    27         sed -i -e "s#typedef.*ptrdiff_t.*#`@BACKEND_CC@ -E ${srcdir}/ptrdiff_t.c | grep 'typedef.*ptrdiff_t'`#" ${srcdir}/prelude.cf
    28 
    2931builtins.cf : builtins.c
    30         @if [ -e $< ] ; then \
     32        ${AM_V_GEN}if [ -e $< ] ; then \
    3133                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    3234        fi
    3335
    3436builtins.c : builtins.def prototypes.awk
    35         @if [ -e $< ] ; then \
     37        ${AM_V_GEN}if [ -e $< ] ; then \
    3638                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    3739        fi
     
    4143prototypes.awk :
    4244
    43 MAINTAINERCLEANFILES = ${srcdir}/libcfa-prelude.c
     45MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
    4446
    45 libcfa-prelude.c : ${srcdir}/prelude.cf
    46         ${libdir}/cfa-cpp -l ${srcdir}/prelude.cf $@
     47#--------------------------------------------------
     48
     49libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
     50        ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    4751
    4852libcfa-prelude.o : libcfa-prelude.c
    49         ${BACKEND_CC} -c -o $@ $<
     53         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
     54
     55CFLAGS = -quiet -no-include-std -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
     56CC = ${abs_top_srcdir}/src/driver/cfa
     57
     58headers = limits stdlib math iostream fstream iterator rational containers/vector
     59libobjs = ${headers:=.o}
     60
     61# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
     62% : %.c
     63        @true
     64
     65${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
     66
     67libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
     68
     69stdhdr = ${shell echo stdhdr/*}
     70
     71nobase_include_HEADERS = ${headers} ${stdhdr}
     72
     73CLEANFILES = libcfa-prelude.c
     74
     75maintainer-clean-local:
     76        -rm -rf ${includedir}/*
  • src/libcfa/Makefile.in

    r679864e1 r242d458  
    1818######################## -*- Mode: Makefile-Automake -*- ######################
    1919###############################################################################
     20
    2021
    2122
     
    3839POST_UNINSTALL = :
    3940subdir = src/libcfa
    40 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
     41DIST_COMMON = $(nobase_include_HEADERS) $(srcdir)/Makefile.am \
     42        $(srcdir)/Makefile.in
    4143ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    4244am__aclocal_m4_deps = $(top_srcdir)/configure.ac
     
    7476         $(am__cd) "$$dir" && rm -f $$files; }; \
    7577  }
    76 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)"
     78am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)" \
     79        "$(DESTDIR)$(includedir)"
    7780LIBRARIES = $(lib_LIBRARIES)
    7881AR = ar
    7982ARFLAGS = cru
     83AM_V_AR = $(am__v_AR_@AM_V@)
     84am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
     85am__v_AR_0 = @echo "  AR    " $@;
     86AM_V_at = $(am__v_at_@AM_V@)
     87am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     88am__v_at_0 = @
    8089libcfa_a_AR = $(AR) $(ARFLAGS)
    8190libcfa_a_LIBADD =
    82 am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT)
     91am__dirstamp = $(am__leading_dot)dirstamp
     92am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) math.$(OBJEXT) \
     93        iostream.$(OBJEXT) fstream.$(OBJEXT) iterator.$(OBJEXT) \
     94        rational.$(OBJEXT) containers/vector.$(OBJEXT)
     95am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT) $(am__objects_1)
    8396libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
    8497DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
     
    88101COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    89102        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     103AM_V_CC = $(am__v_CC_@AM_V@)
     104am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     105am__v_CC_0 = @echo "  CC    " $@;
    90106CCLD = $(CC)
    91107LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
     108AM_V_CCLD = $(am__v_CCLD_@AM_V@)
     109am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
     110am__v_CCLD_0 = @echo "  CCLD  " $@;
     111AM_V_GEN = $(am__v_GEN_@AM_V@)
     112am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     113am__v_GEN_0 = @echo "  GEN   " $@;
    92114SOURCES = $(libcfa_a_SOURCES)
    93115DIST_SOURCES = $(libcfa_a_SOURCES)
    94116DATA = $(cfalib_DATA)
     117HEADERS = $(nobase_include_HEADERS)
    95118ETAGS = etags
    96119CTAGS = ctags
     
    99122ALLOCA = @ALLOCA@
    100123AMTAR = @AMTAR@
     124AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    101125AUTOCONF = @AUTOCONF@
    102126AUTOHEADER = @AUTOHEADER@
     
    104128AWK = @AWK@
    105129BACKEND_CC = @BACKEND_CC@
    106 CC = @CC@
     130CC = ${abs_top_srcdir}/src/driver/cfa
    107131CCDEPMODE = @CCDEPMODE@
     132CFA_BACKEND_CC = @CFA_BACKEND_CC@
    108133CFA_BINDIR = @CFA_BINDIR@
     134CFA_FLAGS = @CFA_FLAGS@
    109135CFA_INCDIR = @CFA_INCDIR@
    110136CFA_LIBDIR = @CFA_LIBDIR@
    111137CFA_PREFIX = @CFA_PREFIX@
    112 CFLAGS = @CFLAGS@
     138CFLAGS = -quiet -no-include-std -g -Wall -Wno-unused-function @CFA_FLAGS@ -B${abs_top_srcdir}/src/driver -XCFA -t # TEMPORARY: does not build with -O2
    113139CPP = @CPP@
    114140CPPFLAGS = @CPPFLAGS@
     
    124150EGREP = @EGREP@
    125151EXEEXT = @EXEEXT@
    126 GCC_PATH = @GCC_PATH@
    127152GREP = @GREP@
    128153INSTALL = @INSTALL@
     
    200225top_builddir = @top_builddir@
    201226top_srcdir = @top_srcdir@
    202 libcfa_a_SOURCES = libcfa-prelude.c
     227
     228# create object files in directory with source files
     229AUTOMAKE_OPTIONS = subdir-objects
    203230lib_LIBRARIES = libcfa.a
    204231
    205232# put into lib for now
    206233cfalibdir = ${libdir}
    207 cfalib_DATA = prelude.cf builtins.cf
    208 MAINTAINERCLEANFILES = ${srcdir}/libcfa-prelude.c
     234cfalib_DATA = builtins.cf extras.cf prelude.cf
     235MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
     236headers = limits stdlib math iostream fstream iterator rational containers/vector
     237libobjs = ${headers:=.o}
     238libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
     239stdhdr = ${shell echo stdhdr/*}
     240nobase_include_HEADERS = ${headers} ${stdhdr}
     241CLEANFILES = libcfa-prelude.c
    209242all: all-am
    210243
     
    220253          esac; \
    221254        done; \
    222         echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libcfa/Makefile'; \
     255        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libcfa/Makefile'; \
    223256        $(am__cd) $(top_srcdir) && \
    224           $(AUTOMAKE) --gnu src/libcfa/Makefile
     257          $(AUTOMAKE) --foreign src/libcfa/Makefile
    225258.PRECIOUS: Makefile
    226259Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
     
    271304clean-libLIBRARIES:
    272305        -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
     306containers/$(am__dirstamp):
     307        @$(MKDIR_P) containers
     308        @: > containers/$(am__dirstamp)
     309containers/$(DEPDIR)/$(am__dirstamp):
     310        @$(MKDIR_P) containers/$(DEPDIR)
     311        @: > containers/$(DEPDIR)/$(am__dirstamp)
     312containers/vector.$(OBJEXT): containers/$(am__dirstamp) \
     313        containers/$(DEPDIR)/$(am__dirstamp)
    273314libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES)
    274         -rm -f libcfa.a
    275         $(libcfa_a_AR) libcfa.a $(libcfa_a_OBJECTS) $(libcfa_a_LIBADD)
    276         $(RANLIB) libcfa.a
     315        $(AM_V_at)-rm -f libcfa.a
     316        $(AM_V_AR)$(libcfa_a_AR) libcfa.a $(libcfa_a_OBJECTS) $(libcfa_a_LIBADD)
     317        $(AM_V_at)$(RANLIB) libcfa.a
    277318
    278319mostlyclean-compile:
    279320        -rm -f *.$(OBJEXT)
     321        -rm -f containers/vector.$(OBJEXT)
    280322
    281323distclean-compile:
    282324        -rm -f *.tab.c
    283325
     326@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream.Po@am__quote@
     327@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iostream.Po@am__quote@
     328@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iterator.Po@am__quote@
    284329@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcfa-prelude.Po@am__quote@
     330@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/limits.Po@am__quote@
     331@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Po@am__quote@
     332@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rational.Po@am__quote@
     333@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stdlib.Po@am__quote@
     334@AMDEP_TRUE@@am__include@ @am__quote@containers/$(DEPDIR)/vector.Po@am__quote@
    285335
    286336.c.o:
    287 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
    288 @am__fastdepCC_TRUE@    $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    289 @AMDEP_TRUE@@am__fastdepCC_FALSE@       source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     337@am__fastdepCC_TRUE@    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
     338@am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
     339@am__fastdepCC_TRUE@    $(am__mv) $$depbase.Tpo $$depbase.Po
     340@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    290341@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    291 @am__fastdepCC_FALSE@   $(COMPILE) -c $<
     342@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
    292343
    293344.c.obj:
    294 @am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
    295 @am__fastdepCC_TRUE@    $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
    296 @AMDEP_TRUE@@am__fastdepCC_FALSE@       source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     345@am__fastdepCC_TRUE@    $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
     346@am__fastdepCC_TRUE@    $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
     347@am__fastdepCC_TRUE@    $(am__mv) $$depbase.Tpo $$depbase.Po
     348@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
    297349@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    298 @am__fastdepCC_FALSE@   $(COMPILE) -c `$(CYGPATH_W) '$<'`
     350@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    299351install-cfalibDATA: $(cfalib_DATA)
    300352        @$(NORMAL_INSTALL)
     
    315367        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
    316368        dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir)
     369install-nobase_includeHEADERS: $(nobase_include_HEADERS)
     370        @$(NORMAL_INSTALL)
     371        test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
     372        @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \
     373        $(am__nobase_list) | while read dir files; do \
     374          xfiles=; for file in $$files; do \
     375            if test -f "$$file"; then xfiles="$$xfiles $$file"; \
     376            else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
     377          test -z "$$xfiles" || { \
     378            test "x$$dir" = x. || { \
     379              echo "$(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \
     380              $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \
     381            echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \
     382            $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \
     383        done
     384
     385uninstall-nobase_includeHEADERS:
     386        @$(NORMAL_UNINSTALL)
     387        @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \
     388        $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
     389        dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
    317390
    318391ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     
    400473check-am: all-am
    401474check: check-am
    402 all-am: Makefile $(LIBRARIES) $(DATA)
     475all-am: Makefile $(LIBRARIES) $(DATA) $(HEADERS)
    403476installdirs:
    404         for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)"; do \
     477        for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)" "$(DESTDIR)$(includedir)"; do \
    405478          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
    406479        done
     
    427500
    428501clean-generic:
     502        -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
    429503
    430504distclean-generic:
    431505        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
    432506        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
     507        -rm -f containers/$(DEPDIR)/$(am__dirstamp)
     508        -rm -f containers/$(am__dirstamp)
    433509
    434510maintainer-clean-generic:
     
    441517
    442518distclean: distclean-am
    443         -rm -rf ./$(DEPDIR)
     519        -rm -rf ./$(DEPDIR) containers/$(DEPDIR)
    444520        -rm -f Makefile
    445521distclean-am: clean-am distclean-compile distclean-generic \
     
    458534info-am:
    459535
    460 install-data-am: install-cfalibDATA
     536install-data-am: install-cfalibDATA install-nobase_includeHEADERS
    461537
    462538install-dvi: install-dvi-am
     
    487563
    488564maintainer-clean: maintainer-clean-am
    489         -rm -rf ./$(DEPDIR)
     565        -rm -rf ./$(DEPDIR) containers/$(DEPDIR)
    490566        -rm -f Makefile
    491 maintainer-clean-am: distclean-am maintainer-clean-generic
     567maintainer-clean-am: distclean-am maintainer-clean-generic \
     568        maintainer-clean-local
    492569
    493570mostlyclean: mostlyclean-am
     
    503580ps-am:
    504581
    505 uninstall-am: uninstall-cfalibDATA uninstall-libLIBRARIES
     582uninstall-am: uninstall-cfalibDATA uninstall-libLIBRARIES \
     583        uninstall-nobase_includeHEADERS
    506584
    507585.MAKE: install-am install-strip
     
    514592        install-exec install-exec-am install-html install-html-am \
    515593        install-info install-info-am install-libLIBRARIES install-man \
    516         install-pdf install-pdf-am install-ps install-ps-am \
    517         install-strip installcheck installcheck-am installdirs \
    518         maintainer-clean maintainer-clean-generic mostlyclean \
     594        install-nobase_includeHEADERS install-pdf install-pdf-am \
     595        install-ps install-ps-am install-strip installcheck \
     596        installcheck-am installdirs maintainer-clean \
     597        maintainer-clean-generic maintainer-clean-local mostlyclean \
    519598        mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
    520599        tags uninstall uninstall-am uninstall-cfalibDATA \
    521         uninstall-libLIBRARIES
    522 
     600        uninstall-libLIBRARIES uninstall-nobase_includeHEADERS
     601
     602
     603# create extra forward types/declarations to reduce inclusion of library files
     604extras.cf : extras.regx extras.c
     605        ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
    523606
    524607# create forward declarations for gcc builtins
    525 ${libdir}/builtins.cf : ${libdir} ${srcdir}/builtins.cf
    526         ${INSTALL} ${srcdir}/builtins.cf ${libdir}
    527         sed -i -e "s#typedef.*ptrdiff_t.*#`@BACKEND_CC@ -E ${srcdir}/ptrdiff_t.c | grep 'typedef.*ptrdiff_t'`#" ${srcdir}/prelude.cf
    528 
    529608builtins.cf : builtins.c
    530         @if [ -e $< ] ; then \
     609        ${AM_V_GEN}if [ -e $< ] ; then \
    531610                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    532611        fi
    533612
    534613builtins.c : builtins.def prototypes.awk
    535         @if [ -e $< ] ; then \
     614        ${AM_V_GEN}if [ -e $< ] ; then \
    536615                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    537616        fi
     
    541620prototypes.awk :
    542621
    543 libcfa-prelude.c : ${srcdir}/prelude.cf
    544         ${libdir}/cfa-cpp -l ${srcdir}/prelude.cf $@
     622#--------------------------------------------------
     623
     624libcfa-prelude.c : ${srcdir}/prelude.cf ${srcdir}/extras.cf ${srcdir}/builtins.cf
     625        ${AM_V_GEN}${abs_top_srcdir}/src/driver/cfa-cpp -l ${srcdir}/prelude.cf $@  # use src/cfa-cpp as not in lib until after install
    545626
    546627libcfa-prelude.o : libcfa-prelude.c
    547         ${BACKEND_CC} -c -o $@ $<
     628         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
     629
     630# extensionless header files are overridden by -o flag in default makerule => explicitly override default rule to silently do nothing
     631% : %.c
     632        @true
     633
     634${libobjs} : ${abs_top_srcdir}/src/driver/cfa-cpp ${cfalib_DATA} # add dependency to cfa-cpp so all libraries are rebuilt with new translator
     635
     636maintainer-clean-local:
     637        -rm -rf ${includedir}/*
    548638
    549639# Tell versions [3.59,3.63) of GNU make to not export all variables.
  • src/libcfa/prelude.cf

    r679864e1 r242d458  
    1 //                               -*- Mode: C -*- 
    2 // 
     1//                               -*- Mode: C -*-
     2//
    33// Copyright (C) Glen Ditchfield 1994, 1999
    4 // 
     4//
    55// prelude.cf -- Standard Cforall Preample for C99
    6 // 
     6//
    77// Author           : Glen Ditchfield
    88// Created On       : Sat Nov 29 07:23:41 2014
    99// Last Modified By : Peter A. Buhr
    10 // Last Modified On : Tue Jun  9 14:43:47 2015
    11 // Update Count     : 75
    12 //
    13 
    14 // Following line added from stddef.h by build
    15 
    16 typedef long int ptrdiff_t;
     10// Last Modified On : Tue Jul  5 18:04:40 2016
     11// Update Count     : 92
     12//
     13
     14# 2 "prelude.cf"  // needed for error messages from this file
    1715
    1816// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
     
    6361long double _Complex    ?--( long double _Complex * ),          ?--( volatile long double _Complex * );
    6462
    65 forall( type T ) T *                     ?++(                T ** );
    66 forall( type T ) const T *               ?++( const          T ** );
    67 forall( type T ) volatile T *            ?++(       volatile T ** );
    68 forall( type T ) const volatile T *      ?++( const volatile T ** );
    69 forall( type T ) T *                     ?--(                T ** );
    70 forall( type T ) const T *               ?--( const          T ** );
    71 forall( type T ) volatile T *            ?--(       volatile T ** );
    72 forall( type T ) const volatile T *      ?--( const volatile T ** );
    73 
    74 forall( type T ) lvalue T                ?[?](                T *,          ptrdiff_t );
    75 forall( type T ) const lvalue T          ?[?]( const          T *,          ptrdiff_t );
    76 forall( type T ) volatile lvalue T       ?[?](       volatile T *,          ptrdiff_t );
    77 forall( type T ) const volatile lvalue T ?[?]( const volatile T *,          ptrdiff_t );
    78 forall( type T ) lvalue T                ?[?](          ptrdiff_t,                T * );
    79 forall( type T ) const lvalue T          ?[?](          ptrdiff_t, const          T * );
    80 forall( type T ) volatile lvalue T       ?[?](          ptrdiff_t,       volatile T * );
    81 forall( type T ) const volatile lvalue T ?[?](          ptrdiff_t, const volatile T * );
     63forall( otype T ) T *                    ?++(                T ** );
     64forall( otype T ) const T *              ?++( const          T ** );
     65forall( otype T ) volatile T *           ?++(       volatile T ** );
     66forall( otype T ) const volatile T *     ?++( const volatile T ** );
     67forall( otype T ) T *                    ?--(                T ** );
     68forall( otype T ) const T *              ?--( const          T ** );
     69forall( otype T ) volatile T *           ?--(       volatile T ** );
     70forall( otype T ) const volatile T *     ?--( const volatile T ** );
     71
     72forall( otype T ) lvalue T               ?[?](                T *,          ptrdiff_t );
     73forall( otype T ) const lvalue T         ?[?]( const          T *,          ptrdiff_t );
     74forall( otype T ) volatile lvalue T      ?[?](       volatile T *,          ptrdiff_t );
     75forall( otype T ) const volatile lvalue T ?[?]( const volatile T *,         ptrdiff_t );
     76forall( otype T ) lvalue T               ?[?](          ptrdiff_t,                T * );
     77forall( otype T ) const lvalue T         ?[?](          ptrdiff_t, const          T * );
     78forall( otype T ) volatile lvalue T      ?[?](          ptrdiff_t,       volatile T * );
     79forall( otype T ) const volatile lvalue T ?[?](         ptrdiff_t, const volatile T * );
    8280
    8381// ------------------------------------------------------------
     
    10199long double _Complex    ++?( long double _Complex * ),          --?( long double _Complex * );
    102100
    103 forall( type T ) T *                     ++?(                T ** );
    104 forall( type T ) const T *               ++?( const          T ** );
    105 forall( type T ) volatile T *            ++?(       volatile T ** );
    106 forall( type T ) const volatile T *      ++?( const volatile T ** );
    107 forall( type T ) T *                     --?(                T ** );
    108 forall( type T ) const T *               --?( const          T ** );
    109 forall( type T ) volatile T *            --?(       volatile T ** );
    110 forall( type T ) const volatile T *      --?( const volatile T ** );
    111 
    112 forall( type T ) lvalue T                *?(                 T * );
    113 forall( type T ) const lvalue T          *?( const           T * );
    114 forall( type T ) volatile lvalue T       *?(       volatile  T * );
    115 forall( type T ) const volatile lvalue T *?( const volatile  T * );
     101forall( otype T ) T *                    ++?(                T ** );
     102forall( otype T ) const T *              ++?( const          T ** );
     103forall( otype T ) volatile T *           ++?(       volatile T ** );
     104forall( otype T ) const volatile T *     ++?( const volatile T ** );
     105forall( otype T ) T *                    --?(                T ** );
     106forall( otype T ) const T *              --?( const          T ** );
     107forall( otype T ) volatile T *           --?(       volatile T ** );
     108forall( otype T ) const volatile T *     --?( const volatile T ** );
     109
     110forall( otype T ) lvalue T               *?(                 T * );
     111forall( otype T ) const lvalue T                 *?( const           T * );
     112forall( otype T ) volatile lvalue T      *?(       volatile  T * );
     113forall( otype T ) const volatile lvalue T *?( const volatile  T * );
    116114forall( ftype FT ) lvalue FT             *?( FT * );
    117115
    118 _Bool                   +?( _Bool ),                    -?( _Bool ),                    ~?( _Bool );         
    119 signed int              +?( signed int ),               -?( signed int ),               ~?( signed int );           
    120 unsigned int            +?( unsigned int ),             -?( unsigned int ),             ~?( unsigned int );         
    121 signed long int         +?( signed long int ),          -?( signed long int ),          ~?( signed long int );       
    122 unsigned long int       +?( unsigned long int ),        -?( unsigned long int ),        ~?( unsigned long int );             
    123 signed long long int    +?( signed long long int ),     -?( signed long long int ),     ~?( signed long long int );   
    124 unsigned long long int  +?( unsigned long long int ),   -?( unsigned long long int ),   ~?( unsigned long long int ); 
     116_Bool                   +?( _Bool ),                    -?( _Bool ),                    ~?( _Bool );
     117signed int              +?( signed int ),               -?( signed int ),               ~?( signed int );
     118unsigned int            +?( unsigned int ),             -?( unsigned int ),             ~?( unsigned int );
     119signed long int         +?( signed long int ),          -?( signed long int ),          ~?( signed long int );
     120unsigned long int       +?( unsigned long int ),        -?( unsigned long int ),        ~?( unsigned long int );
     121signed long long int    +?( signed long long int ),     -?( signed long long int ),     ~?( signed long long int );
     122unsigned long long int  +?( unsigned long long int ),   -?( unsigned long long int ),   ~?( unsigned long long int );
    125123float                   +?( float ),                    -?( float );
    126124double                  +?( double ),                   -?( double );
     
    149147unsigned int            ?*?( unsigned int, unsigned int ),                      ?/?( unsigned int, unsigned int ),              ?%?( unsigned int, unsigned int );
    150148signed long int         ?*?( signed long int, signed long int ),                ?/?( signed long int, signed long int ),        ?%?( signed long int, signed long int );
    151 unsigned long int       ?*?( unsigned long int, unsigned long int ),            ?/?( unsigned long int, long unsigned ),        ?%?( long unsigned, long unsigned );
     149unsigned long int       ?*?( unsigned long int, unsigned long int ),            ?/?( unsigned long int, unsigned long int ),    ?%?( unsigned long int, unsigned long int );
    152150signed long long int    ?*?( signed long long int, signed long long int ),      ?/?( signed long long int, signed long long int ), ?%?( signed long long int, signed long long int );
    153 unsigned long long int  ?*?( unsigned long long int, unsigned long long int ),  ?/?( unsigned long long int, long long unsigned ), ?%?( long long unsigned, long long unsigned );
     151unsigned long long int  ?*?( unsigned long long int, unsigned long long int ),  ?/?( unsigned long long int, unsigned long long int ), ?%?( unsigned long long int, unsigned long long int );
    154152float                   ?*?( float, float ),                                    ?/?( float, float );
    155153double                  ?*?( double, double ),                                  ?/?( double, double );
     
    173171unsigned int            ?+?( unsigned int, unsigned int ),                      ?-?( unsigned int, unsigned int );
    174172signed long int         ?+?( signed long int, signed long int ),                ?-?( signed long int, signed long int );
    175 unsigned long int       ?+?( unsigned long int, unsigned long int ),            ?-?( unsigned long int, long unsigned );
     173unsigned long int       ?+?( unsigned long int, unsigned long int ),            ?-?( unsigned long int, unsigned long int );
    176174signed long long int    ?+?( signed long long int, long long int  signed),      ?-?( signed long long int, signed long long int );
    177 unsigned long long int  ?+?( unsigned long long int, unsigned long long int ),  ?-?( unsigned long long int, long long unsigned );
     175unsigned long long int  ?+?( unsigned long long int, unsigned long long int ),  ?-?( unsigned long long int, unsigned long long int );
    178176float                   ?+?( float, float ),                                    ?-?( float, float );
    179177double                  ?+?( double, double ),                                  ?-?( double, double );
     
    183181long double _Complex    ?+?( long double _Complex, long double _Complex ),      ?-?( long double _Complex, long double _Complex );
    184182
    185 forall( type T ) T *                    ?+?(                T *,          ptrdiff_t );
    186 forall( type T ) T *                    ?+?(          ptrdiff_t,                T * );
    187 forall( type T ) const T *              ?+?( const          T *,          ptrdiff_t );
    188 forall( type T ) const T *              ?+?(          ptrdiff_t, const          T * );
    189 forall( type T ) volatile T *           ?+?(       volatile T *,          ptrdiff_t );
    190 forall( type T ) volatile T *           ?+?(          ptrdiff_t,       volatile T * );
    191 forall( type T ) const volatile T *     ?+?( const volatile T *,          ptrdiff_t );
    192 forall( type T ) const volatile T *     ?+?(          ptrdiff_t, const volatile T * );
    193 forall( type T ) T *                    ?-?(                T *,          ptrdiff_t );
    194 forall( type T ) const T *              ?-?( const          T *,          ptrdiff_t );
    195 forall( type T ) volatile T *           ?-?(       volatile T *,          ptrdiff_t );
    196 forall( type T ) const volatile T *     ?-?( const volatile T *,          ptrdiff_t );
    197 forall( type T ) ptrdiff_t              ?-?( const volatile T *, const volatile T * );
     183forall( otype T ) T *                   ?+?(                T *,          ptrdiff_t );
     184forall( otype T ) T *                   ?+?(          ptrdiff_t,                T * );
     185forall( otype T ) const T *             ?+?( const          T *,          ptrdiff_t );
     186forall( otype T ) const T *             ?+?(          ptrdiff_t, const          T * );
     187forall( otype T ) volatile T *          ?+?(       volatile T *,          ptrdiff_t );
     188forall( otype T ) volatile T *          ?+?(          ptrdiff_t,       volatile T * );
     189forall( otype T ) const volatile T *    ?+?( const volatile T *,          ptrdiff_t );
     190forall( otype T ) const volatile T *    ?+?(          ptrdiff_t, const volatile T * );
     191forall( otype T ) T *                   ?-?(                T *,          ptrdiff_t );
     192forall( otype T ) const T *             ?-?( const          T *,          ptrdiff_t );
     193forall( otype T ) volatile T *          ?-?(       volatile T *,          ptrdiff_t );
     194forall( otype T ) const volatile T *    ?-?( const volatile T *,          ptrdiff_t );
     195forall( otype T ) ptrdiff_t             ?-?( const volatile T *, const volatile T * );
    198196
    199197// ------------------------------------------------------------
     
    203201// ------------------------------------------------------------
    204202
    205 _Bool                   ?<<?( _Bool, _Bool ),                           ?>>?( _Bool, _Bool );
    206 signed int              ?<<?( signed int, signed int ),                 ?>>?( signed int, signed int );
    207 unsigned int            ?<<?( unsigned int, unsigned int ),             ?>>?( unsigned int, unsigned int );
    208 signed long int         ?<<?( signed long int, signed long int ),       ?>>?( signed long int, signed long int );
    209 unsigned long int       ?<<?( unsigned long int, long unsigned ),       ?>>?( unsigned long int, unsigned long int );
     203_Bool                   ?<<?( _Bool, _Bool ),                                   ?>>?( _Bool, _Bool );
     204signed int              ?<<?( signed int, signed int ),                         ?>>?( signed int, signed int );
     205unsigned int            ?<<?( unsigned int, unsigned int ),                     ?>>?( unsigned int, unsigned int );
     206signed long int         ?<<?( signed long int, signed long int ),               ?>>?( signed long int, signed long int );
     207unsigned long int       ?<<?( unsigned long int, unsigned long int ),           ?>>?( unsigned long int, unsigned long int );
     208signed long long int    ?<<?( signed long long int, signed long long int ),     ?>>?( signed long long int, signed long long int );
     209unsigned long long int  ?<<?( unsigned long long int, unsigned long long int ), ?>>?( unsigned long long int, unsigned long long int );
    210210
    211211// ------------------------------------------------------------
     
    215215// ------------------------------------------------------------
    216216
    217 signed int ?<?( _Bool, _Bool ),                         ?<=?( _Bool, _Bool ),
    218            ?>?( _Bool, _Bool ),                         ?>=?( _Bool, _Bool );
    219 signed int ?<?( unsigned char, unsigned char ),         ?<=?( unsigned char, unsigned char ),
    220            ?>?( unsigned char, unsigned char ),         ?>=?( unsigned char, unsigned char );
    221 signed int ?<?( signed int, signed int ),               ?<=?( signed int, signed int ),
    222            ?>?( signed int, signed int ),               ?>=?( signed int, signed int );
    223 signed int ?<?( unsigned int, unsigned int ),           ?<=?( unsigned int, unsigned int ),
    224            ?>?( unsigned int, unsigned int ),           ?>=?( unsigned int, unsigned int );
    225 signed int ?<?( signed long int, signed long int ),     ?<=?( signed long int, signed long int ),
    226            ?>?( signed long int, signed long int ),     ?>=?( signed long int, signed long int );
    227 signed int ?<?( unsigned long int, unsigned long int ), ?<=?( unsigned long int, unsigned long int ),
    228            ?>?( unsigned long int, unsigned long int ), ?>=?( unsigned long int, unsigned long int );
    229 signed int ?<?( float, float ),                         ?<=?( float, float ),
    230            ?>?( float, float ),                         ?>=?( float, float );
    231 signed int ?<?( double, double ),                       ?<=?( double, double ),
    232            ?>?( double, double ),                       ?>=?( double, double );
    233 signed int ?<?( long double, long double ),             ?<=?( long double, long double ),
    234            ?>?( long double, long double ),             ?>=?( long double, long double );
     217signed int ?<?( _Bool, _Bool ),                                         ?<=?( _Bool, _Bool ),
     218           ?>?( _Bool, _Bool ),                                         ?>=?( _Bool, _Bool );
     219signed int ?<?( unsigned char, unsigned char ),                         ?<=?( unsigned char, unsigned char ),
     220           ?>?( unsigned char, unsigned char ),                         ?>=?( unsigned char, unsigned char );
     221signed int ?<?( signed int, signed int ),                               ?<=?( signed int, signed int ),
     222           ?>?( signed int, signed int ),                               ?>=?( signed int, signed int );
     223signed int ?<?( unsigned int, unsigned int ),                           ?<=?( unsigned int, unsigned int ),
     224           ?>?( unsigned int, unsigned int ),                           ?>=?( unsigned int, unsigned int );
     225signed int ?<?( signed long int, signed long int ),                     ?<=?( signed long int, signed long int ),
     226           ?>?( signed long int, signed long int ),                     ?>=?( signed long int, signed long int );
     227signed int ?<?( unsigned long int, unsigned long int ),                 ?<=?( unsigned long int, unsigned long int ),
     228           ?>?( unsigned long int, unsigned long int ),                 ?>=?( unsigned long int, unsigned long int );
     229signed int ?<?( signed long long int, signed long long int ),           ?<=?( signed long long int, signed long long int ),
     230           ?>?( signed long long int, signed long long int ),           ?>=?( signed long long int, signed long long int );
     231signed int ?<?( unsigned long long int, unsigned long long int ),       ?<=?( unsigned long long int, unsigned long long int ),
     232           ?>?( unsigned long long int, unsigned long long int ),       ?>=?( unsigned long long int, unsigned long long int );
     233signed int ?<?( float, float ),                                         ?<=?( float, float ),
     234           ?>?( float, float ),                                         ?>=?( float, float );
     235signed int ?<?( double, double ),                                       ?<=?( double, double ),
     236           ?>?( double, double ),                                       ?>=?( double, double );
     237signed int ?<?( long double, long double ),                             ?<=?( long double, long double ),
     238           ?>?( long double, long double ),                             ?>=?( long double, long double );
    235239
    236240forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
     
    245249// ------------------------------------------------------------
    246250
    247 signed int ?==?( _Bool, _Bool ),                                ?!=?( _Bool, _Bool );
    248 signed int ?==?( signed int, signed int ),                      ?!=?( signed int, signed int );
    249 signed int ?==?( unsigned int, unsigned int ),                  ?!=?( unsigned int, unsigned int );
    250 signed int ?==?( signed long int, signed long int ),            ?!=?( signed long int, signed long int );
    251 signed int ?==?( unsigned long int, unsigned long int ),        ?!=?( unsigned long int, long unsigned );
    252 signed int ?==?( signed long long int, long long int  signed),  ?!=?( signed long long int, signed long long int );
    253 signed int ?==?( unsigned long long int, unsigned long long int ), ?!=?( unsigned long long int, long long unsigned );
    254 signed int ?==?( float, float ),                                ?!=?( float, float );
    255 signed int ?==?( double, double ),                              ?!=?( double, double );
    256 signed int ?==?( long double, long double ),                    ?!=?( long double, long double );
    257 signed int ?==?( float _Complex, float _Complex ),              ?!=?( float _Complex, float _Complex );
    258 signed int ?==?( double _Complex, double _Complex ),            ?!=?( double _Complex, double _Complex );
    259 signed int ?==?( long double _Complex, long double _Complex ),  ?!=?( long double _Complex, long double _Complex );
     251signed int ?==?( _Bool, _Bool ),                                        ?!=?( _Bool, _Bool );
     252signed int ?==?( signed int, signed int ),                              ?!=?( signed int, signed int );
     253signed int ?==?( unsigned int, unsigned int ),                          ?!=?( unsigned int, unsigned int );
     254signed int ?==?( signed long int, signed long int ),                    ?!=?( signed long int, signed long int );
     255signed int ?==?( unsigned long int, unsigned long int ),                ?!=?( unsigned long int, unsigned long int );
     256signed int ?==?( signed long long int, long long int  signed),          ?!=?( signed long long int, signed long long int );
     257signed int ?==?( unsigned long long int, unsigned long long int ),      ?!=?( unsigned long long int, unsigned long long int );
     258signed int ?==?( float, float ),                                        ?!=?( float, float );
     259signed int ?==?( double, double ),                                      ?!=?( double, double );
     260signed int ?==?( long double, long double ),                            ?!=?( long double, long double );
     261signed int ?==?( float _Complex, float _Complex ),                      ?!=?( float _Complex, float _Complex );
     262signed int ?==?( double _Complex, double _Complex ),                    ?!=?( double _Complex, double _Complex );
     263signed int ?==?( long double _Complex, long double _Complex ),          ?!=?( long double _Complex, long double _Complex );
    260264
    261265forall( dtype DT ) signed int ?==?(                DT *,                DT * );
     
    295299signed long int         ?&?( signed long int, signed long int );
    296300unsigned long int       ?&?( unsigned long int, unsigned long int );
     301signed long long int    ?&?( signed long long int, signed long long int );
     302unsigned long long int  ?&?( unsigned long long int, unsigned long long int );
    297303
    298304// ------------------------------------------------------------
     
    307313signed long int         ?^?( signed long int, signed long int );
    308314unsigned long int       ?^?( unsigned long int, unsigned long int );
     315signed long long int    ?^?( signed long long int, signed long long int );
     316unsigned long long int  ?^?( unsigned long long int, unsigned long long int );
    309317
    310318// ------------------------------------------------------------
     
    319327signed long int         ?|?( signed long int, signed long int );
    320328unsigned long int       ?|?( unsigned long int, unsigned long int );
     329signed long long int    ?|?( signed long long int, signed long long int );
     330unsigned long long int  ?|?( unsigned long long int, unsigned long long int );
    321331
    322332// ------------------------------------------------------------
     
    419429forall( ftype FT ) FT *                 ?=?( FT * volatile *, forall( ftype FT2 ) FT2 * );
    420430
    421 forall( type T ) T *                    ?+=?(                T *          *, ptrdiff_t );
    422 forall( type T ) T *                    ?+=?(                T * volatile *, ptrdiff_t );
    423 forall( type T ) const T *              ?+=?( const          T *          *, ptrdiff_t );
    424 forall( type T ) const T *              ?+=?( const          T * volatile *, ptrdiff_t );
    425 forall( type T ) volatile T *           ?+=?(       volatile T *          *, ptrdiff_t );
    426 forall( type T ) volatile T *           ?+=?(       volatile T * volatile *, ptrdiff_t );
    427 forall( type T ) const volatile T *     ?+=?( const volatile T *          *, ptrdiff_t );
    428 forall( type T ) const volatile T *     ?+=?( const volatile T * volatile *, ptrdiff_t );
    429 forall( type T ) T *                    ?-=?(                T *          *, ptrdiff_t );
    430 forall( type T ) T *                    ?-=?(                T * volatile *, ptrdiff_t );
    431 forall( type T ) const T *              ?-=?( const          T *          *, ptrdiff_t );
    432 forall( type T ) const T *              ?-=?( const          T * volatile *, ptrdiff_t );
    433 forall( type T ) volatile T *           ?-=?(       volatile T *          *, ptrdiff_t );
    434 forall( type T ) volatile T *           ?-=?(       volatile T * volatile *, ptrdiff_t );
    435 forall( type T ) const volatile T *     ?-=?( const volatile T *          *, ptrdiff_t );
    436 forall( type T ) const volatile T *     ?-=?( const volatile T * volatile *, ptrdiff_t );
     431forall( otype T ) T *                   ?+=?(                T *          *, ptrdiff_t );
     432forall( otype T ) T *                   ?+=?(                T * volatile *, ptrdiff_t );
     433forall( otype T ) const T *             ?+=?( const          T *          *, ptrdiff_t );
     434forall( otype T ) const T *             ?+=?( const          T * volatile *, ptrdiff_t );
     435forall( otype T ) volatile T *          ?+=?(       volatile T *          *, ptrdiff_t );
     436forall( otype T ) volatile T *          ?+=?(       volatile T * volatile *, ptrdiff_t );
     437forall( otype T ) const volatile T *    ?+=?( const volatile T *          *, ptrdiff_t );
     438forall( otype T ) const volatile T *    ?+=?( const volatile T * volatile *, ptrdiff_t );
     439forall( otype T ) T *                   ?-=?(                T *          *, ptrdiff_t );
     440forall( otype T ) T *                   ?-=?(                T * volatile *, ptrdiff_t );
     441forall( otype T ) const T *             ?-=?( const          T *          *, ptrdiff_t );
     442forall( otype T ) const T *             ?-=?( const          T * volatile *, ptrdiff_t );
     443forall( otype T ) volatile T *          ?-=?(       volatile T *          *, ptrdiff_t );
     444forall( otype T ) volatile T *          ?-=?(       volatile T * volatile *, ptrdiff_t );
     445forall( otype T ) const volatile T *    ?-=?( const volatile T *          *, ptrdiff_t );
     446forall( otype T ) const volatile T *    ?-=?( const volatile T * volatile *, ptrdiff_t );
    437447
    438448_Bool                   ?=?( _Bool *, _Bool ),                                  ?=?( volatile _Bool *, _Bool );
     
    614624                        ?+=?( long double _Complex *, long double _Complex ), ?+=?( volatile long double _Complex *, long double _Complex ),
    615625                        ?-=?( long double _Complex *, long double _Complex ), ?-=?( volatile long double _Complex *, long double _Complex );
     626
     627
     628
     629
     630
     631// ------------------------------------------------------------
     632//
     633// Section ??? Constructors and Destructors
     634//
     635// ------------------------------------------------------------
     636
     637// default ctor
     638void    ?{}( _Bool * ),                         ?{}( volatile _Bool * );
     639void    ?{}( char * ),  ?{}( volatile char * );
     640void    ?{}( unsigned char * ), ?{}( volatile unsigned char * );
     641void    ?{}( char signed * ),                   ?{}( volatile char signed * );
     642void    ?{}( int short * ),                             ?{}( volatile int short * );
     643void    ?{}( int short unsigned * ),    ?{}( volatile int short unsigned * );
     644void    ?{}( signed int * ),                    ?{}( volatile signed int * );
     645void    ?{}( unsigned int * ),                  ?{}( volatile unsigned int * );
     646void    ?{}( signed long int * ),               ?{}( volatile signed long int * );
     647void    ?{}( unsigned long int * ),             ?{}( volatile unsigned long int * );
     648void    ?{}( signed long long int * ),          ?{}( volatile signed long long int * );
     649void    ?{}( unsigned long long int * ),        ?{}( volatile unsigned long long int * );
     650void    ?{}( float * ),                         ?{}( volatile float * );
     651void    ?{}( double * ),                        ?{}( volatile double * );
     652void    ?{}( long double * ),                   ?{}( volatile long double * );
     653void    ?{}( float _Complex * ),                ?{}( volatile float _Complex * );
     654void    ?{}( double _Complex * ),               ?{}( volatile double _Complex * );
     655void    ?{}( long double _Complex * ),          ?{}( volatile long double _Complex * );
     656
     657// copy ctor
     658void    ?{}( _Bool *, _Bool ),                                  ?{}( volatile _Bool *, _Bool );
     659void    ?{}( char *, char ),    ?{}( volatile char *, char );
     660void    ?{}( unsigned char *, unsigned char ),                  ?{}( volatile unsigned char *, unsigned char );
     661void    ?{}( char signed *, char signed ),                      ?{}( volatile char signed *, char signed );
     662void    ?{}( int short *, int short ),                          ?{}( volatile int short *, int short );
     663void    ?{}( int short unsigned *, int short unsigned ),        ?{}( volatile int short unsigned *, int short unsigned );
     664void    ?{}( signed int *, signed int),                         ?{}( volatile signed int *, signed int );
     665void    ?{}( unsigned int *, unsigned int),                     ?{}( volatile unsigned int *, unsigned int );
     666void    ?{}( signed long int *, signed long int),               ?{}( volatile signed long int *, signed long int );
     667void    ?{}( unsigned long int *, unsigned long int),           ?{}( volatile unsigned long int *, unsigned long int );
     668void    ?{}( signed long long int *, signed long long int),     ?{}( volatile signed long long int *, signed long long int );
     669void    ?{}( unsigned long long int *, unsigned long long int), ?{}( volatile unsigned long long int *, unsigned long long int );
     670void    ?{}( float *, float),                                   ?{}( volatile float *, float );
     671void    ?{}( double *, double),                                 ?{}( volatile double *, double );
     672void    ?{}( long double *, long double),                       ?{}( volatile long double *, long double );
     673void    ?{}( float _Complex *, float _Complex),                 ?{}( volatile float _Complex *, float _Complex );
     674void    ?{}( double _Complex *, double _Complex),               ?{}( volatile double _Complex *, double _Complex );
     675void    ?{}( long double _Complex *, long double _Complex),     ?{}( volatile long double _Complex *, long double _Complex );
     676
     677// dtor
     678void    ^?{}( _Bool * ),                        ^?{}( volatile _Bool * );
     679void    ^?{}( char * ), ^?{}( volatile char * );
     680void    ^?{}( char unsigned * ),                        ^?{}( volatile char unsigned * );
     681void    ^?{}( char signed * ),                  ^?{}( volatile char signed * );
     682void    ^?{}( int short * ),                            ^?{}( volatile int short * );
     683void    ^?{}( int short unsigned * ),   ^?{}( volatile int short unsigned * );
     684void    ^?{}( signed int * ),                   ^?{}( volatile signed int * );
     685void    ^?{}( unsigned int * ),                 ^?{}( volatile unsigned int * );
     686void    ^?{}( signed long int * ),              ^?{}( volatile signed long int * );
     687void    ^?{}( unsigned long int * ),            ^?{}( volatile unsigned long int * );
     688void    ^?{}( signed long long int * ),         ^?{}( volatile signed long long int * );
     689void    ^?{}( unsigned long long int * ),       ^?{}( volatile unsigned long long int * );
     690void    ^?{}( float * ),                        ^?{}( volatile float * );
     691void    ^?{}( double * ),                       ^?{}( volatile double * );
     692void    ^?{}( long double * ),                  ^?{}( volatile long double * );
     693void    ^?{}( float _Complex * ),               ^?{}( volatile float _Complex * );
     694void    ^?{}( double _Complex * ),              ^?{}( volatile double _Complex * );
     695void    ^?{}( long double _Complex * ),         ^?{}( volatile long double _Complex * );
     696
     697// // default ctor
     698// forall( dtype DT ) void       ?{}(                DT ** );
     699// forall( dtype DT ) void       ?{}( const          DT ** );
     700// forall( dtype DT ) void       ?{}(       volatile DT ** );
     701// forall( dtype DT ) void       ?{}( const volatile DT ** );
     702
     703// // copy ctor
     704// forall( dtype DT ) void       ?{}(                DT **, DT* );
     705// forall( dtype DT ) void       ?{}( const          DT **, DT* );
     706// forall( dtype DT ) void       ?{}(       volatile DT **, DT* );
     707// forall( dtype DT ) void       ?{}( const volatile DT **, DT* );
     708
     709// // dtor
     710// forall( dtype DT ) void      ^?{}(                DT ** );
     711// forall( dtype DT ) void      ^?{}( const          DT ** );
     712// forall( dtype DT ) void      ^?{}(       volatile DT ** );
     713// forall( dtype DT ) void      ^?{}( const volatile DT ** );
     714
     715// copied from assignment section
     716// copy constructors
     717forall( ftype FT ) void ?{}( FT **, FT * );
     718forall( ftype FT ) void ?{}( FT * volatile *, FT * );
     719
     720forall( dtype DT ) void ?{}(                 DT *          *,                   DT * );
     721forall( dtype DT ) void ?{}(                 DT * volatile *,                   DT * );
     722forall( dtype DT ) void ?{}( const           DT *          *,                   DT * );
     723forall( dtype DT ) void ?{}( const           DT * volatile *,                   DT * );
     724forall( dtype DT ) void ?{}( const           DT *          *, const             DT * );
     725forall( dtype DT ) void ?{}( const           DT * volatile *, const             DT * );
     726forall( dtype DT ) void ?{}(       volatile  DT *          *,                   DT * );
     727forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   DT * );
     728forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    DT * );
     729forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    DT * );
     730
     731forall( dtype DT ) void ?{}( const volatile  DT *          *,                   DT * );
     732forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   DT * );
     733forall( dtype DT ) void ?{}( const volatile  DT *          *, const             DT * );
     734forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             DT * );
     735forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    DT * );
     736forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    DT * );
     737forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    DT * );
     738forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    DT * );
     739
     740forall( dtype DT ) void ?{}(                 DT *          *,                   void * );
     741forall( dtype DT ) void ?{}(                 DT * volatile *,                   void * );
     742forall( dtype DT ) void ?{}( const           DT *          *,                   void * );
     743forall( dtype DT ) void ?{}( const           DT * volatile *,                   void * );
     744forall( dtype DT ) void ?{}( const           DT *          *, const             void * );
     745forall( dtype DT ) void ?{}( const           DT * volatile *, const             void * );
     746forall( dtype DT ) void ?{}(       volatile  DT *          *,                   void * );
     747forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   void * );
     748forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    void * );
     749forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    void * );
     750
     751forall( dtype DT ) void ?{}( const volatile  DT *          *,                   void * );
     752forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   void * );
     753forall( dtype DT ) void ?{}( const volatile  DT *          *, const             void * );
     754forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             void * );
     755forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    void * );
     756forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    void * );
     757forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    void * );
     758forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    void * );
     759
     760forall( dtype DT ) void ?{}(                 void *          *,                 DT * );
     761forall( dtype DT ) void ?{}(                 void * volatile *,                 DT * );
     762forall( dtype DT ) void ?{}( const           void *          *,                 DT * );
     763forall( dtype DT ) void ?{}( const           void * volatile *,                 DT * );
     764forall( dtype DT ) void ?{}( const           void *          *, const           DT * );
     765forall( dtype DT ) void ?{}( const           void * volatile *, const           DT * );
     766forall( dtype DT ) void ?{}(        volatile void *          *,                 DT * );
     767forall( dtype DT ) void ?{}(        volatile void * volatile *,                 DT * );
     768forall( dtype DT ) void ?{}(        volatile void *          *,       volatile  DT * );
     769forall( dtype DT ) void ?{}(        volatile void * volatile *,       volatile  DT * );
     770forall( dtype DT ) void ?{}( const volatile void *           *,                 DT * );
     771forall( dtype DT ) void ?{}( const volatile void * volatile *,                  DT * );
     772forall( dtype DT ) void ?{}( const volatile void *           *, const           DT * );
     773forall( dtype DT ) void ?{}( const volatile void * volatile *, const            DT * );
     774forall( dtype DT ) void ?{}( const volatile void *           *,       volatile  DT * );
     775forall( dtype DT ) void ?{}( const volatile void * volatile *,        volatile  DT * );
     776forall( dtype DT ) void ?{}( const volatile void *           *, const volatile  DT * );
     777forall( dtype DT ) void ?{}( const volatile void * volatile *, const volatile   DT * );
     778
     779void    ?{}(                void *          *,                void * );
     780void    ?{}(                void * volatile *,                void * );
     781void    ?{}( const          void *          *,                void * );
     782void    ?{}( const          void * volatile *,                void * );
     783void    ?{}( const          void *          *, const          void * );
     784void    ?{}( const          void * volatile *, const          void * );
     785void    ?{}(       volatile void *          *,                void * );
     786void    ?{}(       volatile void * volatile *,                void * );
     787void    ?{}(       volatile void *          *,       volatile void * );
     788void    ?{}(       volatile void * volatile *,       volatile void * );
     789void    ?{}( const volatile void *          *,                void * );
     790void    ?{}( const volatile void * volatile *,                void * );
     791void    ?{}( const volatile void *          *, const          void * );
     792void    ?{}( const volatile void * volatile *, const          void * );
     793void    ?{}( const volatile void *          *,       volatile void * );
     794void    ?{}( const volatile void * volatile *,       volatile void * );
     795void    ?{}( const volatile void *          *, const volatile void * );
     796void    ?{}( const volatile void * volatile *, const volatile void * );
     797
     798//forall( dtype DT ) void ?{}(              DT *          *, forall( dtype DT2 ) const DT2 * );
     799//forall( dtype DT ) void ?{}(              DT * volatile *, forall( dtype DT2 ) const DT2 * );
     800forall( dtype DT ) void ?{}( const          DT *          *, forall( dtype DT2 ) const DT2 * );
     801forall( dtype DT ) void ?{}( const          DT * volatile *, forall( dtype DT2 ) const DT2 * );
     802//forall( dtype DT ) void ?{}( volatile     DT *          *, forall( dtype DT2 ) const DT2 * );
     803//forall( dtype DT ) void ?{}( volatile     DT * volatile *, forall( dtype DT2 ) const DT2 * );
     804forall( dtype DT ) void ?{}( const volatile DT *          *, forall( dtype DT2 ) const DT2 * );
     805forall( dtype DT ) void ?{}( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
     806
     807forall( ftype FT ) void ?{}( FT *          *, forall( ftype FT2 ) FT2 * );
     808forall( ftype FT ) void ?{}( FT * volatile *, forall( ftype FT2 ) FT2 * );
     809
     810// default ctors
     811forall( ftype FT ) void ?{}( FT *          * );
     812forall( ftype FT ) void ?{}( FT * volatile * );
     813
     814forall( dtype DT ) void ?{}(                 DT *          *);
     815forall( dtype DT ) void ?{}(                 DT * volatile *);
     816forall( dtype DT ) void ?{}( const           DT *          *);
     817forall( dtype DT ) void ?{}( const           DT * volatile *);
     818forall( dtype DT ) void ?{}(       volatile  DT *          *);
     819forall( dtype DT ) void ?{}(       volatile  DT * volatile *);
     820forall( dtype DT ) void ?{}( const volatile  DT *          *);
     821forall( dtype DT ) void ?{}( const volatile  DT * volatile *);
     822
     823void    ?{}(                void *          *);
     824void    ?{}(                void * volatile *);
     825void    ?{}( const          void *          *);
     826void    ?{}( const          void * volatile *);
     827void    ?{}(       volatile void *          *);
     828void    ?{}(       volatile void * volatile *);
     829void    ?{}( const volatile void *          *);
     830void    ?{}( const volatile void * volatile *);
     831
     832// dtors
     833forall( ftype FT ) void ^?{}( FT *         * );
     834forall( ftype FT ) void ^?{}( FT * volatile * );
     835
     836forall( dtype DT ) void ^?{}(                DT *          *);
     837forall( dtype DT ) void ^?{}(                DT * volatile *);
     838forall( dtype DT ) void ^?{}( const          DT *          *);
     839forall( dtype DT ) void ^?{}( const          DT * volatile *);
     840forall( dtype DT ) void ^?{}(      volatile  DT *          *);
     841forall( dtype DT ) void ^?{}(      volatile  DT * volatile *);
     842forall( dtype DT ) void ^?{}( const volatile  DT *         *);
     843forall( dtype DT ) void ^?{}( const volatile  DT * volatile *);
     844
     845void    ^?{}(               void *          *);
     846void    ^?{}(               void * volatile *);
     847void    ^?{}( const         void *          *);
     848void    ^?{}( const         void * volatile *);
     849void    ^?{}(      volatile void *          *);
     850void    ^?{}(      volatile void * volatile *);
     851void    ^?{}( const volatile void *         *);
     852void    ^?{}( const volatile void * volatile *);
     853
     854// Local Variables: //
     855// mode: c //
     856// tab-width: 8 //
     857// End: //
  • src/main.cc

    r679864e1 r242d458  
    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
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Thu Jul 30 16:08:18 2015
    13 // Update Count     : 167
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Jul  5 15:23:11 2016
     13// Update Count     : 209
    1414//
    1515
     
    4040#include "MakeLibCfa.h"
    4141#include "InitTweak/Mutate.h"
    42 #include "InitTweak/RemoveInit.h"
     42#include "InitTweak/GenInit.h"
     43#include "InitTweak/FixInit.h"
    4344//#include "Explain/GenProlog.h"
    4445//#include "Try/Visit.h"
    4546
    46 #include "SemanticError.h"
    47 #include "UnimplementedError.h"
     47#include "Common/SemanticError.h"
     48#include "Common/UnimplementedError.h"
    4849
    4950#include "../config.h"
     
    5556
    5657static void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false );
    57 static void dump( std::list< Declaration * > & translationUnit );
     58static void dump( std::list< Declaration * > & translationUnit, std::ostream & out = std::cout );
    5859
    5960bool
    6061        astp = false,
    6162        bresolvep = false,
     63        bboxp = false,
     64        ctorinitp = false,
    6265        exprp = false,
    6366        expraltp = false,
     
    6972        resolvep = false,                                                                       // used in AlternativeFinder
    7073        symtabp = false,
     74        treep = false,
    7175        validp = false,
    7276        errorp = false,
    7377        codegenp = false;
    7478
    75 enum { Ast, Bresolver, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Validate, };
     79enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, };
    7680
    7781static struct option long_opts[] = {
    7882        { "ast", no_argument, 0, Ast },
     83        { "before-box", no_argument, 0, Bbox },
    7984        { "before-resolver", no_argument, 0, Bresolver },
     85        { "ctorinitfix", no_argument, 0, CtorInitFix },
    8086        { "expr", no_argument, 0, Expr },
    8187        { "expralt", no_argument, 0, ExprAlt },
     
    8793        { "resolver", no_argument, 0, Resolver },
    8894        { "symbol", no_argument, 0, Symbol },
     95        { "tree", no_argument, 0, Tree },
    8996        { "validate", no_argument, 0, Validate },
    9097        { 0, 0, 0, 0 }
     
    95102        std::ostream *output = &std::cout;
    96103        int long_index;
    97         std::list< Declaration* > translationUnit;
     104        std::list< Declaration * > translationUnit;
     105        const char *filename = NULL;
    98106
    99107        opterr = 0;                                                                                     // prevent getopt from printing error messages
    100        
     108
    101109        int c;
    102         while ( (c = getopt_long( argc, argv, "abefglnpqrsvyzD:", long_opts, &long_index )) != -1 ) {
     110        while ( (c = getopt_long( argc, argv, "abBcefglnpqrstvyzD:F:", long_opts, &long_index )) != -1 ) {
    103111                switch ( c ) {
    104112                  case Ast:
     
    110118                        bresolvep = true;
    111119                        break;
     120                  case 'B':                                                                             // print before resolver steps
     121                        bboxp = true;
     122                        break;
     123                  case CtorInitFix:
     124                  case 'c':
     125                        ctorinitp = true;
     126                        break;
    112127                  case Expr:
    113128                  case 'e':                                                                             // dump AST after expression analysis
     
    146161                        symtabp = true;
    147162                        break;
     163                  case Tree:
     164                  case 't':                                                                             // build in tree
     165                        treep = true;
     166                        break;
    148167                  case 'v':                                                                             // dump AST after decl validation pass
    149168                        validp = true;
     
    157176                  case 'D':                                                                             // ignore -Dxxx
    158177                        break;
     178                  case 'F':                                                                             // source file-name without suffix
     179                        filename = optarg;
     180                        break;
    159181                  case '?':
    160182                        cout << "Unknown option: '" << (char)optopt << "'" << endl;
    161                         exit(1);
     183                        exit( EXIT_FAILURE );
    162184                  default:
    163185                        abort();
     
    170192                        input = fopen( argv[ optind ], "r" );
    171193                        if ( ! input ) {
    172                                 std::cout << "Error: can't open " << argv[optind] << std::endl;
    173                                 exit( 1 );
     194                                std::cout << "Error: can't open " << argv[ optind ] << std::endl;
     195                                exit( EXIT_FAILURE );
    174196                        } // if
     197                        // if running cfa-cpp directly, might forget to pass -F option (and really shouldn't have to)
     198                        if ( filename == NULL ) filename = argv[ optind ];
     199                        // prelude filename comes in differently
     200                        if ( libcfap ) filename = "prelude.cf";
    175201                        optind += 1;
    176202                } else {
    177203                        input = stdin;
     204                        // if running cfa-cpp directly, might forget to pass -F option. Since this takes from stdin, pass
     205                        // a fake name along
     206                        if ( filename == NULL ) filename = "stdin";
    178207                } // if
    179208
     
    181210                        output = new ofstream( argv[ optind ] );
    182211                } // if
    183        
     212
    184213                Parser::get_parser().set_debug( grammarp );
    185214
    186                 // read in the builtins and the prelude
     215                // read in the builtins, extras, and the prelude
    187216                if ( ! nopreludep ) {                                                   // include gcc builtins
    188                         FILE * builtins = fopen( CFA_LIBDIR "/builtins.cf", "r" );
     217                        // -l is for initial build ONLY and builtins.cf is not in the lib directory so access it here.
     218                        FILE * builtins = fopen( libcfap | treep ? "builtins.cf" : CFA_LIBDIR "/builtins.cf", "r" );
    189219                        if ( builtins == NULL ) {
    190                                 std::cerr << "Error: can't open builtins" << std::endl;
    191                                 exit( 1 );
     220                                std::cerr << "Error: can't open builtins.cf" << std::endl;
     221                                exit( EXIT_FAILURE );
    192222                        } // if
    193 
    194223                        parse( builtins, LinkageSpec::Compiler );
    195224
     225                        // read the extra prelude in, if not generating the cfa library
     226                        FILE * extras = fopen( libcfap | treep ? "extras.cf" : CFA_LIBDIR "/extras.cf", "r" );
     227                        if ( extras == NULL ) {
     228                                std::cerr << "Error: can't open extras.cf" << std::endl;
     229                                exit( EXIT_FAILURE );
     230                        } // if
     231                        parse( extras, LinkageSpec::C );
     232
    196233                        if ( ! libcfap ) {
    197                                 // read the prelude in, if we're not generating the cfa library
    198                                 FILE * prelude = fopen( CFA_LIBDIR "/prelude.cf", "r" );
     234                                // read the prelude in, if not generating the cfa library
     235                                FILE * prelude = fopen( treep ? "prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
    199236                                if ( prelude == NULL ) {
    200                                         std::cerr << "Error: can't open prelude" << std::endl;
    201                                         exit( 1 );
     237                                        std::cerr << "Error: can't open prelude.cf" << std::endl;
     238                                        exit( EXIT_FAILURE );
    202239                                } // if
    203                    
    204                     parse( prelude, LinkageSpec::Intrinsic );
     240
     241                                parse( prelude, LinkageSpec::Intrinsic );
    205242                        } // if
    206243                } // if
    207244
    208                 if ( libcfap ) {
    209                         parse( input, LinkageSpec::Intrinsic );
    210                 } else {
    211                         parse( input, LinkageSpec::Cforall, grammarp );
    212                 }
    213  
     245                parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, grammarp );
     246
    214247                if ( parsep ) {
    215248                        Parser::get_parser().get_parseTree()->printList( std::cout );
     
    226259                } // if
    227260
    228                 // add the assignment statement after the
    229                 // initialization of a type parameter
     261                // add the assignment statement after the initialization of a type parameter
    230262                OPTPRINT( "validate" )
    231263                SymTab::validate( translationUnit, symtabp );
     
    247279                OPTPRINT( "mutate" )
    248280                ControlStruct::mutate( translationUnit );
    249                 OPTPRINT( "fixNames" ) 
     281                OPTPRINT( "fixNames" )
    250282                CodeGen::fixNames( translationUnit );
    251                 OPTPRINT( "tweak" )
    252                 InitTweak::tweak( translationUnit );
     283                OPTPRINT( "tweakInit" )
     284                InitTweak::genInit( translationUnit );
    253285
    254286                if ( libcfap ) {
     
    266298                if ( exprp ) {
    267299                        dump( translationUnit );
     300                        return 0;
     301                }
     302
     303                // fix ObjectDecl - replaces ConstructorInit nodes
     304                OPTPRINT( "fixInit" )
     305                InitTweak::fix( translationUnit, filename, libcfap || treep );
     306                if ( ctorinitp ) {
     307                        dump ( translationUnit );
     308                        return 0;
    268309                }
    269310
     
    271312                GenPoly::copyParams( translationUnit );
    272313                OPTPRINT( "convertSpecializations" )
    273                 GenPoly::convertSpecializations( translationUnit );             
     314                GenPoly::convertSpecializations( translationUnit );
    274315                OPTPRINT( "convertLvalue" )
    275316                GenPoly::convertLvalue( translationUnit );
     317
     318                if ( bboxp ) {
     319                        dump( translationUnit );
     320                        return 0;
     321                }
    276322                OPTPRINT( "box" )
    277323                GenPoly::box( translationUnit );
     
    290336        } catch ( SemanticError &e ) {
    291337                if ( errorp ) {
    292                         dump( translationUnit );
     338                        std::cerr << "---AST at error:---" << std::endl;
     339                        dump( translationUnit, std::cerr );
     340                        std::cerr << std::endl << "---End of AST, begin error message:---\n" << std::endl;
    293341                }
    294342                e.print( std::cerr );
     
    312360        } // try
    313361
     362        deleteAll( translationUnit );
    314363        return 0;
    315364} // main
     
    329378}
    330379
    331 static void dump( std::list< Declaration * > & translationUnit ) {
     380static void dump( std::list< Declaration * > & translationUnit, std::ostream & out ) {
    332381        std::list< Declaration * > decls;
    333382        if ( noprotop ) {
    334                 filter( translationUnit.begin(), translationUnit.end(), 
     383                filter( translationUnit.begin(), translationUnit.end(),
    335384                                std::back_inserter( decls ), notPrelude );
    336385        } else {
     
    338387        }
    339388
    340         printAll( decls, std::cout );
     389        printAll( decls, out );
    341390        deleteAll( translationUnit );
    342391}
Note: See TracChangeset for help on using the changeset viewer.