Changes in / [242d458:679864e1]


Ignore:
Files:
450 added
318 deleted
174 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r242d458 r679864e1  
    1313src/Makefile
    1414
    15 # genereted by premake
    16 src/examples/gc_no_raii/build
    17 
    1815# build directories
    1916.deps
     
    2118bin
    2219lib
    23 include
    2420
    2521# src executables, for lib and bin
    2622src/driver/cc1
    2723src/driver/cfa
    28 src/driver/cfa-cpp
    29 
    30 src/libcfa/builtins.cf
    31 src/libcfa/extras.cf
     24src/cfa-cpp
    3225src/libcfa/libcfa-prelude.c
    3326
    3427# generated by bison and lex from cfa.yy and lex.ll, respectively
    3528src/Parser/parser.output
     29
     30# generated by latex
     31doc/refrat/refrat.aux
     32doc/refrat/refrat.bbl
     33doc/refrat/refrat.blg
     34doc/refrat/refrat.brf
     35doc/refrat/refrat.dvi
     36doc/refrat/refrat.idx
     37doc/refrat/refrat.ilg
     38doc/refrat/refrat.ind
     39doc/refrat/refrat.log
     40doc/refrat/refrat.out
     41doc/refrat/refrat.pdf
     42doc/refrat/refrat.ps
     43doc/refrat/refrat.toc
  • INSTALL

    r242d458 r679864e1  
    33
    44Cforall is built using GNU Make and the GNU Autoconf system.  It also requires
    5 g++ version >= 4.6, bison and flex.  On systems where GNU Make is the default
    6 make, the system is built by entering the commands:
     5g++ version 4, bison and flex.  On systems where GNU Make is the default make
     6it may suffice to build the system 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 are installed in /some/directory/bin,
     19  cfa-cc components.  Some components will be 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.
    2421
    2522--with-backend-compiler=PROGRAM specifies the installed path of gcc.  It
  • Makefile.am

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

    r242d458 r679864e1  
    5151CONFIG_CLEAN_FILES =
    5252CONFIG_CLEAN_VPATH_FILES =
    53 AM_V_GEN = $(am__v_GEN_@AM_V@)
    54 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    55 am__v_GEN_0 = @echo "  GEN   " $@;
    56 AM_V_at = $(am__v_at_@AM_V@)
    57 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    58 am__v_at_0 = @
    5953SOURCES =
    6054DIST_SOURCES =
     
    117111ALLOCA = @ALLOCA@
    118112AMTAR = @AMTAR@
    119 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    120113AUTOCONF = @AUTOCONF@
    121114AUTOHEADER = @AUTOHEADER@
     
    125118CC = @CC@
    126119CCDEPMODE = @CCDEPMODE@
    127 CFA_BACKEND_CC = @CFA_BACKEND_CC@
    128120CFA_BINDIR = @CFA_BINDIR@
    129 CFA_FLAGS = @CFA_FLAGS@
    130121CFA_INCDIR = @CFA_INCDIR@
    131122CFA_LIBDIR = @CFA_LIBDIR@
     
    145136EGREP = @EGREP@
    146137EXEEXT = @EXEEXT@
     138GCC_PATH = @GCC_PATH@
    147139GREP = @GREP@
    148140INSTALL = @INSTALL@
     
    223215SUBDIRS = src/driver src src/libcfa     # order important, src before libcfa because cfa-cpp used to build prelude
    224216EXTRA_DIST = Docs                       # non-source files
    225 MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
    226217all: config.h
    227218        $(MAKE) $(AM_MAKEFLAGS) all-recursive
     
    638629        @echo "This command is intended for maintainers to use"
    639630        @echo "it deletes files that may require special tools to rebuild."
    640         -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
    641631clean: clean-recursive
    642632
  • aclocal.m4

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

    r242d458 r679864e1  
    11/* config.h.in.  Generated from configure.ac by autoheader.  */
    2 
    3 /* Location of include files. */
    4 #undef CFA_BACKEND_CC
    52
    63/* Location of cfa command. */
    74#undef CFA_BINDIR
    8 
    9 /* compilation flags for cfa libraries and test programs. */
    10 #undef CFA_FLAGS
    115
    126/* Location of include files. */
     
    1610#undef CFA_LIBDIR
    1711
    18 /* Location of cfa install. */
     12/* Location of cfa files. */
    1913#undef CFA_PREFIX
    2014
     
    2620/* Define to 1 if using `alloca.c'. */
    2721#undef C_ALLOCA
     22
     23/* Path/name of C compiler. */
     24#undef GCC_PATH
    2825
    2926/* Define to 1 if you have `alloca', as a function or macro. */
  • configure

    r242d458 r679864e1  
    566566PACKAGE_URL=''
    567567
     568ac_unique_file="src/main.cc"
    568569# Factoring default headers for most tests.
    569570ac_includes_default="\
     
    639640CXXFLAGS
    640641CXX
    641 CFA_FLAGS
    642642CFA_LIBDIR
    643643CFA_BINDIR
    644644CFA_INCDIR
    645645CFA_PREFIX
    646 CFA_BACKEND_CC
    647646BACKEND_CC
     647GCC_PATH
    648648MAINT
    649649MAINTAINER_MODE_FALSE
     
    672672INSTALL_SCRIPT
    673673INSTALL_PROGRAM
    674 AM_BACKSLASH
    675 AM_DEFAULT_VERBOSITY
    676 AM_DEFAULT_V
    677 AM_V
    678674target_alias
    679675host_alias
     
    717713ac_user_opts='
    718714enable_option_checking
    719 enable_silent_rules
    720715enable_maintainer_mode
    721716with_backend_compiler
     
    13521347  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
    13531348  --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')
    13561349  --disable-maintainer-mode  disable make rules and dependencies not useful
    13571350                          (and sometimes confusing) to the casual installer
     
    24132406
    24142407
    2415 #AC_CONFIG_SRCDIR([src/main.cc])
     2408
    24162409ac_config_headers="$ac_config_headers config.h"
    24172410
    2418 # Check whether --enable-silent-rules was given.
    2419 if test "${enable_silent_rules+set}" = set; then :
    2420   enableval=$enable_silent_rules;
    2421 fi
    2422 
    2423 case $enable_silent_rules in
    2424 yes) AM_DEFAULT_VERBOSITY=0;;
    2425 no)  AM_DEFAULT_VERBOSITY=1;;
    2426 *)   AM_DEFAULT_VERBOSITY=1;;
    2427 esac
    2428 am_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; }
    2431 if ${am_cv_make_support_nested_variables+:} false; then :
    2432   $as_echo_n "(cached) " >&6
    2433 else
    2434   if $as_echo 'TRUE=$(BAR$(V))
    2435 BAR0=false
    2436 BAR1=true
    2437 V=1
    2438 am__doit:
    2439         @$(TRUE)
    2440 .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
    2441   am_cv_make_support_nested_variables=yes
    2442 else
    2443   am_cv_make_support_nested_variables=no
    2444 fi
    2445 fi
    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; }
    2448 if test $am_cv_make_support_nested_variables = yes; then
    2449     AM_V='$(V)'
    2450   AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
    2451 else
    2452   AM_V=$AM_DEFAULT_VERBOSITY
    2453   AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
    2454 fi
    2455 AM_BACKSLASH='\'
    2456 
    2457 
    2458 if test "x${CXXFLAGS}" = "x"; then
    2459    export CXXFLAGS="-std=c++11 -g ${CXXFLAGS}"  # defaults, no -O2 for debugging and failures
    2460 else
    2461    export CXXFLAGS="-std=c++11 ${CXXFLAGS}"     # flags from configure command
    2462 fi
    24632411
    24642412am__api_version='1.11'
     
    29622910  MAINT=$MAINTAINER_MODE_TRUE
    29632911
    2964                         # may require auto* software to be installed
     2912        # may require auto* software to be installed
    29652913
    29662914# Installation paths
     
    29692917# Check whether --with-backend-compiler was given.
    29702918if test "${with_backend_compiler+set}" = set; then :
    2971   withval=$with_backend_compiler; backendcompiler=$withval
    2972 else
    2973   backendcompiler=""
    2974 fi
    2975 
    2976 if test "x$backendcompiler" != "x"; then
    2977         BACKEND_CC=${backendcompiler}
    2978 else
     2919  withval=$with_backend_compiler; backcompiler=$withval
     2920else
     2921  backcompiler=""
     2922fi
     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
    29792931        # Extract the first word of "gcc", so it can be a program name with args.
    29802932set dummy gcc; ac_word=$2
    29812933{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
    29822934$as_echo_n "checking for $ac_word... " >&6; }
    2983 if ${ac_cv_path_BACKEND_CC+:} false; then :
     2935if ${ac_cv_path_GCC_PATH+:} false; then :
    29842936  $as_echo_n "(cached) " >&6
    29852937else
    2986   case $BACKEND_CC in
     2938  case $GCC_PATH in
    29872939  [\\/]* | ?:[\\/]*)
    2988   ac_cv_path_BACKEND_CC="$BACKEND_CC" # Let the user override the test with a path.
     2940  ac_cv_path_GCC_PATH="$GCC_PATH" # Let the user override the test with a path.
    29892941  ;;
    29902942  *)
     
    29962948    for ac_exec_ext in '' $ac_executable_extensions; do
    29972949  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
    2998     ac_cv_path_BACKEND_CC="$as_dir/$ac_word$ac_exec_ext"
     2950    ac_cv_path_GCC_PATH="$as_dir/$ac_word$ac_exec_ext"
    29992951    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
    30002952    break 2
     
    30042956IFS=$as_save_IFS
    30052957
     2958  test -z "$ac_cv_path_GCC_PATH" && ac_cv_path_GCC_PATH="N/A"
    30062959  ;;
    30072960esac
    30082961fi
    3009 BACKEND_CC=$ac_cv_path_BACKEND_CC
    3010 if test -n "$BACKEND_CC"; then
    3011   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BACKEND_CC" >&5
    3012 $as_echo "$BACKEND_CC" >&6; }
     2962GCC_PATH=$ac_cv_path_GCC_PATH
     2963if test -n "$GCC_PATH"; then
     2964  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GCC_PATH" >&5
     2965$as_echo "$GCC_PATH" >&6; }
    30132966else
    30142967  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
     
    30162969fi
    30172970
    3018         # check gcc installed
    3019         if test "x$BACKEND_CC" = "x"; then
     2971
     2972        if test "$GCC_PATH" = "N/A"; then
    30202973                as_fn_error $? "some version of gcc is needed. Get it at ftp://ftp.gnu.org" "$LINENO" 5
    30212974                exit 1
    30222975        fi
    3023 fi
    30242976
    30252977cat >>confdefs.h <<_ACEOF
    3026 #define CFA_BACKEND_CC "${BACKEND_CC}"
    3027 _ACEOF
    3028 
     2978#define GCC_PATH "${GCC_PATH}"
     2979_ACEOF
     2980
     2981        BACKEND_CC=${GCC_PATH}
     2982  fi
    30292983
    30302984
     
    30452999        cfa_incdir="${cfa_prefix}/include"
    30463000else
    3047         cfa_incdir=${includedir}
     3001        cfa_incdir=${$includedir}
    30483002fi
    30493003
     
    30793033
    30803034CFA_LIBDIR=${cfa_libdir}
    3081 
    3082 
    3083 
    3084 cat >>confdefs.h <<_ACEOF
    3085 #define CFA_FLAGS "${CFAFLAGS}"
    3086 _ACEOF
    3087 
    3088 CFA_FLAGS=${CFAFLAGS}
    30893035
    30903036
     
    58065752
    58075753
    5808 ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/tests/Makefile src/libcfa/Makefile"
     5754ac_config_files="$ac_config_files Makefile src/driver/Makefile src/Makefile src/examples/Makefile src/libcfa/Makefile"
    58095755
    58105756
     
    65526498    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
    65536499    "src/examples/Makefile") CONFIG_FILES="$CONFIG_FILES src/examples/Makefile" ;;
    6554     "src/tests/Makefile") CONFIG_FILES="$CONFIG_FILES src/tests/Makefile" ;;
    65556500    "src/libcfa/Makefile") CONFIG_FILES="$CONFIG_FILES src/libcfa/Makefile" ;;
    65566501
  • configure.ac

    r242d458 r679864e1  
    55AC_INIT([cfa-cc],[1.0.0],[cforall@plg.uwaterloo.ca])
    66AC_CONFIG_AUX_DIR([automake])
    7 #AC_CONFIG_SRCDIR([src/main.cc])
     7AC_CONFIG_SRCDIR([src/main.cc])
    88AC_CONFIG_HEADERS([config.h])
    9 AM_SILENT_RULES([no])
    10 
    11 if test "x${CXXFLAGS}" = "x"; then
    12    export CXXFLAGS="-std=c++11 -g ${CXXFLAGS}"  # defaults, no -O2 for debugging and failures
    13 else
    14    export CXXFLAGS="-std=c++11 ${CXXFLAGS}"     # flags from configure command
    15 fi
    169
    1710AM_INIT_AUTOMAKE
    18 AM_MAINTAINER_MODE(enable)                      # may require auto* software to be installed
     11AM_MAINTAINER_MODE(enable)      # may require auto* software to be installed
    1912
    2013# Installation paths
    2114
    22 AC_ARG_WITH(backend-compiler,
    23         [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
    24         backendcompiler=$withval, backendcompiler="")
    25 if test "x$backendcompiler" != "x"; then
    26         BACKEND_CC=${backendcompiler}
    27 else
    28         AC_PATH_PROG(BACKEND_CC, gcc, [])       # check gcc installed
    29         if test "x$BACKEND_CC" = "x"; then
     15AC_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
    3024                AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
    3125                exit 1
    3226        fi
    33 fi
    34 AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${BACKEND_CC}", [Location of include files.])
    35 AC_SUBST(CFA_BACKEND_CC)
     27        AC_DEFINE_UNQUOTED(GCC_PATH, "${GCC_PATH}", [Path/name of C compiler.])
     28        BACKEND_CC=${GCC_PATH}
     29  fi
     30AC_SUBST(BACKEND_CC)
    3631
    3732if test "x$prefix" = "xNONE"; then
     
    3934else
    4035        cfa_prefix=${prefix}
    41 fi
    42 AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa install.])
     36fi 
     37AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa files.])
    4338AC_SUBST(CFA_PREFIX, ${cfa_prefix})
    4439
     
    4641        cfa_incdir="${cfa_prefix}/include"
    4742else
    48         cfa_incdir=${includedir}
    49 fi
     43        cfa_incdir=${$includedir}
     44fi 
    5045AC_DEFINE_UNQUOTED(CFA_INCDIR, "${cfa_incdir}", [Location of include files.])
    5146AC_SUBST(CFA_INCDIR, ${cfa_incdir})
     
    5550else
    5651        cfa_bindir=${bindir}
    57 fi
     52fi 
    5853AC_DEFINE_UNQUOTED(CFA_BINDIR, "${cfa_bindir}", [Location of cfa command.])
    5954AC_SUBST(CFA_BINDIR, ${cfa_bindir})
     
    6358else
    6459        cfa_libdir=${libdir}
    65 fi
     60fi 
    6661AC_DEFINE_UNQUOTED(CFA_LIBDIR, "${cfa_libdir}", [Location of cc1 and cfa-cpp commands.])
    6762AC_SUBST(CFA_LIBDIR, ${cfa_libdir})
    68 
    69 AC_DEFINE_UNQUOTED(CFA_FLAGS, "${CFAFLAGS}", [compilation flags for cfa libraries and test programs.])
    70 AC_SUBST(CFA_FLAGS, ${CFAFLAGS})
    7163
    7264# Checks for programs.
     
    109101        src/Makefile
    110102        src/examples/Makefile
    111         src/tests/Makefile
    112103        src/libcfa/Makefile
    113104        ])
  • doc/refrat/Makefile

    r242d458 r679864e1  
    11## Define the appropriate configuration variables.
    22
    3 TeXLIB = .:../LaTeXmacros:../LaTeXmacros/listings:../LaTeXmacros/enumitem:../bibliography/:
    4 LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex -halt-on-error
    5 BibTeX = BIBINPUTS=${TeXLIB} && export BIBINPUTS && bibtex
     3TeXLIB = .::
     4LaTeX  = TEXINPUTS=${TeXLIB} && export TEXINPUTS && latex
     5BibTeX = BSTINPUTS=${TeXLIB} && export BSTINPUTS && 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 *.cf \
     34        rm -f *.bbl *.aux *.dvi *.idx *.ilg *.ind *.brf *.out *.log *.toc *.blg *.pstex_t \
    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 \
    46                 ../LaTeXmacros/common.tex ../LaTeXmacros/indexstyle ../bibliography/cfa.bib
     45${basename ${DOCUMENT}}.dvi : Makefile ${GRAPHS} ${PROGRAMS} ${PICTURES} ${FIGURES} ${SOURCES} ${basename ${DOCUMENT}}.tex ${basename ${DOCUMENT}}.bib
    4746        # Conditionally create an empty *.ind (index) file for inclusion until makeindex is run.
    4847        if [ ! -r ${basename $@}.ind ] ; then touch ${basename $@}.ind ; fi
     
    5453        -${BibTeX} ${basename $@}
    5554        # Make index from *.aux entries and input index at end of document
    56         makeindex -s ../LaTeXmacros/indexstyle ${basename $@}.idx
     55        makeindex -s indexstyle ${basename $@}.idx
    5756        ${LaTeX} ${basename $@}.tex
    5857        # Run again to get index title into table of contents
    5958        ${LaTeX} ${basename $@}.tex
    60 
    61 predefined :
    62         sed -f predefined.sed ${basename ${DOCUMENT}}.tex > ${basename $@}.cf
    6359
    6460## Define the default recipes.
  • doc/refrat/predefined.sed

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

    r242d458 r679864e1  
    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 
    171% 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)
    262
    273\documentclass[openright,twoside]{report}
     
    295
    306% Latex packages used in the document.
    31 \usepackage[T1]{fontenc}                                % allow Latin1 (extended ASCII) characters
    32 \usepackage{textcomp}
    33 \usepackage[latin1]{inputenc}
    34 \usepackage{fullpage,times,comment}
    35 \usepackage{epic,eepic}
    36 \usepackage{upquote}                                                                    % switch curled `'" to straight
     7
     8\usepackage{fullpage,times}
    379\usepackage{xspace}
    38 \usepackage{varioref}                                                                   % extended references
    39 \usepackage{listings}                                                                   % format program code
    40 \usepackage[flushmargin]{footmisc}                                              % support label/reference in footnote
    41 \usepackage{latexsym}                                   % \Box glyph
    42 \usepackage{mathptmx}                                   % better math font with "times"
    43 \usepackage[usenames]{color}
     10\usepackage{varioref}
     11\usepackage{listings}
     12\usepackage{latexsym}                                   % \Box
     13\usepackage{mathptmx}                                   % better math font with "times"
    4414\usepackage[pagewise]{lineno}
    4515\renewcommand{\linenumberfont}{\scriptsize\sffamily}
    46 \input{common}                                          % bespoke macros used in the document
    4716\usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref}
    4817\usepackage{breakurl}
    49 \renewcommand{\UrlFont}{\small\sf}
    50 
    51 \setlength{\topmargin}{-0.45in}                                                 % move running title into header
    52 \setlength{\headsep}{0.25in}
     18\urlstyle{sf}
    5319
    5420%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    5622% Names used in the document.
    5723
    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}}}
     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)
    6528
    6629%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    6730
    68 \setcounter{secnumdepth}{3}                             % number subsubsections
    69 \setcounter{tocdepth}{3}                                % subsubsections in table of contents
     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{
     119language=CFA,
     120columns=fullflexible,
     121basicstyle=\sf\small,
     122tabsize=4,
     123xleftmargin=\parindent,
     124escapechar=@,
     125%fancyvrb=true,
     126%showtabs=true,
     127keepspaces=true,
     128showtabs=true,
     129tab=,
     130}
     131
     132\setcounter{secnumdepth}{3}     % number subsubsections
     133\setcounter{tocdepth}{3}                % subsubsections in table of contents
    70134\makeindex
    71 
    72 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    73 
    74 \title{\Huge
    75 \vspace*{1in}
    76 \CFA (\CFL) Reference Manual and Rationale
    77 }% title
    78 
    79 \author{\huge
    80 Glen Ditchfield and Peter A. Buhr
    81 }% author
    82 
    83 \date{
    84 DRAFT \\ \today
    85 }% date
    86135
    87136%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    89138\begin{document}
    90139\pagestyle{headings}
    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}}
     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
    94146\pagenumbering{roman}
    95 \linenumbers                                            % comment out to turn off line numbering
     147\pagestyle{plain}
    96148
    97149\maketitle
     150
     151\vspace*{\fill}
    98152\thispagestyle{empty}
    99 \vspace*{\fill}
    100153\noindent
    101154\copyright\,2015 Glen Ditchfield \\ \\
    102155\noindent
    103 This work is licensed under the Creative Commons Attribution 4.0 International License.
    104 To view a copy of this license, visit {\small\url{http://creativecommons.org/licenses/by/4.0}}.
     156This work is licensed under the Creative Commons Attribution 4.0 International License. To view a
     157copy of this license, visit {\small\url{http://creativecommons.org/licenses/by/4.0}}.
    105158\vspace*{1in}
    106159
     
    115168\chapter*{Introduction}\addcontentsline{toc}{chapter}{Introduction}
    116169
    117 This document is a reference manual and rationale for \CFA, a polymorphic extension of the C programming language.
    118 It makes frequent reference to the {\c11} standard \cite{C11}, and occasionally compares \CFA to {\CC} \cite{C++}.
    119 
    120 The manual deliberately imitates the ordering of the {\c11} standard (although the section numbering differs).
    121 Unfortunately, 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.
    122 For a simple introduction to \CFA, see the companion document ``An Overview of \CFA''
    123 \cite{Ditchfield96:Overview}.
    124 
    125 \begin{rationale}
    126 Commentary (like this) is quoted with quads.
    127 Commentary usually deals with subtle points, the rationale behind a rule, and design decisions.
     170This document is a reference manual and rationale for \CFA, a polymorphic extension of the C
     171programming language. It makes frequent reference to the {\c11} standard \cite{ANS:C11}, and
     172occasionally compares \CFA to {\CC} \cite{c++}.
     173
     174The manual deliberately imitates the ordering of the {\c11} standard (although the section numbering
     175differs). Unfortunately, this means that the manual contains more ``forward references'' than
     176usual, and that it will be hard to follow if the reader does not have a copy of the {\c11} standard
     177near-by. For a gentle introduction to \CFA, see the companion document ``An Overview of
     178\CFA'' \cite{Ditchfield96:Overview}.
     179
     180\begin{rationale}
     181Commentary (like this) is quoted with quads. Commentary usually deals with subtle points, the
     182rationale behind a rule, and design decisions.
    128183\end{rationale}
    129184
    130185% No ``Scope'' or ``Normative references'' chapters yet.
    131 
    132 
    133186\setcounter{chapter}{2}
    134187\chapter{Terms, definitions, and symbols}
    135 
    136 Terms from the {\c11} standard used in this document have the same meaning as in the {\c11} standard.
     188Terms from the {\c11} standard used in this document have the same meaning as in the {\c11}
     189standard.
    137190
    138191% No ``Conformance'' or ``Environment'' chapters yet.
    139 
    140 
    141192\setcounter{chapter}{5}
    142193\chapter{Language}
    143 
    144 
    145194\section{Notation}
    146 The 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.
     195The syntax notation used in this document is the same as is used in the {\c11} standard, with one
     196exception: ellipsis in the definition of a nonterminal, as in ``\emph{declaration:} \ldots'',
     197indicates that these rules extend a previous definition, which occurs in this document or in the
     198{\c11} standard.
    147199
    148200
     
    152204\subsection{Scopes of identifiers}\index{scopes}
    153205
    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.
    155 The outer declaration is hidden if the two declarations have \Index{compatible type}, or if one declares an array type and the other declares a pointer type and the element type and pointed-at type are compatible, or if one has function type and the other is a pointer to a compatible function type, or if one declaration is a ©type©\use{type} or ©typedef©\use{typedef} declaration and the other is not.
    156 The outer declaration becomes \Index{visible} when the scope of the inner declaration terminates.
    157 \begin{rationale}
    158 Hence, a \CFA program can declare an ©int v© and a ©float v© in the same scope;
    159 a {\CC} program can not.
     206\CFA's scope rules differ from C's in one major respect: a declaration of an identifier may
     207overload\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
     209have \Index{compatible type}, or if one declares an array type and the other declares a pointer type
     210and the element type and pointed-at type are compatible, or if one has function type and the other
     211is 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}
     215Hence, a \CFA program can declare an \lstinline$int v$ and a \lstinline$float v$ in the same
     216scope; a {\CC} program can not.
    160217\end{rationale}
    161218
     
    164221\index{linkage}
    165222
    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.
    167 Instead, in the set of translation units and libraries that constitutes an entire program, any two instances of a particular identifier with \Index{external linkage} denote the same object or function if they have \Index{compatible type}s, or if one declares an array type and the other declares a pointer type and the element type and pointed-at type are compatible, or if one has function type and the other is a pointer to a compatible function type.
    168 Within one translation unit, each instance of an identifier with \Index{internal linkage} denotes the same object or function in the same circumstances.
     223\CFA's linkage rules differ from C's in only one respect: instances of a particular identifier with
     224external or internal linkage do not necessarily denote the same object or function. Instead, in the
     225set of translation units and libraries that constitutes an entire program, any two instances of a
     226particular 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
     228the element type and pointed-at type are compatible, or if one has function type and the other is a
     229pointer to a compatible function type. Within one translation unit, each instance of an identifier
     230with \Index{internal linkage} denotes the same object or function in the same circumstances.
    169231Identifiers with \Index{no linkage} always denote unique entities.
    170232\begin{rationale}
    171 A \CFA program can declare an ©extern int v© and an ©extern float v©;
    172 a 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;
    183 using 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.
    184 Syntactically a generic type generator is represented by putting a forall specifier on a struct or union declaration, as defined in \VRef{forall}.
    185 An 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}
    187 forall( otype T | sumable( T ) ) struct pair {
    188         T x;
    189         T y;
    190 };
    191 pair( int ) p = { 3, 14 };
    192 \end{lstlisting}
    193 
    194 The type parameters in an instantiation of a generic type must satisfy any constraints in the forall specifier on the type generator declaration, e.g., ©sumable©.
    195 The instantiation then has the semantics that would result if the type parameters were substituted into the type generator declaration by macro substitution.
    196 
    197 Polymorphic 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}
    199 forall( 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 
    209 To avoid unduly constraining implementors, the generic type generator definition must be visible at any point where it is instantiated.
    210 Forward 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}
    214 forall( otype T ) struct A;
    215 
    216 forall( otype T ) struct B {
    217         A(T) *a;                        // legal, but cannot instantiate B(T)
    218 };
    219 
    220 B(T) x;                                 // illegal, *x.a is of an incomplete generic type
    221  
    222 forall( otype T ) struct A {
    223         B( T ) *b;
    224 };
    225 
    226 B( 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 
     233A \CFA program can declare an \lstinline$extern int v$ and an \lstinline$extern float v$; a C
     234program cannot.
     235\end{rationale}
    238236
    239237\section{Conversions}
    240238\CFA defines situations where values of one type are automatically converted to another type.
    241 These conversions are called \define{implicit conversion}s.
    242 The programmer can request \define{explicit conversion}s using cast expressions.
     239These conversions are called \define{implicit conversion}s. The programmer can request
     240\define{explicit conversion}s using cast expressions.
    243241
    244242
    245243\subsection{Arithmetic operands}
    246 
    247 
    248 \setcounter{subsubsection}{8}
     244\setcounter{subsubsection}{7}
     245
     246
    249247\subsubsection{Safe arithmetic conversions}
    250 
    251 In 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.
    252 In \CFA, these conversions play a role in overload resolution, and collectively are called the \define{safe arithmetic conversion}s.
    253 
    254 Let ©int$_r$© and ©unsigned$_r$© be the signed and unsigned integer types with integer conversion rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$.
    255 Let ©unsigned$_{mr}$© be the unsigned integer type with maximal rank.
     248In C, a pattern of conversions known as the \define{usual arithmetic conversion}s is used with most
     249binary arithmetic operators to convert the operands to a common type and determine the type of the
     250operator's result. In \CFA, these conversions play a role in overload resolution, and
     251collectively are called the \define{safe arithmetic conversion}s.
     252
     253Let \(int_r\) and \(unsigned_r\) be the signed and unsigned integer types with integer conversion
     254rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$. Let
     255\(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 \item
    262 For every rank $r$ greater than or equal to the rank of ©int©, conversion from ©int$_r$© to ©unsigned$_r$©.
    263 \item
    264 For every rank $r$ greater than or equal to the rank of ©int©, where ©int$_{r+1}$© exists and can represent all values of ©unsigned$_r$©, conversion from ©unsigned$_r$© to ©int$_{r+1}$©.
    265 \item
    266 Conversion from ©unsigned$_{mr}$© to ©float©.
     261
     262\item
     263For every rank $r$ greater than or equal to the rank of \lstinline$int$, conversion from \(int_r\)
     264to \(unsigned_r\).
     265
     266\item
     267For every rank $r$ greater than or equal to the rank of \lstinline$int$, where \(int_{r+1}\) exists
     268and can represent all values of \(unsigned_r\), conversion from \(unsigned_r\) to \(int_{r+1}\).
     269
     270\item
     271Conversion from \(unsigned_{mr}\) to \lstinline$float$.
     272
    267273\item
    268274Conversion from an enumerated type to its compatible integer type.
    269 \item
    270 Conversion from ©float© to ©double©, and from ©double© to ©long double©.
    271 \item
    272 Conversion from ©float _Complex© to ©double _Complex©, and from ©double _Complex© to ©long double _Complex©.
     275
     276\item
     277Conversion from \lstinline$float$ to \lstinline$double$, and from \lstinline$double$ to
     278\lstinline$long double$.
     279
     280\item
     281Conversion from \lstinline$float _Complex$ to \lstinline$double _Complex$,
     282and from \lstinline$double _Complex$ to \lstinline$long double _Complex$.
     283
    273284\begin{sloppypar}
    274285\item
    275 Conversion from ©float _Imaginary© to ©double _Imaginary©, and from ©double _Imaginary© to ©long double _Imaginary©, if the implementation supports imaginary types.
     286Conversion from \lstinline$float _Imaginary$ to \lstinline$double _Imaginary$, and from
     287\lstinline$double _Imaginary$ to \lstinline$long double$ \lstinline$_Imaginary$, if the
     288implementation supports imaginary types.
    276289\end{sloppypar}
    277290\end{itemize}
    278291
    279 If type ©T© can be converted to type ©U© by a safe direct arithmetic conversion and type ©U© can be converted to type ©V© by a safe arithmetic conversion, then the conversion from ©T© to type ©V© is an \emph{indirect} safe arithmetic conversion.
    280 
    281 \begin{rationale}
    282 Note 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.
     292If type \lstinline$T$ can be converted to type \lstinline$U$ by a safe direct arithmetic conversion
     293and type \lstinline$U$ can be converted to type \lstinline$V$ by a safe arithmetic conversion, then
     294the conversion from \lstinline$T$ to type \lstinline$V$ is an \emph{indirect} safe arithmetic
     295conversion.
     296
     297\begin{rationale}
     298Note that {\c11} does not include conversion from \Index{real type}s to \Index{complex type}s in the
     299usual arithmetic conversions, and \CFA does not include them as safe conversions.
    283300\end{rationale}
    284301
    285302
    286303\subsection{Other operands}
    287 
    288 
    289304\setcounter{subsubsection}{3}
     305
     306
    290307\subsubsection{Anonymous structures and unions}
    291308\label{anon-conv}
    292309
    293 If an expression's type is a pointer to a structure or union type that has a member that is an \Index{anonymous structure} or an \Index{anonymous union}, it can be implicitly converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's type.
    294 The result of the conversion is a pointer to the member.
     310If 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
     312converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's
     313type. The result of the conversion is a pointer to the member.
    295314
    296315\examples
     
    299318        int x, y;
    300319};
    301 void move_by( struct point * p1, struct point * p2 ) {§\impl{move_by}§
     320void move_by(struct point * p1, struct point * p2) {@\impl{move_by}@
    302321        p1->x += p2.x;
    303322        p1->y += p2.y;
    304323}
     324
    305325struct color_point {
    306326        enum { RED, BLUE, GREEN } color;
    307327        struct point;
    308328} cp1, cp2;
    309 move_to( &cp1, &cp2 );
    310 \end{lstlisting}
    311 Thanks to implicit conversion, the two arguments that ©move_by()© receives are pointers to ©cp1©'s second member and ©cp2©'s second member.
     329move_to(&cp1, &cp2);
     330\end{lstlisting}
     331Thanks 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.
    312333
    313334
    314335\subsubsection{Specialization}
    315 A 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}.
    316 Any value that is legal for the inferred parameter may be used, including other inferred parameters.
    317 
    318 If, 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.
    319 The assertion parameter is bound to that object or function.
    320 
    321 The 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.
     336A 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
     338value that is legal for the inferred parameter may be used, including other inferred parameters.
     339
     340If, after the inferred parameter binding, an \Index{assertion parameter} has no inferred parameters
     341in its type, then an object or function must be visible at the point of the specialization that has
     342the 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
     344is bound to that object or function.
     345
     346The type of the specialization is the type of the original with the bound inferred parameters and
     347the bound assertion parameters replaced by their bound values.
    322348
    323349\examples
    324350The type
    325351\begin{lstlisting}
    326 forall( otype T, otype U ) void (*)( T, U );
     352forall( type T, type U ) void (*)( T, U );
    327353\end{lstlisting}
    328354can be specialized to (among other things)
    329355\begin{lstlisting}
    330 forall( otype T ) void (*)( T, T );             // U bound to T
    331 forall( otype T ) void (*)( T, real );  // U bound to real
    332 forall( otype U ) void (*)( real, U );  // T bound to real
     356forall( type T ) void (*)( T, T );              // U bound to T
     357forall( type T ) void (*)( T, real );   // U bound to real
     358forall( type U ) void (*)( real, U );   // T bound to real
    333359void f( real, real );                                   // both bound to real
    334360\end{lstlisting}
     
    336362The type
    337363\begin{lstlisting}
    338 forall( otype T | T ?+?( T, T ) ) T (*)( T );
     364forall( type T | T ?+?( T, T )) T (*)( T );
    339365\end{lstlisting}
    340366can be specialized to (among other things)
    341367\begin{lstlisting}
    342 int (*)( int );         // T bound to int, and T ?+?(T, T ) bound to int ?+?( int, int )
     368int (*)( int );                                         // T bound to int, and T ?+?(T, T ) bound to int ?+?( int, int )
    343369\end{lstlisting}
    344370
     
    351377a direct safe arithmetic conversion;
    352378\item
    353 from any object type or incomplete type to ©void©;
    354 \item
    355 from a pointer to any non-©void© type to a pointer to ©void©;
    356 \item
    357 from a pointer to any type to a pointer to a more qualified version of the type\index{qualified type};
    358 \item
    359 from 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
    361 within 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.
     379from any object type or incomplete type to \lstinline$void$;
     380\item
     381from a pointer to any non-\lstinline$void$ type to a pointer to \lstinline$void$;
     382\item
     383from a pointer to any type to a pointer to a more qualified version of the type\index{qualified
     384type};
     385\item
     386from a pointer to a structure or union type to a pointer to the type of a member of the structure or
     387union that is an \Index{anonymous structure} or an \Index{anonymous union};
     388\item
     389within the scope of an initialized \Index{type declaration}, conversions between a type and its
     390implementation or between a pointer to a type and a pointer to its implementation.
    362391\end{itemize}
    363392
    364393Conversions that are not safe conversions are \define{unsafe conversion}s.
    365394\begin{rationale}
    366 As in C, there is an implicit conversion from ©void *© to any pointer type.
    367 This 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.
     395As in C, there is an implicit conversion from \lstinline$void *$ to any pointer type. This is
     396clearly 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
     398superset of C as possible, but discourages it by making it unsafe.
    369399\end{rationale}
    370400
     
    372402\subsection{Conversion cost}
    373403
    374 The \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.
    375 It is defined as follows.
     404The \define{conversion cost} of a safe\index{safe conversion}
     405conversion\footnote{Unsafe\index{unsafe conversion} conversions do not have defined conversion
     406costs.} is a measure of how desirable or undesirable it is. It is defined as follows.
    376407\begin{itemize}
    377408\item
     
    382413
    383414\item
    384 The cost of an indirect safe arithmetic conversion is the smallest number of direct conversions needed to make up the conversion.
     415The cost of an indirect safe arithmetic conversion is the smallest number of direct conversions
     416needed to make up the conversion.
    385417\end{itemize}
    386418
     
    390422\begin{itemize}
    391423\item
    392 The cost of an implicit conversion from ©int© to ©long© is 1.
    393 The cost of an implicit conversion from ©long© to ©double© is 3, because it is defined in terms of conversions from ©long© to ©unsigned long©, then to ©float©, and then to ©double©.
    394 
    395 \item
    396 If ©int© can represent all the values of ©unsigned short©, then the cost of an implicit conversion from ©unsigned short© to ©unsigned© is 2: ©unsigned short© to ©int© to ©unsigned©.
    397 Otherwise, ©unsigned short© is converted directly to ©unsigned©, and the cost is 1.
    398 
    399 \item
    400 If ©long© can represent all the values of ©unsigned©, then the conversion cost of ©unsigned© to ©long© is 1.
    401 Otherwise, the conversion is an unsafe conversion, and its conversion cost is undefined.
     424The cost of an implicit conversion from \lstinline$int$ to \lstinline$long$ is 1. The cost of an
     425implicit conversion from \lstinline$long$ to \lstinline$double$ is 3, because it is defined in terms
     426of conversions from \lstinline$long$ to \lstinline$unsigned long$, then to \lstinline$float$, and
     427then to \lstinline$double$.
     428
     429\item
     430If \lstinline$int$ can represent all the values of \lstinline$unsigned short$, then the cost of an
     431implicit 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
     436If \lstinline$long$ can represent all the values of \lstinline$unsigned$, then the conversion cost
     437of \lstinline$unsigned$ to \lstinline$long$ is 1. Otherwise, the conversion is an unsafe
     438conversion, and its conversion cost is undefined.
    402439\end{itemize}
    403440
    404 
    405441\section{Lexical elements}
    406 
    407 
    408442\subsection{Keywords}
    409 
    410443\begin{syntax}
    411444\oldlhs{keyword}
    412 \rhs ©forall©
    413 \rhs ©lvalue©
    414 \rhs ©trait©
    415 \rhs ©dtype©
    416 \rhs ©ftype©
    417 \rhs ©otype©
     445        \rhs \lstinline$forall$
     446        \rhs \lstinline$lvalue$
     447        \rhs \lstinline$context$
     448        \rhs \lstinline$dtype$
     449        \rhs \lstinline$ftype$
     450        \rhs \lstinline$type$
    418451\end{syntax}
    419452
     
    421454\subsection{Identifiers}
    422455
    423 \CFA allows operator \Index{overloading} by associating operators with special function identifiers.
    424 Furthermore, the constants ``©0©'' and ``©1©'' have special status for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them as overloadable identifiers.
    425 Programmers can use these identifiers to declare functions and objects that implement operators and constants for their own types.
     456\CFA allows operator \Index{overloading} by associating operators with special function
     457identifiers. Furthermore, the constants ``\lstinline$0$'' and ``\lstinline$1$'' have special status
     458for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them
     459as overloadable identifiers. Programmers can use these identifiers to declare functions and objects
     460that implement operators and constants for their own types.
    426461
    427462
     
    431466\begin{syntax}
    432467\oldlhs{identifier}
    433 \rhs ©0©
    434 \rhs ©1©
     468\rhs \lstinline$0$
     469\rhs \lstinline$1$
    435470\end{syntax}
    436471
    437 \index{constant identifiers}\index{identifiers!for constants} The tokens ``©0©''\impl{0} and ``©1©''\impl{1} are identifiers.
    438 No other tokens defined by the rules for integer constants are considered to be identifiers.
    439 \begin{rationale}
    440 Why ``©0©'' and ``©1©''? Those integers have special status in C.
    441 All scalar types can be incremented and decremented, which is defined in terms of adding or subtracting 1.
    442 The operations ``©&&©'', ``©||©'', and ``©!©'' can be applied to any scalar arguments, and are defined in terms of comparison against 0.
    443 A \nonterm{constant-expression} that evaluates to 0 is effectively compatible with every pointer type.
    444 
    445 In 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.
    446 However, 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.
    447 Defining special constants for a user-defined type is more efficient than defining a conversion to the type from ©_Bool©.
    448 
    449 Why \emph{just} ``©0©'' and ``©1©''? Why not other integers? No other integers have special status in C.
    450 A facility that let programmers declare specific constants---``©const Rational 12©'', for instance---would not be much of an improvement.
    451 Some facility for defining the creation of values of programmer-defined types from arbitrary integer tokens would be needed.
    452 The complexity of such a feature doesn't seem worth the gain.
     472\index{constant identifiers}\index{identifiers!for constants} The tokens ``\lstinline$0$''\impl{0}
     473and ``\lstinline$1$''\impl{1} are identifiers. No other tokens defined by the rules for integer
     474constants are considered to be identifiers.
     475\begin{rationale}
     476Why ``\lstinline$0$'' and ``\lstinline$1$''? Those integers have special status in C. All scalar
     477types can be incremented and decremented, which is defined in terms of adding or subtracting 1. The
     478operations ``\lstinline$&&$'', ``\lstinline$||$'', and ``\lstinline$!$'' can be applied to any
     479scalar arguments, and are defined in terms of comparison against 0. A \nonterm{constant-expression}
     480that evaluates to 0 is effectively compatible with every pointer type.
     481
     482In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to
     483any arithmetic type, and the rules for pointer expressions treat constant expressions evaluating to
     4840 as a special case. However, user-defined arithmetic types often need the equivalent of a 1 or 0
     485for their functions or operators, polymorphic functions often need 0 and 1 constants of a type
     486matching their polymorphic parameters, and user-defined pointer-like types may need a null value.
     487Defining special constants for a user-defined type is more efficient than defining a conversion to
     488the type from \lstinline$_Bool$.
     489
     490Why \emph{just} ``\lstinline$0$'' and ``\lstinline$1$''? Why not other integers? No other integers
     491have special status in C. A facility that let programmers declare specific
     492constants---``\lstinline$const Rational 12$'', for instance---would not be much of an improvement.
     493Some facility for defining the creation of values of programmer-defined types from arbitrary integer
     494tokens would be needed. The complexity of such a feature doesn't seem worth the gain.
    453495\end{rationale}
    454496
     
    456498\subsubsection{Operator identifiers}
    457499
    458 \index{operator identifiers}\index{identifiers!for operators} Table \ref{opids} lists the programmer-definable operator identifiers and the operations they are associated with.
    459 Functions 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.
    460 The relationships between operators and function calls are discussed in descriptions of the operators.
     500\index{operator identifiers}\index{identifiers!for operators} Table \ref{opids} lists the
     501programmer-definable operator identifiers and the operations they are associated with. Functions
     502that are declared with (or pointed at by function pointers that are declared with) these identifiers
     503can be called by expressions that use the operator tokens and syntax, or the operator identifiers
     504and ``function call'' syntax. The relationships between operators and function calls are discussed
     505in descriptions of the operators.
    461506
    462507\begin{table}[hbt]
     
    464509\begin{tabular}[t]{ll}
    465510%identifier & operation \\ \hline
    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{?/?}\\
     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{?/?}\\
    479524\end{tabular}\hfil
    480525\begin{tabular}[t]{ll}
    481526%identifier & operation \\ \hline
    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{?&?}\\
     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{?&?}\\
    494539\end{tabular}\hfil
    495540\begin{tabular}[t]{ll}
    496541%identifier & operation \\ \hline
    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{?"|=?}\\
     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{?"|=?}\\
    510555\end{tabular}
    511556\hfil
     
    515560
    516561\begin{rationale}
    517 Operator identifiers are made up of the characters of the operator token, with question marks added to mark the positions of the arguments of operators.
    518 The question marks serve as mnemonic devices;
    519 programmers can not create new operators by arbitrarily mixing question marks and other non-alphabetic characters.
    520 Note 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}
    524 The use of ``©?©'' in identifiers means that some C programs are not \CFA programs.  For instance, the sequence of characters ``©(i < 0)?--i:i©'' is legal in a C program, but a
    525 \CFA compiler detects a syntax error because it treats ``©?--©'' as an identifier, not as the two tokens ``©?©'' and ``©--©''.
     562Operator identifiers are made up of the characters of the operator token, with question marks added
     563to mark the positions of the arguments of operators. The question marks serve as mnemonic devices;
     564programmers can not create new operators by arbitrarily mixing question marks and other
     565non-alphabetic characters. Note that prefix and postfix versions of the increment and decrement
     566operators are distinguished by the position of the question mark.
     567\end{rationale}
     568
     569\begin{rationale}
     570The use of ``\lstinline$?$'' in identifiers means that some C programs are not \CFA programs.
     571For instance, the sequence of characters ``\lstinline$(i < 0)?--i:i$'' is legal in a C program, but
     572a \CFA compiler will detect a syntax error because it will treat ``\lstinline$?--$'' as an
     573identifier, not as the two tokens ``\lstinline$?$'' and ``\lstinline$--$''.
    526574\end{rationale}
    527575
     
    530578\begin{itemize}
    531579\item
    532 The logical operators ``©&&©'' and ``©||©'', and the conditional operator ``©?:©''.
    533 These 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.
    534 Note that the definitions of ``©&&©'' and ``©||©'' say that they work by checking that their arguments are unequal to 0, so defining ``©!=©'' and ``©0©'' for user-defined types is enough to allow them to be used in logical expressions.
    535 
    536 \item
    537 The comma operator\index{comma expression}.
    538 It is a control-flow operator like those above.
     580The logical operators ``\lstinline$&&$'' and ``\lstinline$||$'', and the conditional operator
     581``\lstinline$?:$''. These operators do not always evaluate their operands, and hence can not be
     582properly defined by functions unless some mechanism like call-by-name is added to the language.
     583Note that the definitions of ``\lstinline$&&$'' and ``\lstinline$||$'' say that they work by
     584checking that their arguments are unequal to 0, so defining ``\lstinline$!=$'' and ``\lstinline$0$''
     585for user-defined types is enough to allow them to be used in logical expressions.
     586
     587\item
     588The comma operator\index{comma expression}. It is a control-flow operator like those above.
    539589Changing its meaning seems pointless and confusing.
    540590
    541591\item
    542 The ``address of'' operator.
    543 It would seem useful to define a unary ``©&©'' operator that returns values of some programmer-defined pointer-like type.
    544 The problem lies with the type of the operator.
    545 Consider the expression ``©p = &x©'', where ©x© is of type ©T© and ©p© has the programmer-defined type ©T_ptr©.
    546 The expression might be treated as a call to the unary function ``©&?©''.
    547 Now what is the type of the function's parameter? It can not be ©T©, because then ©x© would be passed by value, and there is no way to create a useful pointer-like result from a value.
    548 Hence the parameter must have type ©T *©.
    549 But then the expression must be rewritten as ``©p = &?( &x )©''
     592The ``address of'' operator. It would seem useful to define a unary ``\lstinline$&$'' operator that
     593returns values of some programmer-defined pointer-like type. The problem lies with the type of the
     594operator. 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
     596might be treated as a call to the unary function ``\lstinline$&?$''. Now what is the type of the
     597function's parameter? It can not be \lstinline$T$, because then \lstinline$x$ would be passed by
     598value, and there is no way to create a useful pointer-like result from a value. Hence the parameter
     599must have type \lstinline$T *$. But then the expression must be rewritten as ``\lstinline$p = &?( &x )$''
    550600---which doesn't seem like progress!
    551601
    552 The 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''.
    553 It seems simpler to define a conversion function from ©T *© to ©T_ptr©.
    554 
    555 \item
    556 The ©sizeof© operator.
    557 It is already defined for every object type, and intimately tied into the language's storage allocation model.
    558 Redefining it seems pointless.
    559 
    560 \item
    561 The ``member of'' operators ``©.©'' and ``©->©''.
    562 These are not really infix operators, since their right ``operand'' is not a value or object.
    563 
    564 \item
    565 Cast operators\index{cast expression}.
    566 Anything that can be done with an explicit cast can be done with a function call.
    567 The difference in syntax is small.
     602The rule for address-of expressions would have to be something like ``keep applying address-of
     603functions until you get one that takes a pointer argument, then use the built-in operator and
     604stop''. It seems simpler to define a conversion function from \lstinline$T *$ to \lstinline$T_ptr$.
     605
     606\item
     607The \lstinline$sizeof$ operator. It is already defined for every object type, and intimately tied
     608into the language's storage allocation model. Redefining it seems pointless.
     609
     610\item
     611The ``member of'' operators ``\lstinline$.$'' and ``\lstinline$->$''. These are not really infix
     612operators, since their right ``operand'' is not a value or object.
     613
     614\item
     615Cast operators\index{cast expression}. Anything that can be done with an explicit cast can be done
     616with a function call. The difference in syntax is small.
    568617\end{itemize}
    569618\end{rationale}
     
    572621\section{Expressions}
    573622
    574 \CFA allows operators and identifiers to be overloaded.
    575 Hence, each expression can have a number of \define{interpretation}s, each of which has a different type.
    576 The interpretations that are potentially executable are called \define{valid interpretation}s.
    577 The set of interpretations depends on the kind of expression and on the interpretations of the subexpressions that it contains.
    578 The rules for determining the valid interpretations of an expression are discussed below for each kind of expression.
    579 Eventually the context of the outermost expression chooses one interpretation of that expression.
    580 
    581 An \define{ambiguous interpretation} is an interpretation which does not specify the exact object or function denoted by every identifier in the expression.
    582 An expression can have some interpretations that are ambiguous and others that are unambiguous.
    583 An expression that is chosen to be executed shall not be ambiguous.
    584 
    585 The \define{best valid interpretations} are the valid interpretations that use the fewest unsafe\index{unsafe conversion} conversions.
    586 Of these, the best are those where the functions and objects involved are the least polymorphic\index{less polymorphic}.
    587 Of these, the best have the lowest total \Index{conversion cost}, including all implicit conversions in the argument expressions.
    588 Of these, the best have the highest total conversion cost for the implicit conversions
    589 (if any) applied to the argument expressions.
    590 If 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.
    594 In 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.
    595 In \CFA, those conversions are ``safe''.
    596 The ``fewest unsafe conversions'' rule ensures that the usual conversions are done, if possible.
    597 The ``lowest total expression cost'' rule chooses the proper common type.
    598 The odd-looking ``highest argument conversion cost'' rule ensures that, when unary expressions must be converted, conversions of function results are preferred to conversion of function arguments: ©(double)-i© will be preferred to ©-(double)i©.
    599 
    600 The ``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.
    601 It also gives preference to monomorphic values (such as the ©int© ©0©) over polymorphic values (such as the \Index{null pointer} ©0©\use{0}).
    602 However, interpretations that call polymorphic functions are preferred to interpretations that perform unsafe conversions, because those conversions potentially lose accuracy or violate strong typing.
     623\CFA allows operators and identifiers to be overloaded. Hence, each expression can have a number
     624of \define{interpretation}s, each of which has a different type. The interpretations that are
     625potentially executable are called \define{valid interpretation}s. The set of interpretations
     626depends on the kind of expression and on the interpretations of the subexpressions that it contains.
     627The rules for determining the valid interpretations of an expression are discussed below for each
     628kind of expression. Eventually the context of the outermost expression chooses one interpretation
     629of that expression.
     630
     631An \define{ambiguous interpretation} is an interpretation which does not specify the exact object or
     632function denoted by every identifier in the expression. An expression can have some interpretations
     633that are ambiguous and others that are unambiguous. An expression that is chosen to be executed
     634shall not be ambiguous.
     635
     636The \define{best valid interpretations} are the valid interpretations that use the fewest
     637unsafe\index{unsafe conversion} conversions. Of these, the best are those where the functions and
     638objects involved are the least polymorphic\index{less polymorphic}. Of these, the best have the
     639lowest total \Index{conversion cost}, including all implicit conversions in the argument
     640expressions. 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
     642the best valid interpretation is ambiguous, then the resulting interpretation is
     643ambiguous\index{ambiguous interpretation}.
     644
     645\begin{rationale}
     646\CFA's rules for selecting the best interpretation are designed to allow overload resolution to
     647mimic C's operator semantics. In C, the ``usual arithmetic conversions'' are applied to the
     648operands of binary operators if necessary to convert the operands to types with a common real type.
     649In \CFA, those conversions are ``safe''. The ``fewest unsafe conversions'' rule ensures that the
     650usual conversions are done, if possible. The ``lowest total expression cost'' rule chooses the
     651proper common type. The odd-looking ``highest argument conversion cost'' rule ensures that, when
     652unary expressions must be converted, conversions of function results are preferred to conversion of
     653function arguments: \lstinline$(double)-i$ will be preferred to \lstinline$-(double)i$.
     654
     655The ``least polymorphic'' rule reduces the number of polymorphic function calls, since such
     656functions are presumably more expensive than monomorphic functions and since the more specific
     657function 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
     660interpretations that perform unsafe conversions, because those conversions potentially lose accuracy
     661or violate strong typing.
    603662
    604663There are two notable differences between \CFA's overload resolution rules and the rules for
    605 {\CC} defined in \cite{C++}.
    606 First, the result type of a function plays a role.
    607 In {\CC}, a function call must be completely resolved based on the arguments to the call in most circumstances.
    608 In \CFA, a function call may have several interpretations, each with a different result type, and the interpretations of the containing context choose among them.
    609 Second, safe conversions are used to choose among interpretations of all sorts of functions;
    610 in {\CC}, the ``usual arithmetic conversions'' are a separate set of rules that apply only to the built-in operators.
    611 \end{rationale}
    612 
    613 Expressions involving certain operators\index{operator identifiers} are considered to be equivalent to function calls.
    614 A transformation from ``operator'' syntax to ``function call'' syntax is defined by \define{rewrite rules}.
    615 Each operator has a set of predefined functions that overload its identifier.
    616 Overload resolution determines which member of the set is executed in a given expression.
    617 The functions have \Index{internal linkage} and are implicitly declared with \Index{file scope}.
    618 The predefined functions and rewrite rules are discussed below for each of these operators.
    619 \begin{rationale}
    620 Predefined functions and constants have internal linkage because that simplifies optimization in traditional compile-and-link environments.
    621 For instance, ``©an_int + an_int©'' is equivalent to ``©?+?(an_int, an_int)©''.
    622 If integer addition has not been redefined in the current scope, a compiler can generate code to perform the addition directly.
    623 If predefined functions had external linkage, this optimization would be difficult.
    624 \end{rationale}
    625 
    626 \begin{rationale}
    627 Since 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.
    628 Such an algorithm was first described (for Ada) by Baker~\cite{Bak:overload}.
    629 It is extended here to handle polymorphic functions and arithmetic conversions.
    630 The 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}
    634 Expression syntax is quoted from the {\c11} standard.
    635 The syntax itself defines the precedence and associativity of operators.
    636 The sections are arranged in decreasing order of precedence, with all operators in a section having the same precedence.
     664{\CC} defined in \cite{c++}. First, the result type of a function plays a role. In {\CC}, a
     665function call must be completely resolved based on the arguments to the call in most circumstances.
     666In \CFA, a function call may have several interpretations, each with a different result type, and
     667the interpretations of the containing context choose among them. Second, safe conversions are used
     668to choose among interpretations of all sorts of functions; in {\CC}, the ``usual arithmetic
     669conversions'' are a separate set of rules that apply only to the built-in operators.
     670\end{rationale}
     671
     672Expressions involving certain operators\index{operator identifiers} are considered to be equivalent
     673to function calls. A transformation from ``operator'' syntax to ``function call'' syntax is defined
     674by \define{rewrite rules}. Each operator has a set of predefined functions that overload its
     675identifier. Overload resolution determines which member of the set is executed in a given
     676expression. The functions have \Index{internal linkage} and are implicitly declared with \Index{file
     677scope}. The predefined functions and rewrite rules are discussed below for each of these
     678operators.
     679\begin{rationale}
     680Predefined functions and constants have internal linkage because that simplifies optimization in
     681traditional compile-and-link environments. For instance, ``\lstinline$an_int + an_int$'' is
     682equivalent to ``\lstinline$?+?(an_int, an_int)$''. If integer addition has not been redefined in
     683the current scope, a compiler can generate code to perform the addition directly. If predefined
     684functions had external linkage, this optimization would be difficult.
     685\end{rationale}
     686
     687\begin{rationale}
     688Since each subsection describes the interpretations of an expression in terms of the interpretations
     689of its subexpressions, this chapter can be taken as describing an overload resolution algorithm that
     690uses one bottom-up pass over an expression tree. Such an algorithm was first described (for Ada) by
     691Baker~\cite{Bak:overload}. It is extended here to handle polymorphic functions and arithmetic
     692conversions. The overload resolution rules and the predefined functions have been chosen so that, in
     693programs that do not introduce overloaded declarations, expressions will have the same meaning in C
     694and in \CFA.
     695\end{rationale}
     696
     697\begin{rationale}
     698Expression syntax is quoted from the {\c11} standard. The syntax itself defines the precedence and
     699associativity of operators. The sections are arranged in decreasing order of precedence, with all
     700operators in a section having the same precedence.
    637701\end{rationale}
    638702
     
    645709\rhs \nonterm{constant}
    646710\rhs \nonterm{string-literal}
    647 \rhs ©(© \nonterm{expression} ©)©
     711\rhs \lstinline$($ \nonterm{expression} \lstinline$)$
    648712\rhs \nonterm{generic-selection}
    649713\end{syntax}
    650714
    651 \predefined
    652 \begin{lstlisting}
    653 const int 1;§\use{1}§
    654 const int 0;§\use{0}§
    655 forall( dtype DT ) DT * const 0;
    656 forall( ftype FT ) FT * const 0;
     715\paragraph{Predefined Identifiers}%
     716\begin{lstlisting}
     717const int 1;@\use{1}@
     718const int 0;@\use{0}@
     719forall( dtype DT ) DT *const 0;
     720forall( ftype FT ) FT *const 0;
    657721\end{lstlisting}
    658722
    659723\semantics
    660 The \Index{valid interpretation} of an \nonterm{identifier} are given by the visible\index{visible} declarations of the identifier.
    661 
    662 A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type and value defined by {\c11}.
    663 The predefined integer identifiers ``©1©'' and ``©0©'' have the integer values 1 and 0, respectively.
    664 The other two predefined ``©0©'' identifiers are bound to polymorphic pointer values that, when specialized\index{specialization} with a data type or function type respectively, produce a null pointer of that type.
     724The \Index{valid interpretation} of an \nonterm{identifier} are given by the visible\index{visible}
     725declarations of the identifier.
     726
     727A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type
     728and 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
     731specialized\index{specialization} with a data type or function type respectively, produce a null
     732pointer of that type.
    665733
    666734A parenthesised expression has the same interpretations as the contained \nonterm{expression}.
    667735
    668736\examples
    669 The expression ©(void *)0©\use{0} specializes the (polymorphic) null pointer to a null pointer to ©void©. ©(const void *)0© does the same, and also uses a safe conversion from ©void *© to ©const void *©.
    670 In each case, the null pointer conversion is better\index{best valid interpretations} than the unsafe conversion of the integer ©0© to a pointer.
     737The expression \lstinline$(void *)0$\use{0} specializes the (polymorphic) null pointer to a null
     738pointer to \lstinline$void$. \lstinline$(const void *)0$ does the same, and also uses a safe
     739conversion from \lstinline$void *$ to \lstinline$const void *$. In each case, the null pointer
     740conversion is better\index{best valid interpretations} than the unsafe conversion of the integer
     741\lstinline$0$ to a pointer.
    671742
    672743\begin{rationale}
    673744Note that the predefined identifiers have addresses.
    674745
    675 \CFA does not have C's concept of ``null pointer constants'', which are not typed values but special strings of tokens.
    676 The C token ``©0©'' is an expression of type ©int© with the value ``zero'', and it \emph{also} is a null pointer constant.
    677 Similarly, ``©(void *)0© is an expression of type ©(void *)© whose value is a null pointer, and it also is a null pointer constant.
    678 However, 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.
    682 The declaration
    683 \begin{lstlisting}
    684 forall( 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.
    686 The only such value is the null pointer.
    687 Therefore the type \emph{alone} is enough to identify a null pointer.
    688 Where C defines an operator with a special case for the null pointer constant, \CFA defines predefined functions with a polymorphic object parameter.
     746\CFA does not have C's concept of ``null pointer constants'', which are not typed values but
     747special strings of tokens. The C token ``\lstinline$0$'' is an expression of type \lstinline$int$
     748with 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,
     750and 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
     752semantics of C expressions contain many special cases to deal with subexpressions that are null
     753pointer constants.
     754
     755\CFA handles these cases through overload resolution. The declaration
     756\begin{lstlisting}
     757forall( dtype DT ) DT *const 0;
     758\end{lstlisting}
     759means that \lstinline$0$ is a polymorphic object, and contains a value that can have \emph{any}
     760pointer-to-object type or pointer-to-incomplete type. The only such value is the null pointer.
     761Therefore the type \emph{alone} is enough to identify a null pointer. Where C defines an operator
     762with a special case for the null pointer constant, \CFA defines predefined functions with a
     763polymorphic object parameter.
    689764\end{rationale}
    690765
     
    692767\subsubsection{Generic selection}
    693768
    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.
    695 If a generic selection has no ©default© generic association, the best interpretation of its controlling expression shall have type compatible with exactly one of the types named in its generic association list.
     769\constraints The best interpretation of the controlling expression shall be
     770unambiguous\index{ambiguous interpretation}, and shall have type compatible with at most one of the
     771types named in its generic association list. If a generic selection has no \lstinline$default$
     772generic association, the best interpretation of its controlling expression shall have type
     773compatible with exactly one of the types named in its generic association list.
    696774
    697775\semantics
     
    704782\lhs{postfix-expression}
    705783\rhs \nonterm{primary-expression}
    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} ©,© ©}©
     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$}$
    715793\lhs{argument-expression-list}
    716794\rhs \nonterm{assignment-expression}
    717 \rhs \nonterm{argument-expression-list} ©,©
     795\rhs \nonterm{argument-expression-list} \lstinline$,$
    718796         \nonterm{assignment-expression}
    719797\end{syntax}
     
    721799\rewriterules
    722800\begin{lstlisting}
    723 a[b] => ?[?]( b, a ) // if a has integer type§\use{?[?]}§
    724 a[b] => ?[?]( a, b ) // otherwise
    725 a( §\emph{arguments}§ ) => ?()( a, §\emph{arguments}§ )§\use{?()}§
    726 a++ => ?++(&( a ))§\use{?++}§
    727 a-- => ?--(&( a ))§\use{?--}§
     801a[b] @\rewrite@ ?[?]( b, a ) // if a has integer type */@\use{?[?]}@
     802a[b] @\rewrite@ ?[?]( a, b ) // otherwise
     803a( ${\em arguments }$ ) @\rewrite@ ?()( a, ${\em arguments} )$@\use{?()}@
     804a++ @\rewrite@ ?++(&( a ))@\use{?++}@
     805a-- @\rewrite@ ?--(&( a ))@\use{?--}@
    728806\end{lstlisting}
    729807
     
    731809\subsubsection{Array subscripting}
    732810
    733 \predefined
    734 \begin{lstlisting}
    735 forall( otype T ) lvalue T ?[?]( T *, ptrdiff_t );§\use{ptrdiff_t}§
    736 forall( otype T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t );
    737 forall( otype T ) lvalue const T ?[?]( const T *, ptrdiff_t );
    738 forall( otype T ) lvalue restrict T ?[?]( restrict T *, ptrdiff_t );
    739 forall( otype T ) lvalue volatile T ?[?]( volatile T *, ptrdiff_t );
    740 forall( otype T ) lvalue _Atomic const T ?[?]( _Atomic const T *, ptrdiff_t );
    741 forall( otype T ) lvalue _Atomic restrict T ?[?]( _Atomic restrict T *, ptrdiff_t );
    742 forall( otype T ) lvalue _Atomic volatile T ?[?]( _Atomic volatile T *, ptrdiff_t );
    743 forall( otype T ) lvalue const restrict T ?[?]( const restrict T *, ptrdiff_t );
    744 forall( otype T ) lvalue const volatile T ?[?]( const volatile T *, ptrdiff_t );
    745 forall( otype T ) lvalue restrict volatile T ?[?]( restrict volatile T *, ptrdiff_t );
    746 forall( otype T ) lvalue _Atomic const restrict T ?[?]( _Atomic const restrict T *, ptrdiff_t );
    747 forall( otype T ) lvalue _Atomic const volatile T ?[?]( _Atomic const volatile T *, ptrdiff_t );
    748 forall( otype T ) lvalue _Atomic restrict volatile T ?[?]( _Atomic restrict volatile T *, ptrdiff_t );
    749 forall( otype T ) lvalue const restrict volatile T ?[?]( const restrict volatile T *, ptrdiff_t );
    750 forall( otype T ) lvalue _Atomic const restrict volatile T ?[?]( _Atomic const restrict volatile T *, ptrdiff_t );
     811\begin{lstlisting}
     812forall( type T ) lvalue T ?[?]( T *, ptrdiff_t );@\use{ptrdiff_t}@
     813forall( type T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t );
     814forall( type T ) lvalue const T ?[?]( const T *, ptrdiff_t );
     815forall( type T ) lvalue restrict T ?[?]( restrict T *, ptrdiff_t );
     816forall( type T ) lvalue volatile T ?[?]( volatile T *, ptrdiff_t );
     817forall( type T ) lvalue _Atomic const T ?[?]( _Atomic const T *, ptrdiff_t );
     818forall( type T ) lvalue _Atomic restrict T ?[?]( _Atomic restrict T *, ptrdiff_t );
     819forall( type T ) lvalue _Atomic volatile T ?[?]( _Atomic volatile T *, ptrdiff_t );
     820forall( type T ) lvalue const restrict T ?[?]( const restrict T *, ptrdiff_t );
     821forall( type T ) lvalue const volatile T ?[?]( const volatile T *, ptrdiff_t );
     822forall( type T ) lvalue restrict volatile T ?[?]( restrict volatile T *, ptrdiff_t );
     823forall( type T ) lvalue _Atomic const restrict T ?[?]( _Atomic const restrict T *, ptrdiff_t );
     824forall( type T ) lvalue _Atomic const volatile T ?[?]( _Atomic const volatile T *, ptrdiff_t );
     825forall( type T ) lvalue _Atomic restrict volatile T ?[?]( _Atomic restrict volatile T *, ptrdiff_t );
     826forall( type T ) lvalue const restrict volatile T ?[?]( const restrict volatile T *, ptrdiff_t );
     827forall( type T ) lvalue _Atomic const restrict volatile T ?[?]( _Atomic const restrict volatile T *, ptrdiff_t );
    751828\end{lstlisting}
    752829\semantics
    753 The interpretations of subscript expressions are the interpretations of the corresponding function call expressions.
    754 \begin{rationale}
    755 C defines subscripting as pointer arithmetic in a way that makes ©a[i]© and ©i[a]© equivalent. \CFA provides the equivalence through a rewrite rule to reduce the number of overloadings of ©?[?]©.
    756 
    757 Subscript expressions are rewritten as function calls that pass the first parameter by value.
    758 This is somewhat unfortunate, since array-like types tend to be large.
    759 The alternative is to use the rewrite rule ``©a[b] => ?[?](&(a), b)©''.
    760 However, C semantics forbid this approach: the ©a© in ``©a[b]©'' can be an arbitrary pointer value, which does not have an address.
     830The interpretations of subscript expressions are the interpretations of the corresponding function
     831call expressions.
     832\begin{rationale}
     833C 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
     835number of overloadings of \lstinline$?[?]$.
     836
     837Subscript expressions are rewritten as function calls that pass the first parameter by value. This
     838is somewhat unfortunate, since array-like types tend to be large. The alternative is to use the
     839rewrite rule ``\lstinline$a[b]$ \rewrite \lstinline$?[?](&(a), b)$''. However, C semantics forbid
     840this approach: the \lstinline$a$ in ``\lstinline$a[b]$'' can be an arbitrary pointer value, which
     841does not have an address.
    761842
    762843The repetitive form of the predefined identifiers shows up a deficiency\index{deficiencies!pointers
    763  to qualified types} of \CFA's type system.
    764 Type 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.
     844 to qualified types} of \CFA's type system. Type qualifiers are not included in type values, so
     845polymorphic functions that take pointers to arbitrary types often come in one flavor for each
     846possible qualification of the pointed-at type.
    765847\end{rationale}
    766848
     
    769851
    770852\semantics
    771 A \define{function designator} is an interpretation of an expression that has function type.
    772 The
    773 \nonterm{postfix-expression} in a function call may have some interpretations that are function designators and some that are not.
    774 
    775 For those interpretations of the \nonterm{postfix-expression} that are not function designators, the expression is rewritten and becomes a call of a function named ``©?()©''.
    776 The valid interpretations of the rewritten expression are determined in the manner described below.
    777 
    778 Each combination of function designators and argument interpretations is considered.
    779 For 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:
     853A \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
     855designators and some that are not.
     856
     857For those interpretations of the \nonterm{postfix-expression} that are not function designators, the
     858expression is rewritten and becomes a call of a function named ``\lstinline$?()$''. The valid
     859interpretations of the rewritten expression are determined in the manner described below.
     860
     861Each combination of function designators and argument interpretations is considered. For those
     862interpretations of the \nonterm{postfix-expression} that are \Index{monomorphic function}
     863designators, the combination has a \Index{valid interpretation} if the function designator accepts
     864the number of arguments given, and each argument interpretation matches the corresponding explicit
     865parameter:
    780866\begin{itemize}
    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.
     867\item
     868if the argument corresponds to a parameter in the function designator's prototype, the argument
     869interpretation must have the same type as the corresponding parameter, or be implicitly convertible
     870to the parameter's type
     871\item
     872if 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.
    783874\end{itemize}
    784875The type of the valid interpretation is the return type of the function designator.
    785876
    786 For those combinations where the interpretation of the \nonterm{postfix-expression} is a \Index{polymorphic function} designator and the function designator accepts the number of arguments given, there shall be at least one set of \define{implicit argument}s for the implicit parameters such that
     877For 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
     879given, there shall be at least one set of \define{implicit argument}s for the implicit parameters
     880such that
    787881\begin{itemize}
    788882\item
    789 If the declaration of the implicit parameter uses \Index{type-class} ©type©\use{type}, the implicit argument must be an object type;
    790 if it uses ©dtype©, the implicit argument must be an object type or an incomplete type;
    791 and 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.
     883If the declaration of the implicit parameter uses \Index{type-class} \lstinline$type$\use{type}, the
     884implicit argument must be an object type; if it uses \lstinline$dtype$, the implicit argument must
     885be an object type or an incomplete type; and if it uses \lstinline$ftype$, the implicit argument
     886must be a function type.
     887
     888\item
     889if an explicit parameter's type uses any implicit parameters, then the corresponding explicit
     890argument must have a type that is (or can be safely converted\index{safe conversion} to) the type
     891produced by substituting the implicit arguments for the implicit parameters in the explicit
     892parameter type.
     893
     894\item
     895the remaining explicit arguments must match the remaining explicit parameters, as described for
     896monomorphic function designators.
     897
     898\item
     899for each \Index{assertion parameter} in the function designator's type, there must be an object or
     900function with the same identifier that is visible at the call site and whose type is compatible with
     901or can be specialized to the type of the assertion declaration.
    798902\end{itemize}
    799 There is a valid interpretation for each such set of implicit parameters.
    800 The type of each valid interpretation is the return type of the function designator with implicit parameter values substituted for the implicit arguments.
    801 
    802 A valid interpretation is ambiguous\index{ambiguous interpretation} if the function designator or any of the argument interpretations is ambiguous.
    803 
    804 Every 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 
    806 Every set of valid interpretations that have mutually compatible\index{compatible type} result types also produces an interpretation of the function call expression.
    807 The 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}
    809 One 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}.
    810 For instance, it should be possible to replace a function ``©int f( int );©'' with ``©forall( otype T ) T f( T );©'' without affecting any calls of ©f©.
    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.
     903There is a valid interpretation for each such set of implicit parameters. The type of each valid
     904interpretation is the return type of the function designator with implicit parameter values
     905substituted for the implicit arguments.
     906
     907A valid interpretation is ambiguous\index{ambiguous interpretation} if the function designator or
     908any of the argument interpretations is ambiguous.
     909
     910Every valid interpretation whose return type is not compatible with any other valid interpretation's
     911return type is an interpretation of the function call expression.
     912
     913Every set of valid interpretations that have mutually compatible\index{compatible type} result types
     914also produces an interpretation of the function call expression. The type of the interpretation is
     915the \Index{composite type} of the types of the valid interpretations, and the value of the
     916interpretation is that of the \Index{best valid interpretation}.
     917\begin{rationale}
     918One desirable property of a polymorphic programming language is \define{generalizability}: the
     919ability to replace an abstraction with a more general but equivalent abstraction without requiring
     920changes in any of the uses of the original\cite{Cormack90}. For instance, it should be possible to
     921replace a function ``\lstinline$int f( int );$'' with ``\lstinline$forall( type T ) T f( T );$''
     922without 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.
    813926Consider
    814927\begin{lstlisting}
     
    817930float f;
    818931double d;
    819 f = g( f, f );          // (1)
    820 f = g( i, f );          // (2) (safe conversion to float)
    821 f = g( d, f );          // (3) (unsafe conversion to float)
    822 \end{lstlisting}
    823 If ©g© was replaced by ``©forall( otype T ) T g( T, T );©'', the first and second calls would be unaffected, but the third would change: ©f© would be converted to ©double©, and the result would be a ©double©.
    824 
    825 Another example is the function ``©void h( int *);©''.
    826 This function can be passed a ©void *© argument, but the generalization ``©forall( otype T ) void h( T *);©'' can not.
    827 In this case, ©void© is not a valid value for ©T© because it is not an object type.
    828 If unsafe conversions were allowed, ©T© could be inferred to be \emph{any} object type, which is undesirable.
     932f = g( f, f );  // (1)
     933f = g( i, f );  // (2) (safe conversion to float)
     934f = g( d, f );  // (3) (unsafe conversion to float)
     935\end{lstlisting}
     936If \lstinline$g$ was replaced by ``\lstinline$forall( type T ) T g( T, T );$'', the first and second
     937calls 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
     940Another 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 *);$''
     942can not. In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an
     943object type. If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any}
     944object type, which is undesirable.
    829945\end{rationale}
    830946
    831947\examples
    832 A function called ``©?()©'' might be part of a numerical differentiation package.
    833 \begin{lstlisting}
    834 extern otype Derivative;
     948A function called ``\lstinline$?()$'' might be part of a numerical differentiation package.
     949\begin{lstlisting}
     950extern type Derivative;
    835951extern double ?()( Derivative, double );
    836952extern Derivative derivative_of( double (*f)( double ) );
     
    841957d = sin_dx( 12.9 );
    842958\end{lstlisting}
    843 Here, the only interpretation of ©sin_dx© is as an object of type ©Derivative©.
    844 For that interpretation, the function call is treated as ``©?()( sin_dx, 12.9 )©''.
    845 \begin{lstlisting}
    846 int f( long );          // (1)
    847 int f( int, int );      // (2)
     959Here, the only interpretation of \lstinline$sin_dx$ is as an object of type \lstinline$Derivative$.
     960For that interpretation, the function call is treated as ``\lstinline$?()( sin_dx, 12.9 )$''.
     961\begin{lstlisting}
     962int f( long );          // (1) 
     963int f( int, int );      // (2) 
    848964int f( int *);          // (3)
     965
    849966int i = f( 5 );         // calls (1)
    850967\end{lstlisting}
    851 Function (1) provides a valid interpretation of ``©f( 5 )©'', using an implicit ©int© to ©long© conversion.
    852 The other functions do not, since the second requires two arguments, and since there is no implicit conversion from ©int© to ©int *© that could be used with the third function.
    853 
    854 \begin{lstlisting}
    855 forall( otype T ) T h( T );
     968Function (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
     970requires 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}
     974forall( type T ) T h( T );
    856975double d = h( 1.5 );
    857976\end{lstlisting}
    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}
    861 forall( otype T, otype U ) void g( T, U );      // (4)
    862 forall( otype T ) void g( T, T );                       // (5)
    863 forall( otype T ) void g( T, long );            // (6)
    864 void g( long, long );                                           // (7)
     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}
     981forall( type T, type U ) void g( T, U );        // (4)
     982forall( type T ) void g( T, T );                        // (5)
     983forall( type T ) void g( T, long );                     // (6)
     984void g( long, long );                                           // (7)
    865985double d;
    866986int i;
    867987int *p;
    868 g( d, d );                                                                      // calls (5)
    869 g( d, i );                                                                      // calls (6)
    870 g( i, i );                                                                      // calls (7)
    871 g( i, p );                                                                      // calls (4)
    872 \end{lstlisting}
    873 The first call has valid interpretations for all four versions of ©g©. (6) and (7) are discarded because they involve unsafe ©double©-to-©long© conversions. (5) is chosen because it is less polymorphic than (4).
    874 
    875 For the second call, (7) is again discarded.
    876 Of the remaining interpretations for (4), (5), and (6) (with ©i© converted to ©long©), (6) is chosen because it is the least polymorphic.
    877 
    878 The third call has valid interpretations for all of the functions;
    879 (7) is chosen since it is not polymorphic at all.
    880 
    881 The 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}
    883 forall( otype T ) T min( T, T );
     988
     989g( d, d );                      // calls (5)
     990g( d, i );                      // calls (6)
     991g( i, i );                      // calls (7)
     992g( i, p );                      // calls (4)
     993\end{lstlisting}
     994The first call has valid interpretations for all four versions of \lstinline$g$. (6) and (7) are
     995discarded because they involve unsafe \lstinline$double$-to-\lstinline$long$ conversions. (5) is
     996chosen because it is less polymorphic than (4).
     997
     998For 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
     1000polymorphic.
     1001
     1002The third call has valid interpretations for all of the functions; (7) is chosen since it is not
     1003polymorphic at all.
     1004
     1005The fourth call has no interpretation for (5), because its arguments must have compatible type. (4)
     1006is chosen because it does not involve unsafe conversions.
     1007\begin{lstlisting}
     1008forall( type T ) T min( T, T );
    8841009double max( double, double );
    885 trait min_max( T ) {§\impl{min_max}§
     1010context min_max( T ) {@\impl{min_max}@
    8861011        T min( T, T );
    8871012        T max( T, T );
    8881013}
    889 forall( otype U | min_max( U ) ) void shuffle( U, U );
    890 shuffle( 9, 10 );
    891 \end{lstlisting}
    892 The only possibility for ©U© is ©double©, because that is the type used in the only visible ©max© function. 9 and 10 must be converted to ©double©, and ©min© must be specialized with ©T© bound to ©double©.
    893 \begin{lstlisting}
    894 extern void q( int );                                           // (8)
    895 extern void q( void * );                                        // (9)
     1014forall( type U | min_max( U ) ) void shuffle( U, U );
     1015shuffle(9, 10);
     1016\end{lstlisting}
     1017The only possibility for \lstinline$U$ is \lstinline$double$, because that is the type used in the
     1018only 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}
     1021extern void q( int );           // (8)
     1022extern void q( void * );        // (9)
    8961023extern void r();
    8971024q( 0 );
    8981025r( 0 );
    8991026\end{lstlisting}
    900 The ©int 0© could be passed to (8), or the ©(void *)© \Index{specialization} of the null pointer\index{null pointer} ©0©\use{0} could be passed to (9).
    901 The former is chosen because the ©int© ©0© is \Index{less polymorphic}.
    902 For the same reason, ©int© ©0© is passed to ©r()©, even though it has \emph{no} declared parameter types.
     1027The \lstinline$int 0$ could be passed to (8), or the \lstinline$(void *)$ \Index{specialization} of
     1028the null pointer\index{null pointer} \lstinline$0$\use{0} could be passed to (9). The former is
     1029chosen because the \lstinline$int$ \lstinline$0$ is \Index{less polymorphic}. For
     1030the same reason, \lstinline$int$ \lstinline$0$ is passed to \lstinline$r()$, even though it has
     1031\emph{no} declared parameter types.
    9031032
    9041033
    9051034\subsubsection{Structure and union members}
    9061035
    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©.
    908 If two or more interpretations of ©s© have members named ©m© with mutually compatible types, then the expression has an \Index{ambiguous interpretation} whose type is the composite type of the types of the members.
    909 If an interpretation of ©s© has a member ©m© whose type is not compatible with any other ©s©'s ©m©, then the expression has an interpretation with the member's type.
    910 The expression has no other interpretations.
    911 
    912 The expression ``©p->m©'' has the same interpretations as the expression ``©(*p).m©''.
     1036\semantics In the member selection expression ``\lstinline$s$.\lstinline$m$'', there shall be at
     1037least one interpretation of \lstinline$s$ whose type is a structure type or union type containing a
     1038member 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
     1040interpretation} whose type is the composite type of the types of the members. If an interpretation
     1041of \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
     1043expression has no other interpretations.
     1044
     1045The expression ``\lstinline$p->m$'' has the same interpretations as the expression
     1046``\lstinline$(*p).m$''.
    9131047
    9141048
    9151049\subsubsection{Postfix increment and decrement operators}
    9161050
    917 \predefined
    918 \begin{lstlisting}
    919 _Bool ?++( volatile _Bool * ), ?++( _Atomic volatile _Bool * );
    920 char ?++( volatile char * ), ?++( _Atomic volatile char * );
    921 signed char ?++( volatile signed char * ), ?++( _Atomic volatile signed char * );
    922 unsigned char ?++( volatile signed char * ), ?++( _Atomic volatile signed char * );
    923 short int ?++( volatile short int * ), ?++( _Atomic volatile short int * );
    924 unsigned short int ?++( volatile unsigned short int * ), ?++( _Atomic volatile unsigned short int * );
    925 int ?++( volatile int * ), ?++( _Atomic volatile int * );
    926 unsigned int ?++( volatile unsigned int * ), ?++( _Atomic volatile unsigned int * );
    927 long int ?++( volatile long int * ), ?++( _Atomic volatile long int * );
    928 long unsigned int ?++( volatile long unsigned int * ), ?++( _Atomic volatile long unsigned int * );
    929 long long int ?++( volatile long long int * ), ?++( _Atomic volatile long long int * );
    930 long long unsigned ?++( volatile long long unsigned int * ), ?++( _Atomic volatile long long unsigned int * );
    931 float ?++( volatile float * ), ?++( _Atomic volatile float * );
    932 double ?++( volatile double * ), ?++( _Atomic volatile double * );
    933 long double ?++( volatile long double * ), ?++( _Atomic volatile long double * );
    934 
    935 forall( otype T ) T * ?++( T * restrict volatile * ), * ?++( T * _Atomic restrict volatile * );
    936 forall( otype T ) _Atomic T * ?++( _Atomic T * restrict volatile * ), * ?++( _Atomic T * _Atomic restrict volatile * );
    937 forall( otype T ) const T * ?++( const T * restrict volatile * ), * ?++( const T * _Atomic restrict volatile * );
    938 forall( otype T ) volatile T * ?++( volatile T * restrict volatile * ), * ?++( volatile T * _Atomic restrict volatile * );
    939 forall( otype T ) restrict T * ?++( restrict T * restrict volatile * ), * ?++( restrict T * _Atomic restrict volatile * );
    940 forall( otype T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ),
     1051\begin{lstlisting}
     1052_Bool ?++( volatile _Bool * ),
     1053        ?++( _Atomic volatile _Bool * );
     1054char ?++( volatile char * ),
     1055        ?++( _Atomic volatile char * );
     1056signed char ?++( volatile signed char * ),
     1057        ?++( _Atomic volatile signed char * );
     1058unsigned char ?++( volatile signed char * ),
     1059        ?++( _Atomic volatile signed char * );
     1060short int ?++( volatile short int * ),
     1061        ?++( _Atomic volatile short int * );
     1062unsigned short int ?++( volatile unsigned short int * ),
     1063        ?++( _Atomic volatile unsigned short int * );
     1064int ?++( volatile int * ),
     1065        ?++( _Atomic volatile int * );
     1066unsigned int ?++( volatile unsigned int * ),
     1067        ?++( _Atomic volatile unsigned int * );
     1068long int ?++( volatile long int * ),
     1069        ?++( _Atomic volatile long int * );
     1070long unsigned int ?++( volatile long unsigned int * ),
     1071        ?++( _Atomic volatile long unsigned int * );
     1072long long int ?++( volatile long long int * ),
     1073        ?++( _Atomic volatile long long int * );
     1074long long unsigned ?++( volatile long long unsigned int * ),
     1075        ?++( _Atomic volatile long long unsigned int * );
     1076float ?++( volatile float * ),
     1077        ?++( _Atomic volatile float * );
     1078double ?++( volatile double * ),
     1079        ?++( _Atomic volatile double * );
     1080long double ?++( volatile long double * ),
     1081        ?++( _Atomic volatile long double * );
     1082
     1083forall( type T ) T * ?++( T * restrict volatile * ),
     1084        * ?++( T * _Atomic restrict volatile * );
     1085
     1086forall( type T ) _Atomic T * ?++( _Atomic T * restrict volatile * ),
     1087        * ?++( _Atomic T * _Atomic restrict volatile * );
     1088
     1089forall( type T ) const T * ?++( const T * restrict volatile * ),
     1090        * ?++( const T * _Atomic restrict volatile * );
     1091
     1092forall( type T ) volatile T * ?++( volatile T * restrict volatile * ),
     1093        * ?++( volatile T * _Atomic restrict volatile * );
     1094
     1095forall( type T ) restrict T * ?++( restrict T * restrict volatile * ),
     1096        * ?++( restrict T * _Atomic restrict volatile * );
     1097
     1098forall( type T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ),
    9411099        * ?++( _Atomic const T * _Atomic restrict volatile * );
    942 forall( otype T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ),
     1100
     1101forall( type T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ),
    9431102        * ?++( _Atomic restrict T * _Atomic restrict volatile * );
    944 forall( otype T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ),
     1103
     1104forall( type T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ),
    9451105        * ?++( _Atomic volatile T * _Atomic restrict volatile * );
    946 forall( otype T ) const restrict T * ?++( const restrict T * restrict volatile * ),
     1106
     1107forall( type T ) const restrict T * ?++( const restrict T * restrict volatile * ),
    9471108        * ?++( const restrict T * _Atomic restrict volatile * );
    948 forall( otype T ) const volatile T * ?++( const volatile T * restrict volatile * ),
     1109
     1110forall( type T ) const volatile T * ?++( const volatile T * restrict volatile * ),
    9491111        * ?++( const volatile T * _Atomic restrict volatile * );
    950 forall( otype T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ),
     1112
     1113forall( type T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ),
    9511114        * ?++( restrict volatile T * _Atomic restrict volatile * );
    952 forall( otype T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ),
     1115
     1116forall( type T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ),
    9531117        * ?++( _Atomic const restrict T * _Atomic restrict volatile * );
    954 forall( otype T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ),
     1118
     1119forall( type T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ),
    9551120        * ?++( _Atomic const volatile T * _Atomic restrict volatile * );
    956 forall( otype T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ),
     1121
     1122forall( type T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ),
    9571123        * ?++( _Atomic restrict volatile T * _Atomic restrict volatile * );
    958 forall( otype T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ),
     1124
     1125forall( type T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ),
    9591126        * ?++( const restrict volatile T * _Atomic restrict volatile * );
    960 forall( otype T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ),
     1127
     1128forall( type T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ),
    9611129        * ?++( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    9621130
    963 _Bool ?--( volatile _Bool * ), ?--( _Atomic volatile _Bool * );
    964 char ?--( volatile char * ), ?--( _Atomic volatile char * );
    965 signed char ?--( volatile signed char * ), ?--( _Atomic volatile signed char * );
    966 unsigned char ?--( volatile signed char * ), ?--( _Atomic volatile signed char * );
    967 short int ?--( volatile short int * ), ?--( _Atomic volatile short int * );
    968 unsigned short int ?--( volatile unsigned short int * ), ?--( _Atomic volatile unsigned short int * );
    969 int ?--( volatile int * ), ?--( _Atomic volatile int * );
    970 unsigned int ?--( volatile unsigned int * ), ?--( _Atomic volatile unsigned int * );
    971 long int ?--( volatile long int * ), ?--( _Atomic volatile long int * );
    972 long unsigned int ?--( volatile long unsigned int * ), ?--( _Atomic volatile long unsigned int * );
    973 long long int ?--( volatile long long int * ), ?--( _Atomic volatile long long int * );
    974 long long unsigned ?--( volatile long long unsigned int * ), ?--( _Atomic volatile long long unsigned int * );
    975 float ?--( volatile float * ), ?--( _Atomic volatile float * );
    976 double ?--( volatile double * ), ?--( _Atomic volatile double * );
    977 long double ?--( volatile long double * ), ?--( _Atomic volatile long double * );
    978 
    979 forall( otype T ) T * ?--( T * restrict volatile * ), * ?--( T * _Atomic restrict volatile * );
    980 forall( otype T ) _Atomic T * ?--( _Atomic T * restrict volatile * ), * ?--( _Atomic T * _Atomic restrict volatile * );
    981 forall( otype T ) const T * ?--( const T * restrict volatile * ), * ?--( const T * _Atomic restrict volatile * );
    982 forall( otype T ) volatile T * ?--( volatile T * restrict volatile * ), * ?--( volatile T * _Atomic restrict volatile * );
    983 forall( otype T ) restrict T * ?--( restrict T * restrict volatile * ), * ?--( restrict T * _Atomic restrict volatile * );
    984 forall( otype T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ),
     1131_Bool ?--( volatile _Bool * ),
     1132        ?--( _Atomic volatile _Bool * );
     1133char ?--( volatile char * ),
     1134        ?--( _Atomic volatile char * );
     1135signed char ?--( volatile signed char * ),
     1136        ?--( _Atomic volatile signed char * );
     1137unsigned char ?--( volatile signed char * ),
     1138        ?--( _Atomic volatile signed char * );
     1139short int ?--( volatile short int * ),
     1140        ?--( _Atomic volatile short int * );
     1141unsigned short int ?--( volatile unsigned short int * ),
     1142        ?--( _Atomic volatile unsigned short int * );
     1143int ?--( volatile int * ),
     1144        ?--( _Atomic volatile int * );
     1145unsigned int ?--( volatile unsigned int * ),
     1146        ?--( _Atomic volatile unsigned int * );
     1147long int ?--( volatile long int * ),
     1148        ?--( _Atomic volatile long int * );
     1149long unsigned int ?--( volatile long unsigned int * ),
     1150        ?--( _Atomic volatile long unsigned int * );
     1151long long int ?--( volatile long long int * ),
     1152        ?--( _Atomic volatile long long int * );
     1153long long unsigned ?--( volatile long long unsigned int * ),
     1154        ?--( _Atomic volatile long long unsigned int * );
     1155float ?--( volatile float * ),
     1156        ?--( _Atomic volatile float * );
     1157double ?--( volatile double * ),
     1158        ?--( _Atomic volatile double * );
     1159long double ?--( volatile long double * ),
     1160        ?--( _Atomic volatile long double * );
     1161
     1162forall( type T ) T * ?--( T * restrict volatile * ),
     1163        * ?--( T * _Atomic restrict volatile * );
     1164
     1165forall( type T ) _Atomic T * ?--( _Atomic T * restrict volatile * ),
     1166        * ?--( _Atomic T * _Atomic restrict volatile * );
     1167
     1168forall( type T ) const T * ?--( const T * restrict volatile * ),
     1169        * ?--( const T * _Atomic restrict volatile * );
     1170
     1171forall( type T ) volatile T * ?--( volatile T * restrict volatile * ),
     1172        * ?--( volatile T * _Atomic restrict volatile * );
     1173
     1174forall( type T ) restrict T * ?--( restrict T * restrict volatile * ),
     1175        * ?--( restrict T * _Atomic restrict volatile * );
     1176
     1177forall( type T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ),
    9851178        * ?--( _Atomic const T * _Atomic restrict volatile * );
    986 forall( otype T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ),
     1179
     1180forall( type T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ),
    9871181        * ?--( _Atomic restrict T * _Atomic restrict volatile * );
    988 forall( otype T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ),
     1182
     1183forall( type T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ),
    9891184        * ?--( _Atomic volatile T * _Atomic restrict volatile * );
    990 forall( otype T ) const restrict T * ?--( const restrict T * restrict volatile * ),
     1185
     1186forall( type T ) const restrict T * ?--( const restrict T * restrict volatile * ),
    9911187        * ?--( const restrict T * _Atomic restrict volatile * );
    992 forall( otype T ) const volatile T * ?--( const volatile T * restrict volatile * ),
     1188
     1189forall( type T ) const volatile T * ?--( const volatile T * restrict volatile * ),
    9931190        * ?--( const volatile T * _Atomic restrict volatile * );
    994 forall( otype T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ),
     1191
     1192forall( type T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ),
    9951193        * ?--( restrict volatile T * _Atomic restrict volatile * );
    996 forall( otype T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ),
     1194
     1195forall( type T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ),
    9971196        * ?--( _Atomic const restrict T * _Atomic restrict volatile * );
    998 forall( otype T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ),
     1197
     1198forall( type T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ),
    9991199        * ?--( _Atomic const volatile T * _Atomic restrict volatile * );
    1000 forall( otype T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ),
     1200
     1201forall( type T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ),
    10011202        * ?--( _Atomic restrict volatile T * _Atomic restrict volatile * );
    1002 forall( otype T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ),
     1203
     1204forall( type T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ),
    10031205        * ?--( const restrict volatile T * _Atomic restrict volatile * );
    1004 forall( otype T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ),
     1206
     1207forall( type T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ),
    10051208        * ?--( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    10061209\end{lstlisting}
    1007 For every extended integer type ©X© there exist
     1210For every extended integer type \lstinline$X$ there exist
    10081211% Don't use predefined: keep this out of prelude.cf.
    10091212\begin{lstlisting}
     
    10111214  ?--( volatile X * ), ?--( _Atomic volatile X * );
    10121215\end{lstlisting}
    1013 For every complete enumerated type ©E© there exist
     1216For every complete enumerated type \lstinline$E$ there exist
    10141217% Don't use predefined: keep this out of prelude.cf.
    10151218\begin{lstlisting}
     
    10191222
    10201223\begin{rationale}
    1021 Note that ``©++©'' and ``©--©'' are rewritten as function calls that are given a pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald has pointed out, this forces the modified operand of such expressions to be an lvalue.
    1022 This partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues.
    1023 \end{rationale}
    1024 
    1025 \begin{rationale}
    1026 In C, a semantic rule requires that pointer operands of increment and decrement be pointers to object types.
    1027 Hence, ©void *© objects cannot be incremented.
    1028 In \CFA, the restriction follows from the use of a ©type© parameter in the predefined function definitions, as opposed to ©dtype©, since only object types can be inferred arguments corresponding to the type parameter ©T©.
     1224Note that ``\lstinline$++$'' and ``\lstinline$--$'' are rewritten as function calls that are given a
     1225pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald
     1226has pointed out, this forces the modified operand of such expressions to be an lvalue. This
     1227partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues.
     1228\end{rationale}
     1229
     1230\begin{rationale}
     1231In C, a semantic rule requires that pointer operands of increment and decrement be pointers to
     1232object types. Hence, \lstinline$void *$ objects cannot be incremented. In \CFA, the restriction
     1233follows from the use of a \lstinline$type$ parameter in the predefined function definitions, as
     1234opposed to \lstinline$dtype$, since only object types can be inferred arguments corresponding to the
     1235type parameter \lstinline$T$.
    10291236\end{rationale}
    10301237
    10311238\semantics
    1032 First, each interpretation of the operand of an increment or decrement expression is considered separately.
    1033 For each interpretation that is a bit-field or is declared with the \Indexc{register}\index{storage-class specifier}, the expression has one valid interpretation, with the type of the operand, and the expression is ambiguous if the operand is.
    1034 
    1035 For the remaining interpretations, the expression is rewritten, and the interpretations of the expression are the interpretations of the corresponding function call.
    1036 Finally, 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.
     1239First, each interpretation of the operand of an increment or decrement expression is considered
     1240separately. 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
     1242expression has one valid interpretation, with the type of the operand, and the expression is
     1243ambiguous if the operand is.
     1244
     1245For the remaining interpretations, the expression is rewritten, and the interpretations of the
     1246expression are the interpretations of the corresponding function call. Finally, all interpretations
     1247of the expression produced for the different interpretations of the operand are combined to produce
     1248the interpretations of the expression as a whole; where interpretations have compatible result
     1249types, the best interpretations are selected in the manner described for function call expressions.
    10371250
    10381251\examples
     
    10441257\end{lstlisting}
    10451258\begin{sloppypar}
    1046 Since ©&(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 *©.
    1048 Note that there is no conversion that adds an ©_Atomic© qualifier, so the ©_Atomic volatile short int© overloading does not provide a valid interpretation.
     1259Since \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$
     1263qualifier, so the \lstinline$_Atomic volatile short int$ overloading does not provide a valid
     1264interpretation.
    10491265\end{sloppypar}
    10501266
    1051 There is no safe conversion from ©const short int *© to ©volatile short int *©, and no ©?++© function that accepts a ©const *© parameter, so ©cs++© has no valid interpretations.
    1052 
    1053 The best valid interpretation of ©as++© calls the ©short ?++© function with the ©_Atomic volatile short int *© parameter, applying a safe conversion to add the ©volatile© qualifier.
    1054 \begin{lstlisting}
    1055 char * const restrict volatile * restrict volatile pqpc;
    1056 pqpc++
    1057 char * * restrict volatile ppc;
    1058 ppc++;
    1059 \end{lstlisting}
    1060 Since ©&(pqpc)© has type ©char * const restrict volatile * restrict volatile *©, the best valid interpretation of ©pqpc++© calls the polymorphic ©?++© function with the ©const restrict volatile T * restrict volatile *© parameter, inferring ©T© to be ©char *©.
    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}
    1065 Increment and decrement expressions show up a deficiency of \CFA's type system.
    1066 There is no such thing as a pointer to a register object or bit-field\index{deficiencies!pointers to bit-fields}.
    1067 Therefore, there is no way to define a function that alters them, and hence no way to define increment and decrement functions for them.
    1068 As a result, the semantics of increment and decrement expressions must treat them specially.
    1069 This holds true for all of the operators that may modify such objects.
    1070 \end{rationale}
    1071 
    1072 \begin{rationale}
    1073 The polymorphic overloadings for pointer increment and decrement can be understood by considering increasingly complex types.
     1267There is no safe conversion from \lstinline$const short int *$ to \lstinline$volatile short int *$,
     1268and no \lstinline$?++$ function that accepts a \lstinline$const *$ parameter, so \lstinline$cs++$
     1269has no valid interpretations.
     1270
     1271The 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}
     1276char * const restrict volatile * restrict volatile pqpc; pqpc++
     1277char * * restrict volatile ppc; ppc++;
     1278\end{lstlisting}
     1279Since \lstinline$&(pqpc)$ has type \lstinline$char * const restrict volatile * restrict volatile *$,
     1280the best valid interpretation of \lstinline$pqpc++$ calls the polymorphic \lstinline$?++$ function
     1281with 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 *$,
     1286and using the safe conversions from \lstinline$T$ to \lstinline$T const restrict volatile$.
     1287\end{sloppypar}
     1288
     1289\begin{rationale}
     1290Increment and decrement expressions show up a deficiency of \CFA's type system. There is no such
     1291thing as a pointer to a register object or bit-field\index{deficiencies!pointers to bit-fields}.
     1292Therefore, there is no way to define a function that alters them, and hence no way to define
     1293increment and decrement functions for them. As a result, the semantics of increment and decrement
     1294expressions must treat them specially. This holds true for all of the operators that may modify
     1295such objects.
     1296\end{rationale}
     1297
     1298\begin{rationale}
     1299The polymorphic overloadings for pointer increment and decrement can be understood by considering
     1300increasingly complex types.
    10741301\begin{enumerate}
    10751302\item
    1076 ``©char * p; p++;©''.
    1077 The argument to ©?++© has type ©char * *©, and the result has type ©char *©.
    1078 The expression would be valid if ©?++© were declared by
    1079 \begin{lstlisting}
    1080 forall( otype T ) T * ?++( T * * );
    1081 \end{lstlisting} with ©T© inferred to be ©char©.
    1082 
    1083 \item
    1084 ``©char *restrict volatile qp; qp++©''.
    1085 The result again has type ©char *©, but the argument now has type ©char *restrict volatile *©, so it cannot be passed to the hypothetical function declared in point 1.
    1086 Hence the actual predefined function is
    1087 \begin{lstlisting}
    1088 forall( 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++©''.
    1093 The result again has type ©char *©, but no safe conversion adds an ©_Atomic© qualifier, so the function in point 2 is not applicable.
    1094 A separate overloading of ©?++© is required.
    1095 
    1096 \item
    1097 ``©char const volatile * pq; pq++©''.
    1098 Here the result has type ©char const volatile *©, so a new overloading is needed:
    1099 \begin{lstlisting}
    1100 forall( otype T ) T const volatile * ?++( T const volatile *restrict volatile * );
    1101 \end{lstlisting}
    1102 One overloading is needed for each combination of qualifiers in the pointed-at type\index{deficiencies!pointers to qualified types}.
     1303``\lstinline$char * p; p++;$''. The argument to \lstinline$?++$ has type \lstinline$char * *$, and
     1304the result has type \lstinline$char *$. The expression would be valid if \lstinline$?++$ were
     1305declared by
     1306\begin{lstlisting}
     1307forall( type T ) T * ?++( T * * );
     1308\end{lstlisting}
     1309with \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
     1313the argument now has type \lstinline$char *restrict volatile *$, so it cannot be passed to the
     1314hypothetical function declared in point 1. Hence the actual predefined function is
     1315\begin{lstlisting}
     1316forall( type T ) T * ?++( T * restrict volatile * );
     1317\end{lstlisting}
     1318which 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
     1320constant pointers cannot be incremented.)
     1321
     1322\item
     1323``\lstinline$char *_Atomic ap; ap++$''. The result again has type \lstinline$char *$, but no safe
     1324conversion adds an \lstinline$_Atomic$ qualifier, so the function in point 2 is not applicable. A
     1325separate 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}
     1331forall( type T ) T const volatile * ?++( T const volatile *restrict volatile * );
     1332\end{lstlisting}
     1333One overloading is needed for each combination of qualifiers in the pointed-at
     1334type\index{deficiencies!pointers to qualified types}.
    11031335 
    11041336\item
    1105 ``©float *restrict * prp; prp++©''.
    1106 The ©restrict© qualifier is handled just like ©const© and ©volatile© in the previous case:
    1107 \begin{lstlisting}
    1108 forall( otype T ) T restrict * ?++( T restrict *restrict volatile * );
    1109 \end{lstlisting} with ©T© inferred to be ©float *©.
    1110 This looks odd, because {\c11} contains a constraint that requires restrict-qualified types to be pointer-to-object types, and ©T© is not syntactically a pointer type. \CFA loosens the constraint.
     1337``\lstinline$float *restrict * prp; prp++$''. The \lstinline$restrict$ qualifier is handled just
     1338like \lstinline$const$ and \lstinline$volatile$ in the previous case:
     1339\begin{lstlisting}
     1340forall( type T ) T restrict * ?++( T restrict *restrict volatile * );
     1341\end{lstlisting}
     1342with \lstinline$T$ inferred to be \lstinline$float *$. This looks odd, because {\c11} contains a
     1343constraint that requires restrict-qualified types to be pointer-to-object types, and \lstinline$T$
     1344is not syntactically a pointer type. \CFA loosens the constraint.
    11111345\end{enumerate}
    11121346\end{rationale}
     
    11161350
    11171351\semantics
    1118 A compound literal has one interpretation, with the type given by the \nonterm{type-name} of the compound literal.
     1352A compound literal has one interpretation, with the type given by the \nonterm{type-name} of the
     1353compound literal.
    11191354
    11201355
     
    11231358\begin{syntax}
    11241359\lhs{unary-expression}
    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 ©&© ©*© ©+© ©-© ©~© ©!©
     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$!$
    11331367\end{syntax}
    11341368
    11351369\rewriterules
    11361370\begin{lstlisting}
    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{--?}§
     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{--?}@
    11441378\end{lstlisting}
    11451379
     
    11471381\subsubsection{Prefix increment and decrement operators}
    11481382
    1149 \predefined
    1150 \begin{lstlisting}
    1151 _Bool ++?( volatile _Bool * ), ++?( _Atomic volatile _Bool * );
    1152 char ++?( volatile char * ), ++?( _Atomic volatile char * );
    1153 signed char ++?( volatile signed char * ), ++?( _Atomic volatile signed char * );
    1154 unsigned char ++?( volatile signed char * ), ++?( _Atomic volatile signed char * );
    1155 short int ++?( volatile short int * ), ++?( _Atomic volatile short int * );
    1156 unsigned short int ++?( volatile unsigned short int * ), ++?( _Atomic volatile unsigned short int * );
    1157 int ++?( volatile int * ), ++?( _Atomic volatile int * );
    1158 unsigned int ++?( volatile unsigned int * ), ++?( _Atomic volatile unsigned int * );
    1159 long int ++?( volatile long int * ), ++?( _Atomic volatile long int * );
    1160 long unsigned int ++?( volatile long unsigned int * ), ++?( _Atomic volatile long unsigned int * );
    1161 long long int ++?( volatile long long int * ), ++?( _Atomic volatile long long int * );
    1162 long long unsigned ++?( volatile long long unsigned int * ), ++?( _Atomic volatile long long unsigned int * );
    1163 float ++?( volatile float * ), ++?( _Atomic volatile float * );
    1164 double ++?( volatile double * ), ++?( _Atomic volatile double * );
    1165 long double ++?( volatile long double * ), ++?( _Atomic volatile long double * );
    1166 
    1167 forall( otype T ) T * ++?( T * restrict volatile * ), * ++?( T * _Atomic restrict volatile * );
    1168 forall( otype T ) _Atomic T * ++?( _Atomic T * restrict volatile * ), * ++?( _Atomic T * _Atomic restrict volatile * );
    1169 forall( otype T ) const T * ++?( const T * restrict volatile * ), * ++?( const T * _Atomic restrict volatile * );
    1170 forall( otype T ) volatile T * ++?( volatile T * restrict volatile * ), * ++?( volatile T * _Atomic restrict volatile * );
    1171 forall( otype T ) restrict T * ++?( restrict T * restrict volatile * ), * ++?( restrict T * _Atomic restrict volatile * );
    1172 forall( otype T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ),
     1383\begin{lstlisting}
     1384_Bool ++?( volatile _Bool * ),
     1385        ++?( _Atomic volatile _Bool * );
     1386char ++?( volatile char * ),
     1387        ++?( _Atomic volatile char * );
     1388signed char ++?( volatile signed char * ),
     1389        ++?( _Atomic volatile signed char * );
     1390unsigned char ++?( volatile signed char * ),
     1391        ++?( _Atomic volatile signed char * );
     1392short int ++?( volatile short int * ),
     1393        ++?( _Atomic volatile short int * );
     1394unsigned short int ++?( volatile unsigned short int * ),
     1395        ++?( _Atomic volatile unsigned short int * );
     1396int ++?( volatile int * ),
     1397        ++?( _Atomic volatile int * );
     1398unsigned int ++?( volatile unsigned int * ),
     1399        ++?( _Atomic volatile unsigned int * );
     1400long int ++?( volatile long int * ),
     1401        ++?( _Atomic volatile long int * );
     1402long unsigned int ++?( volatile long unsigned int * ),
     1403        ++?( _Atomic volatile long unsigned int * );
     1404long long int ++?( volatile long long int * ),
     1405        ++?( _Atomic volatile long long int * );
     1406long long unsigned ++?( volatile long long unsigned int * ),
     1407        ++?( _Atomic volatile long long unsigned int * );
     1408float ++?( volatile float * ),
     1409        ++?( _Atomic volatile float * );
     1410double ++?( volatile double * ),
     1411        ++?( _Atomic volatile double * );
     1412long double ++?( volatile long double * ),
     1413        ++?( _Atomic volatile long double * );
     1414
     1415forall( type T ) T * ++?( T * restrict volatile * ),
     1416        * ++?( T * _Atomic restrict volatile * );
     1417
     1418forall( type T ) _Atomic T * ++?( _Atomic T * restrict volatile * ),
     1419        * ++?( _Atomic T * _Atomic restrict volatile * );
     1420
     1421forall( type T ) const T * ++?( const T * restrict volatile * ),
     1422        * ++?( const T * _Atomic restrict volatile * );
     1423
     1424forall( type T ) volatile T * ++?( volatile T * restrict volatile * ),
     1425        * ++?( volatile T * _Atomic restrict volatile * );
     1426
     1427forall( type T ) restrict T * ++?( restrict T * restrict volatile * ),
     1428        * ++?( restrict T * _Atomic restrict volatile * );
     1429
     1430forall( type T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ),
    11731431        * ++?( _Atomic const T * _Atomic restrict volatile * );
    1174 forall( otype T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ),
     1432
     1433forall( type T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ),
    11751434        * ++?( _Atomic volatile T * _Atomic restrict volatile * );
    1176 forall( otype T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ),
     1435
     1436forall( type T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ),
    11771437        * ++?( _Atomic restrict T * _Atomic restrict volatile * );
    1178 forall( otype T ) const volatile T * ++?( const volatile T * restrict volatile * ),
     1438
     1439forall( type T ) const volatile T * ++?( const volatile T * restrict volatile * ),
    11791440        * ++?( const volatile T * _Atomic restrict volatile * );
    1180 forall( otype T ) const restrict T * ++?( const restrict T * restrict volatile * ),
     1441
     1442forall( type T ) const restrict T * ++?( const restrict T * restrict volatile * ),
    11811443        * ++?( const restrict T * _Atomic restrict volatile * );
    1182 forall( otype T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ),
     1444
     1445forall( type T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ),
    11831446        * ++?( restrict volatile T * _Atomic restrict volatile * );
    1184 forall( otype T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ),
     1447
     1448forall( type T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ),
    11851449        * ++?( _Atomic const volatile T * _Atomic restrict volatile * );
    1186 forall( otype T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ),
     1450
     1451forall( type T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ),
    11871452        * ++?( _Atomic const restrict T * _Atomic restrict volatile * );
    1188 forall( otype T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ),
     1453
     1454forall( type T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ),
    11891455        * ++?( _Atomic restrict volatile T * _Atomic restrict volatile * );
    1190 forall( otype T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ),
     1456
     1457forall( type T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ),
    11911458        * ++?( const restrict volatile T * _Atomic restrict volatile * );
    1192 forall( otype T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ),
     1459
     1460forall( type T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ),
    11931461        * ++?( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    11941462
    1195 _Bool --?( volatile _Bool * ), --?( _Atomic volatile _Bool * );
    1196 char --?( volatile char * ), --?( _Atomic volatile char * );
    1197 signed char --?( volatile signed char * ), --?( _Atomic volatile signed char * );
    1198 unsigned char --?( volatile signed char * ), --?( _Atomic volatile signed char * );
    1199 short int --?( volatile short int * ), --?( _Atomic volatile short int * );
    1200 unsigned short int --?( volatile unsigned short int * ), --?( _Atomic volatile unsigned short int * );
    1201 int --?( volatile int * ), --?( _Atomic volatile int * );
    1202 unsigned int --?( volatile unsigned int * ), --?( _Atomic volatile unsigned int * );
    1203 long int --?( volatile long int * ), --?( _Atomic volatile long int * );
    1204 long unsigned int --?( volatile long unsigned int * ), --?( _Atomic volatile long unsigned int * );
    1205 long long int --?( volatile long long int * ), --?( _Atomic volatile long long int * );
    1206 long long unsigned --?( volatile long long unsigned int * ), --?( _Atomic volatile long long unsigned int * );
    1207 float --?( volatile float * ), --?( _Atomic volatile float * );
    1208 double --?( volatile double * ), --?( _Atomic volatile double * );
    1209 long double --?( volatile long double * ), --?( _Atomic volatile long double * );
    1210 
    1211 forall( otype T ) T * --?( T * restrict volatile * ), * --?( T * _Atomic restrict volatile * );
    1212 forall( otype T ) _Atomic T * --?( _Atomic T * restrict volatile * ), * --?( _Atomic T * _Atomic restrict volatile * );
    1213 forall( otype T ) const T * --?( const T * restrict volatile * ), * --?( const T * _Atomic restrict volatile * );
    1214 forall( otype T ) volatile T * --?( volatile T * restrict volatile * ), * --?( volatile T * _Atomic restrict volatile * );
    1215 forall( otype T ) restrict T * --?( restrict T * restrict volatile * ), * --?( restrict T * _Atomic restrict volatile * );
    1216 forall( otype T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ),
     1463_Bool --?( volatile _Bool * ),
     1464        --?( _Atomic volatile _Bool * );
     1465char --?( volatile char * ),
     1466        --?( _Atomic volatile char * );
     1467signed char --?( volatile signed char * ),
     1468        --?( _Atomic volatile signed char * );
     1469unsigned char --?( volatile signed char * ),
     1470        --?( _Atomic volatile signed char * );
     1471short int --?( volatile short int * ),
     1472        --?( _Atomic volatile short int * );
     1473unsigned short int --?( volatile unsigned short int * ),
     1474        --?( _Atomic volatile unsigned short int * );
     1475int --?( volatile int * ),
     1476        --?( _Atomic volatile int * );
     1477unsigned int --?( volatile unsigned int * ),
     1478        --?( _Atomic volatile unsigned int * );
     1479long int --?( volatile long int * ),
     1480        --?( _Atomic volatile long int * );
     1481long unsigned int --?( volatile long unsigned int * ),
     1482        --?( _Atomic volatile long unsigned int * );
     1483long long int --?( volatile long long int * ),
     1484        --?( _Atomic volatile long long int * );
     1485long long unsigned --?( volatile long long unsigned int * ),
     1486        --?( _Atomic volatile long long unsigned int * );
     1487float --?( volatile float * ),
     1488        --?( _Atomic volatile float * );
     1489double --?( volatile double * ),
     1490        --?( _Atomic volatile double * );
     1491long double --?( volatile long double * ),
     1492        --?( _Atomic volatile long double * );
     1493
     1494forall( type T ) T * --?( T * restrict volatile * ),
     1495        * --?( T * _Atomic restrict volatile * );
     1496
     1497forall( type T ) _Atomic T * --?( _Atomic T * restrict volatile * ),
     1498        * --?( _Atomic T * _Atomic restrict volatile * );
     1499
     1500forall( type T ) const T * --?( const T * restrict volatile * ),
     1501        * --?( const T * _Atomic restrict volatile * );
     1502
     1503forall( type T ) volatile T * --?( volatile T * restrict volatile * ),
     1504        * --?( volatile T * _Atomic restrict volatile * );
     1505
     1506forall( type T ) restrict T * --?( restrict T * restrict volatile * ),
     1507        * --?( restrict T * _Atomic restrict volatile * );
     1508
     1509forall( type T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ),
    12171510        * --?( _Atomic const T * _Atomic restrict volatile * );
    1218 forall( otype T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ),
     1511
     1512forall( type T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ),
    12191513        * --?( _Atomic volatile T * _Atomic restrict volatile * );
    1220 forall( otype T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ),
     1514
     1515forall( type T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ),
    12211516        * --?( _Atomic restrict T * _Atomic restrict volatile * );
    1222 forall( otype T ) const volatile T * --?( const volatile T * restrict volatile * ),
     1517
     1518forall( type T ) const volatile T * --?( const volatile T * restrict volatile * ),
    12231519        * --?( const volatile T * _Atomic restrict volatile * );
    1224 forall( otype T ) const restrict T * --?( const restrict T * restrict volatile * ),
     1520
     1521forall( type T ) const restrict T * --?( const restrict T * restrict volatile * ),
    12251522        * --?( const restrict T * _Atomic restrict volatile * );
    1226 forall( otype T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ),
     1523
     1524forall( type T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ),
    12271525        * --?( restrict volatile T * _Atomic restrict volatile * );
    1228 forall( otype T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ),
     1526
     1527forall( type T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ),
    12291528        * --?( _Atomic const volatile T * _Atomic restrict volatile * );
    1230 forall( otype T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ),
     1529
     1530forall( type T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ),
    12311531        * --?( _Atomic const restrict T * _Atomic restrict volatile * );
    1232 forall( otype T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ),
     1532
     1533forall( type T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ),
    12331534        * --?( _Atomic restrict volatile T * _Atomic restrict volatile * );
    1234 forall( otype T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ),
     1535
     1536forall( type T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ),
    12351537        * --?( const restrict volatile T * _Atomic restrict volatile * );
    1236 forall( otype T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ),
     1538
     1539forall( type T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ),
    12371540        * --?( _Atomic const restrict volatile T * _Atomic restrict volatile * );
    12381541\end{lstlisting}
    1239 For every extended integer type ©X© there exist
     1542For every extended integer type \lstinline$X$ there exist
    12401543% Don't use predefined: keep this out of prelude.cf.
    12411544\begin{lstlisting}
     
    12451548        --?( _Atomic volatile X * );
    12461549\end{lstlisting}
    1247 For every complete enumerated type ©E© there exist
     1550For every complete enumerated type \lstinline$E$ there exist
    12481551% Don't use predefined: keep this out of prelude.cf.
    12491552\begin{lstlisting}
     
    12551558
    12561559\semantics
    1257 The interpretations of prefix increment and decrement expressions are determined in the same way as the interpretations of postfix increment and decrement expressions.
     1560The interpretations of prefix increment and decrement expressions are
     1561determined in the same way as the interpretations of postfix increment and
     1562decrement expressions.
    12581563
    12591564
    12601565\subsubsection{Address and indirection operators}
    12611566
    1262 \predefined
    1263 \begin{lstlisting}
    1264 forall( otype T ) lvalue T *?( T * );
    1265 forall( otype T ) _Atomic lvalue T *?( _Atomic T * );
    1266 forall( otype T ) const lvalue T *?( const T * );
    1267 forall( otype T ) volatile lvalue T *?( volatile T * );
    1268 forall( otype T ) restrict lvalue T *?( restrict T * );
    1269 forall( otype T ) _Atomic const lvalue T *?( _Atomic const T * );
    1270 forall( otype T ) _Atomic volatile lvalue T *?( _Atomic volatile T * );
    1271 forall( otype T ) _Atomic restrict lvalue T *?( _Atomic restrict T * );
    1272 forall( otype T ) const volatile lvalue T *?( const volatile T * );
    1273 forall( otype T ) const restrict lvalue T *?( const restrict T * );
    1274 forall( otype T ) restrict volatile lvalue T *?( restrict volatile T * );
    1275 forall( otype T ) _Atomic const volatile lvalue T *?( _Atomic const volatile T * );
    1276 forall( otype T ) _Atomic const restrict lvalue T *?( _Atomic const restrict T * );
    1277 forall( otype T ) _Atomic restrict volatile lvalue T *?( _Atomic restrict volatile T * );
    1278 forall( otype T ) const restrict volatile lvalue T *?( const restrict volatile T * );
    1279 forall( otype T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * );
     1567\begin{lstlisting}
     1568forall( type T ) lvalue T *?( T * );
     1569forall( type T ) _Atomic lvalue T *?( _Atomic T * );
     1570forall( type T ) const lvalue T *?( const T * );
     1571forall( type T ) volatile lvalue T *?( volatile T * );
     1572forall( type T ) restrict lvalue T *?( restrict T * );
     1573forall( type T ) _Atomic const lvalue T *?( _Atomic const T * );
     1574forall( type T ) _Atomic volatile lvalue T *?( _Atomic volatile T * );
     1575forall( type T ) _Atomic restrict lvalue T *?( _Atomic restrict T * );
     1576forall( type T ) const volatile lvalue T *?( const volatile T * );
     1577forall( type T ) const restrict lvalue T *?( const restrict T * );
     1578forall( type T ) restrict volatile lvalue T *?( restrict volatile T * );
     1579forall( type T ) _Atomic const volatile lvalue T *?( _Atomic const volatile T * );
     1580forall( type T ) _Atomic const restrict lvalue T *?( _Atomic const restrict T * );
     1581forall( type T ) _Atomic restrict volatile lvalue T *?( _Atomic restrict volatile T * );
     1582forall( type T ) const restrict volatile lvalue T *?( const restrict volatile T * );
     1583forall( type T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * );
     1584
    12801585forall( ftype FT ) FT *?( FT * );
    12811586\end{lstlisting}
    12821587
    12831588\constraints
    1284 The operand of the unary ``©&©'' operator shall have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous.
     1589The operand of the unary ``\lstinline$&$'' operator shall have exactly one
     1590\Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous.
    12851591
    12861592\semantics
    1287 The ``©&©'' expression has one interpretation which is of type ©T *©, where ©T© is the type of the operand.
    1288 
    1289 The interpretations of an indirection expression are the interpretations of the corresponding function call.
     1593The ``\lstinline$&$'' expression has one interpretation which is of type \lstinline$T *$, where
     1594\lstinline$T$ is the type of the operand.
     1595
     1596The interpretations of an indirection expression are the interpretations of the corresponding
     1597function call.
    12901598
    12911599
    12921600\subsubsection{Unary arithmetic operators}
    12931601
    1294 \predefined
    1295 \begin{lstlisting}
    1296 int     +?( int ), -?( int ), ~?( int );
    1297 unsigned int +?( unsigned int ), -?( unsigned int ), ~?( unsigned int );
    1298 long int +?( long int ), -?( long int ), ~?( long int );
    1299 long unsigned int +?( long unsigned int ), -?( long unsigned int ), ~?( long unsigned int );
    1300 long long int +?( long long int ), -?( long long int ), ~?( long long int );
    1301 long long unsigned int +?( long long unsigned int ), -?( long long unsigned int ), ~?( long long unsigned int );
    1302 float +?( float ), -?( float );
    1303 double +?( double ), -?( double );
    1304 long 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 );
    1308 int !?( 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 );
     1602\begin{lstlisting}
     1603int
     1604        +?( int ),
     1605        -?( int ),
     1606        ~?( int );
     1607unsigned int
     1608        +?( unsigned int ),
     1609        -?( unsigned int ),
     1610         ~?( unsigned int );
     1611long int
     1612        +?( long int ),
     1613        -?( long int ),
     1614        ~?( long int );
     1615long unsigned int
     1616        +?( long unsigned int ),
     1617        -?( long unsigned int ),
     1618        ~?( long unsigned int );
     1619long long int
     1620        +?( long long int ),
     1621        -?( long long int ),
     1622        ~?( long long int );
     1623long long unsigned int
     1624        +?( long long unsigned int ),
     1625        -?( long long unsigned int ),
     1626        ~?( long long unsigned int );
     1627float
     1628        +?( float ),
     1629        -?( float );
     1630double
     1631        +?( double ),
     1632        -?( double );
     1633long 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
     1646int !?( 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
    13121659forall( dtype DT ) int !?( const restrict volatile DT * );
    13131660forall( dtype DT ) int !?( _Atomic const restrict volatile DT * );
    13141661forall( ftype FT ) int !?( FT * );
    13151662\end{lstlisting}
    1316 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     1663For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     1664rank of \lstinline$int$ there exist
    13171665% Don't use predefined: keep this out of prelude.cf.
    13181666\begin{lstlisting}
     
    13221670
    13231671\semantics
    1324 The interpretations of a unary arithmetic expression are the interpretations of the corresponding function call.
     1672The interpretations of a unary arithmetic expression are the interpretations of the corresponding
     1673function call.
    13251674
    13261675\examples
    13271676\begin{lstlisting}
    13281677long int li;
    1329 void eat_double( double );§\use{eat_double}§
    1330 eat_double(-li ); // => eat_double( -?( li ) );
    1331 \end{lstlisting}
    1332 The valid interpretations of ``©-li©'' (assuming no extended integer types exist) are
     1678void eat_double( double );@\use{eat_double}@
     1679
     1680eat_double(-li ); // @\rewrite@ eat_double( -?( li ) );
     1681\end{lstlisting}
     1682The valid interpretations of ``\lstinline$-li$'' (assuming no extended integer types exist) are
    13331683\begin{center}
    1334 \begin{tabular}{llc} interpretation & result type & expression conversion cost \\
     1684\begin{tabular}{llc}
     1685interpretation & result type & expression conversion cost \\
    13351686\hline
    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) \\
     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) \\
    13481699\end{tabular}
    13491700\end{center}
    1350 The valid interpretations of the ©eat_double© call, with the cost of the argument conversion and the cost of the entire expression, are
     1701The valid interpretations of the \lstinline$eat_double$ call, with the cost of the argument
     1702conversion and the cost of the entire expression, are
    13511703\begin{center}
    1352 \begin{tabular}{lcc} interpretation & argument cost & expression cost \\
     1704\begin{tabular}{lcc}
     1705interpretation & argument cost & expression cost \\
    13531706\hline
    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) \\
     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) \\
    13661719\end{tabular}
    13671720\end{center}
    1368 Each has result type ©void©, so the best must be selected.
    1369 The interpretations involving unsafe conversions are discarded.
    1370 The remainder have equal expression conversion costs, so the ``highest argument conversion cost'' rule is invoked, and the chosen interpretation is ©eat_double( (double)-?(li) )©.
    1371 
    1372 
    1373 \subsubsection[The sizeof and \_Alignof operators]{The \lstinline@sizeof@ and \lstinline@_Alignof@ operators}
     1721Each has result type \lstinline$void$, so the best must be selected. The interpretations involving
     1722unsafe 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}
    13741728
    13751729\constraints
    1376 The operand of ©sizeof© or ©_Alignof© shall not be ©type©, ©dtype©, or ©ftype©.
    1377 
    1378 When the ©sizeof©\use{sizeof} operator is applied to an expression, the expression shall have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous. \semantics A ©sizeof© or ©_Alignof© expression has one interpretation, of type ©size_t©.
    1379 
    1380 When ©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.
    1382 When the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the expression is not a constant expression.
    1383 
    1384 When ©_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.
    1386 When 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}
    1389 otype Pair = struct { int first, second; };
     1730The operand of \lstinline$sizeof$ or \lstinline$_Alignof$ shall not be \lstinline$type$,
     1731\lstinline$dtype$, or \lstinline$ftype$.
     1732
     1733When the \lstinline$sizeof$\use{sizeof} operator is applied to an expression, the expression shall
     1734have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall
     1735be unambiguous. \semantics A \lstinline$sizeof$ or \lstinline$_Alignof$ expression has one
     1736interpretation, of type \lstinline$size_t$.
     1737
     1738When \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
     1740the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the
     1741expression is not a constant expression.
     1742
     1743When \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
     1745operand. When the operand is an opaque type or an inferred type parameter\index{inferred
     1746parameter}, the expression is not a constant expression.
     1747\begin{rationale}
     1748\begin{lstlisting}
     1749type Pair = struct { int first, second; };
    13901750size_t p_size = sizeof(Pair);           // constant expression
    1391 extern otype Rational;§\use{Rational}§
     1751
     1752extern type Rational;@\use{Rational}@
    13921753size_t c_size = sizeof(Rational);       // non-constant expression
     1754
    13931755forall(type T) T f(T p1, T p2) {
    13941756        size_t t_size = sizeof(T);              // non-constant expression
     
    13961758}
    13971759\end{lstlisting}
    1398 ``©sizeof Rational©'', although not statically known, is fixed.
    1399 Within ©f()©, ``©sizeof(T)©'' is fixed for each call of ©f()©, but may vary from call to call.
     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.
    14001762\end{rationale}
    14011763
     
    14061768\lhs{cast-expression}
    14071769\rhs \nonterm{unary-expression}
    1408 \rhs ©(© \nonterm{type-name} ©)© \nonterm{cast-expression}
     1770\rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \nonterm{cast-expression}
    14091771\end{syntax}
    14101772
    14111773\constraints
    1412 The \nonterm{type-name} in a \nonterm{cast-expression} shall not be ©type©, ©dtype©, or ©ftype©.
     1774The \nonterm{type-name} in a \nonterm{cast-expression} shall not be \lstinline$type$,
     1775\lstinline$dtype$, or \lstinline$ftype$.
    14131776
    14141777\semantics
    14151778
    1416 In 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;
    1418 otherwise, ©e© shall have some interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast expression is the cast of the interpretation that can be converted at the lowest cost.
    1419 The 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}
    1422 Casts can be used to eliminate ambiguity in expressions by selecting interpretations of subexpressions, and to specialize polymorphic functions and values.
     1779In 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
     1781the only interpretation of the cast expression; otherwise, \lstinline$e$ shall have some
     1782interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast
     1783expression is the cast of the interpretation that can be converted at the lowest cost. The cast
     1784expression's interpretation is ambiguous\index{ambiguous interpretation} if more than one
     1785interpretation can be converted at the lowest cost or if the selected interpretation is ambiguous.
     1786
     1787\begin{rationale}
     1788Casts can be used to eliminate ambiguity in expressions by selecting interpretations of
     1789subexpressions, and to specialize polymorphic functions and values.
    14231790\end{rationale}
    14241791
     
    14291796\lhs{multiplicative-expression}
    14301797\rhs \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}
     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}
    14341801\end{syntax}
    14351802
    14361803\rewriterules
    14371804\begin{lstlisting}
    1438 a * b => ?*?( a, b )§\use{?*?}§
    1439 a / b => ?/?( a, b )§\use{?/?}§
    1440 a % b => ?%?( a, b )§\use{?%?}§
    1441 \end{lstlisting}
    1442 
    1443 \predefined
    1444 \begin{lstlisting}
    1445 int?*?( int, int ), ?/?( int, int ), ?%?( int, int );
    1446 unsigned int?*?( unsigned int, unsigned int ), ?/?( unsigned int, unsigned int ), ?%?( unsigned int, unsigned int );
    1447 long int?*?( long int, long int ), ?/?( long, long ), ?%?( long, long );
     1805a * b @\rewrite@ ?*?( a, b )@\use{?*?}@
     1806a / b @\rewrite@ ?/?( a, b )@\use{?/?}@
     1807a % b @\rewrite@ ?%?( a, b )@\use{?%?}@
     1808\end{lstlisting}
     1809
     1810\begin{lstlisting}
     1811int?*?( int, int ),
     1812        ?/?( int, int ),
     1813        ?%?( int, int );
     1814unsigned int?*?( unsigned int, unsigned int ),
     1815        ?/?( unsigned int, unsigned int ),
     1816        ?%?( unsigned int, unsigned int );
     1817long int?*?( long int, long int ),
     1818        ?/?( long, long ),
     1819        ?%?( long, long );
    14481820long unsigned int?*?( long unsigned int, long unsigned int ),
    1449         ?/?( long unsigned int, long unsigned int ), ?%?( long unsigned int, long unsigned int );
    1450 long long int?*?( long long int, long long int ), ?/?( long long int, long long int ),
     1821        ?/?( long unsigned int, long unsigned int ),
     1822        ?%?( long unsigned int, long unsigned int );
     1823long long int?*?( long long int, long long int ),
     1824        ?/?( long long int, long long int ),
    14511825        ?%?( long long int, long long int );
    14521826long long unsigned int ?*?( long long unsigned int, long long unsigned int ),
    1453         ?/?( long long unsigned int, long long unsigned int ), ?%?( long long unsigned int, long long unsigned int );
    1454 float?*?( float, float ), ?/?( float, float );
    1455 double?*?( double, double ), ?/?( double, double );
    1456 long 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}
    1467 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     1827        ?/?( long long unsigned int, long long unsigned int ),
     1828        ?%?( long long unsigned int, long long unsigned int );
     1829float?*?( float, float ),
     1830        ?/?( float, float );
     1831double?*?( double, double ),
     1832        ?/?( double, double );
     1833long 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}
     1854For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     1855rank of \lstinline$int$ there exist
    14681856% Don't use predefined: keep this out of prelude.cf.
    14691857\begin{lstlisting}
     
    14721860
    14731861\begin{rationale}
    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.
     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
     1864operations on arguments from mixed type domains. \CFA's predefined operators match that pattern.
    14751865\end{rationale}
    14761866
    14771867\semantics
    1478 The interpretations of multiplicative expressions are the interpretations of the corresponding function call.
     1868The interpretations of multiplicative expressions are the interpretations of the corresponding
     1869function call.
    14791870
    14801871\examples
     
    14821873int i;
    14831874long li;
    1484 void eat_double( double );§\use{eat_double}§
     1875void eat_double( double );@\use{eat_double}@
    14851876eat_double( li % i );
    14861877\end{lstlisting}
    1487 ``©li % i©'' is rewritten as ``©?%?(li, i )©''.
    1488 The valid interpretations of ©?%?(li, i )©, the cost\index{conversion cost} of converting their arguments, and the cost of converting the result to ©double© (assuming no extended integer types are present ) are
     1878``\lstinline$li % i$'' is rewritten as ``\lstinline$?%?(li, i )$''. The valid interpretations
     1879of \lstinline$?%?(li, i )$, the cost\index{conversion cost} of converting their arguments, and
     1880the cost of converting the result to \lstinline$double$ (assuming no extended integer types are
     1881present ) are
    14891882\begin{center}
    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     \\
     1883\begin{tabular}{lcc}
     1884interpretation & 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     \\
    14981892\end{tabular}
    14991893\end{center}
    1500 The best interpretation of ©eat_double( li, i )© is ©eat_double( (double)?%?(li, (long)i ))©, which has no unsafe conversions and the lowest total cost.
    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©.
    1504 If ©s© is a ©short int©, ``©s *s©'' does not have type ©short int©;
    1505 it is treated as ``©( (int)s ) * ( (int)s )©'', and has type ©int©. \CFA matches that pattern;
    1506 it does not predefine ``©short ?*?( short, short )©''.
    1507 
    1508 These ``missing'' operators limit polymorphism.
    1509 Consider
    1510 \begin{lstlisting}
    1511 forall( otype T | T ?*?( T, T ) ) T square( T );
     1894The best interpretation of \lstinline$eat_double( li, i )$ is
     1895\lstinline$eat_double( (double)?%?(li, (long)i ))$, which has no unsafe conversions and the
     1896lowest total cost.
     1897
     1898\begin{rationale}
     1899{\c11} defines most arithmetic operations to apply an \Index{integer promotion} to any argument that
     1900belongs 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$;
     1902it is treated as ``\lstinline$( (int)s ) * ( (int)s )$'', and has type \lstinline$int$. \CFA matches
     1903that pattern; it does not predefine ``\lstinline$short ?*?( short, short )$''.
     1904
     1905These ``missing'' operators limit polymorphism. Consider
     1906\begin{lstlisting}
     1907forall( type T | T ?*?( T, T ) ) T square( T );
    15121908short s;
    15131909square( s );
    15141910\end{lstlisting}
    1515 Since \CFA does not define a multiplication operator for ©short int©, ©square( s )© is treated as ©square( (int)s )©, and the result has type ©int©.
    1516 This is mildly surprising, but it follows the {\c11} operator pattern.
     1911Since \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.
    15171914
    15181915A more troubling example is
    15191916\begin{lstlisting}
    1520 forall( otype T | ?*?( T, T ) ) T product( T[], int n );
     1917forall( type T | ?*?( T, T ) ) T product( T[], int n );
    15211918short sa[5];
    15221919product( sa, 5);
    15231920\end{lstlisting}
    1524 This has no valid interpretations, because \CFA has no conversion from ``array of ©short int©'' to ``array of ©int©''.
    1525 The alternatives in such situations include
     1921This 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
     1923include
    15261924\begin{itemize}
    15271925\item
    1528 Defining monomorphic overloadings of ©product© for ©short© and the other ``small'' types.
    1529 \item
    1530 Defining ``©short ?*?( short, short )©'' within the scope containing the call to ©product©.
    1531 \item
    1532 Defining ©product© to take as an argument a conversion function from the ``small'' type to the operator's argument type.
     1926Defining monomorphic overloadings of \lstinline$product$ for \lstinline$short$ and the other
     1927``small'' types.
     1928\item
     1929Defining ``\lstinline$short ?*?( short, short )$'' within the scope containing the call to
     1930\lstinline$product$.
     1931\item
     1932Defining \lstinline$product$ to take as an argument a conversion function from the ``small'' type to
     1933the operator's argument type.
    15331934\end{itemize}
    15341935\end{rationale}
     
    15401941\lhs{additive-expression}
    15411942\rhs \nonterm{multiplicative-expression}
    1542 \rhs \nonterm{additive-expression} ©+© \nonterm{multiplicative-expression}
    1543 \rhs \nonterm{additive-expression} ©-© \nonterm{multiplicative-expression}
     1943\rhs \nonterm{additive-expression} \lstinline$+$ \nonterm{multiplicative-expression}
     1944\rhs \nonterm{additive-expression} \lstinline$-$ \nonterm{multiplicative-expression}
    15441945\end{syntax}
    15451946
    15461947\rewriterules
    15471948\begin{lstlisting}
    1548 a + b => ?+?( a, b )§\use{?+?}§
    1549 a - b => ?-?( a, b )§\use{?-?}§
    1550 \end{lstlisting}
    1551 
    1552 \predefined
    1553 \begin{lstlisting}
    1554 int?+?( int, int ), ?-?( int, int );
    1555 unsigned int?+?( unsigned int, unsigned int ), ?-?( unsigned int, unsigned int );
    1556 long int?+?( long int, long int ), ?-?( long int, long int );
    1557 long unsigned int?+?( long unsigned int, long unsigned int ), ?-?( long unsigned int, long unsigned int );
    1558 long long int?+?( long long int, long long int ), ?-?( long long int, long long int );
     1949a + b @\rewrite@ ?+?( a, b )@\use{?+?}@
     1950a - b @\rewrite@ ?-?( a, b )@\use{?-?}@
     1951\end{lstlisting}
     1952
     1953\begin{lstlisting}
     1954int?+?( int, int ),
     1955        ?-?( int, int );
     1956unsigned int?+?( unsigned int, unsigned int ),
     1957        ?-?( unsigned int, unsigned int );
     1958long int?+?( long int, long int ),
     1959        ?-?( long int, long int );
     1960long unsigned int?+?( long unsigned int, long unsigned int ),
     1961        ?-?( long unsigned int, long unsigned int );
     1962long long int?+?( long long int, long long int ),
     1963        ?-?( long long int, long long int );
    15591964long long unsigned int ?+?( long long unsigned int, long long unsigned int ),
    15601965        ?-?( long long unsigned int, long long unsigned int );
    1561 float?+?( float, float ), ?-?( float, float );
    1562 double?+?( double, double ), ?-?( double, double );
    1563 long 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 
    1574 forall( otype T ) T * ?+?( T *, ptrdiff_t ), * ?+?( ptrdiff_t, T * ), * ?-?( T *, ptrdiff_t );
    1575 forall( otype T ) _Atomic T * ?+?( _Atomic T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic T * ),
     1966float?+?( float, float ),
     1967        ?-?( float, float );
     1968double?+?( double, double ),
     1969        ?-?( double, double );
     1970long 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
     1991forall( type T ) T
     1992        * ?+?( T *, ptrdiff_t ),
     1993        * ?+?( ptrdiff_t, T * ),
     1994        * ?-?( T *, ptrdiff_t );
     1995
     1996forall( type T ) _Atomic T
     1997        * ?+?( _Atomic T *, ptrdiff_t ),
     1998        * ?+?( ptrdiff_t, _Atomic T * ),
    15761999        * ?-?( _Atomic T *, ptrdiff_t );
    1577 forall( otype T ) const T * ?+?( const T *, ptrdiff_t ), * ?+?( ptrdiff_t, const T * ),
     2000
     2001forall( type T ) const T
     2002        * ?+?( const T *, ptrdiff_t ),
     2003        * ?+?( ptrdiff_t, const T * ),
    15782004        * ?-?( const T *, ptrdiff_t );
    1579 forall( otype T ) restrict T * ?+?( restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, restrict T * ),
     2005
     2006forall( type T ) restrict T
     2007        * ?+?( restrict T *, ptrdiff_t ),
     2008        * ?+?( ptrdiff_t, restrict T * ),
    15802009        * ?-?( restrict T *, ptrdiff_t );
    1581 forall( otype T ) volatile T * ?+?( volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, volatile T * ),
     2010
     2011forall( type T ) volatile T
     2012        * ?+?( volatile T *, ptrdiff_t ),
     2013        * ?+?( ptrdiff_t, volatile T * ),
    15822014        * ?-?( volatile T *, ptrdiff_t );
    1583 forall( otype T ) _Atomic const T * ?+?( _Atomic const T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic const T * ),
     2015
     2016forall( type T ) _Atomic const T
     2017        * ?+?( _Atomic const T *, ptrdiff_t ),
     2018        * ?+?( ptrdiff_t, _Atomic const T * ),
    15842019        * ?-?( _Atomic const T *, ptrdiff_t );
    1585 forall( otype T ) _Atomic restrict T * ?+?( _Atomic restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic restrict T * ),
     2020
     2021forall( type T ) _Atomic restrict T
     2022        * ?+?( _Atomic restrict T *, ptrdiff_t ),
     2023        * ?+?( ptrdiff_t, _Atomic restrict T * ),
    15862024        * ?-?( _Atomic restrict T *, ptrdiff_t );
    1587 forall( otype T ) _Atomic volatile T * ?+?( _Atomic volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, _Atomic volatile T * ),
     2025
     2026forall( type T ) _Atomic volatile T
     2027        * ?+?( _Atomic volatile T *, ptrdiff_t ),
     2028        * ?+?( ptrdiff_t, _Atomic volatile T * ),
    15882029        * ?-?( _Atomic volatile T *, ptrdiff_t );
    1589 forall( otype T ) const restrict T * ?+?( const restrict T *, ptrdiff_t ), * ?+?( ptrdiff_t, const restrict T * ),
     2030
     2031forall( type T ) const restrict T
     2032        * ?+?( const restrict T *, ptrdiff_t ),
     2033        * ?+?( ptrdiff_t, const restrict T * ),
    15902034        * ?-?( const restrict T *, ptrdiff_t );
    1591 forall( otype T ) const volatile T * ?+?( const volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, const volatile T * ),
     2035
     2036forall( type T ) const volatile T
     2037        * ?+?( const volatile T *, ptrdiff_t ),
     2038        * ?+?( ptrdiff_t, const volatile T * ),
    15922039        * ?-?( const volatile T *, ptrdiff_t );
    1593 forall( otype T ) restrict volatile T * ?+?( restrict volatile T *, ptrdiff_t ), * ?+?( ptrdiff_t, restrict volatile T * ),
     2040
     2041forall( type T ) restrict volatile T
     2042        * ?+?( restrict volatile T *, ptrdiff_t ),
     2043        * ?+?( ptrdiff_t, restrict volatile T * ),
    15942044        * ?-?( restrict volatile T *, ptrdiff_t );
    1595 forall( otype T ) _Atomic const restrict T * ?+?( _Atomic const restrict T *, ptrdiff_t ),
     2045
     2046forall( type T ) _Atomic const restrict T
     2047        * ?+?( _Atomic const restrict T *, ptrdiff_t ),
    15962048        * ?+?( ptrdiff_t, _Atomic const restrict T * ),
    15972049        * ?-?( _Atomic const restrict T *, ptrdiff_t );
    1598 forall( otype T ) ptrdiff_t
     2050
     2051forall( type T ) ptrdiff_t
    15992052        * ?-?( const restrict volatile T *, const restrict volatile T * ),
    16002053        * ?-?( _Atomic const restrict volatile T *, _Atomic const restrict volatile T * );
    16012054\end{lstlisting}
    1602 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     2055For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2056rank of \lstinline$int$ there exist
    16032057% Don't use predefined: keep this out of prelude.cf.
    16042058\begin{lstlisting}
     
    16072061
    16082062\semantics
    1609 The 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.
    1613 It 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.
    1614 The {\c11} standard uses ©size_t© in several cases where a library function takes an argument that is used as a subscript, but ©size_t© is unsuitable here because it is an unsigned type.
     2063The interpretations of additive expressions are the interpretations of the corresponding function
     2064calls.
     2065
     2066\begin{rationale}
     2067\lstinline$ptrdiff_t$ is an implementation-defined identifier defined in \lstinline$<stddef.h>$ that
     2068is synonymous with a signed integral type that is large enough to hold the difference between two
     2069pointers. It seems reasonable to use it for pointer addition as well. (This is technically a
     2070difference between \CFA and C, which only specifies that pointer addition uses an \emph{integral}
     2071argument.) Hence it is also used for subscripting, which is defined in terms of pointer addition.
     2072The {\c11} standard uses \lstinline$size_t$ in several cases where a library function takes an
     2073argument that is used as a subscript, but \lstinline$size_t$ is unsuitable here because it is an
     2074unsigned type.
    16152075\end{rationale}
    16162076
     
    16212081\lhs{shift-expression}
    16222082\rhs \nonterm{additive-expression}
    1623 \rhs \nonterm{shift-expression} ©<<© \nonterm{additive-expression}
    1624 \rhs \nonterm{shift-expression} ©>>© \nonterm{additive-expression}
     2083\rhs \nonterm{shift-expression} \lstinline$<<$ \nonterm{additive-expression}
     2084\rhs \nonterm{shift-expression} \lstinline$>>$ \nonterm{additive-expression}
    16252085\end{syntax}
    16262086
    1627 \rewriterules
    1628 \begin{lstlisting}
    1629 a << b => ?<<?( a, b )§\use{?<<?}§
    1630 a >> b => ?>>?( a, b )§\use{?>>?}§
    1631 \end{lstlisting}
    1632 
    1633 \predefined
    1634 \begin{lstlisting}
    1635 int ?<<?( int, int ), ?>>?( int, int );
    1636 unsigned int ?<<?( unsigned int, int ), ?>>?( unsigned int, int );
    1637 long int ?<<?( long int, int ), ?>>?( long int, int );
    1638 long unsigned int ?<<?( long unsigned int, int ), ?>>?( long unsigned int, int );
    1639 long long int ?<<?( long long int, int ), ?>>?( long long int, int );
    1640 long long unsigned int ?<<?( long long unsigned int, int ), ?>>?( long long unsigned int, int);
    1641 \end{lstlisting}
    1642 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     2087\rewriterules \use{?>>?}%use{?<<?}
     2088\begin{lstlisting}
     2089a << b @\rewrite@ ?<<?( a, b )
     2090a >> b @\rewrite@ ?>>?( a, b )
     2091\end{lstlisting}
     2092
     2093\begin{lstlisting}
     2094int ?<<?( int, int ),
     2095         ?>>?( int, int );
     2096unsigned int ?<<?( unsigned int, int ),
     2097         ?>>?( unsigned int, int );
     2098long int ?<<?( long int, int ),
     2099         ?>>?( long int, int );
     2100long unsigned int ?<<?( long unsigned int, int ),
     2101         ?>>?( long unsigned int, int );
     2102long long int ?<<?( long long int, int ),
     2103         ?>>?( long long int, int );
     2104long long unsigned int ?<<?( long long unsigned int, int ),
     2105         ?>>?( long long unsigned int, int);
     2106\end{lstlisting}
     2107For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2108rank of \lstinline$int$ there exist
    16432109% Don't use predefined: keep this out of prelude.cf.
    16442110\begin{lstlisting}
     
    16472113
    16482114\begin{rationale}
    1649 The bitwise shift operators break the usual pattern: they do not convert both operands to a common type.
    1650 The right operand only undergoes \Index{integer promotion}.
     2115The bitwise shift operators break the usual pattern: they do not convert both operands to a common
     2116type. The right operand only undergoes \Index{integer promotion}.
    16512117\end{rationale}
    16522118
    16532119\semantics
    1654 The interpretations of a bitwise shift expression are the interpretations of the corresponding function calls.
     2120The interpretations of a bitwise shift expression are the interpretations of the corresponding
     2121function calls.
    16552122
    16562123
     
    16602127\lhs{relational-expression}
    16612128\rhs \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}
     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}
    16662133\end{syntax}
    16672134
    1668 \rewriterules
    1669 \begin{lstlisting}
    1670 a < b => ?<?( a, b )§\use{?<?}§
    1671 a > b => ?>?( a, b )§\use{?>?}§
    1672 a <= b => ?<=?( a, b )§\use{?<=?}§
    1673 a >= b => ?>=?( a, b )§\use{?>=?}§
    1674 \end{lstlisting}
    1675 
    1676 \predefined
    1677 \begin{lstlisting}
    1678 int ?<?( int, int ), ?<=?( int, int ),
    1679         ?>?( int, int ), ?>=?( int, int );
    1680 int ?<?( unsigned int, unsigned int ), ?<=?( unsigned int, unsigned int ),
    1681         ?>?( unsigned int, unsigned int ), ?>=?( unsigned int, unsigned int );
    1682 int ?<?( long int, long int ), ?<=?( long int, long int ),
    1683         ?>?( long int, long int ), ?>=?( long int, long int );
    1684 int ?<?( long unsigned int, long unsigned ), ?<=?( long unsigned int, long unsigned ),
    1685         ?>?( long unsigned int, long unsigned ), ?>=?( long unsigned int, long unsigned );
    1686 int ?<?( 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 );
    1688 int ?<?( 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 );
    1690 int ?<?( float, float ), ?<=?( float, float ),
    1691         ?>?( float, float ), ?>=?( float, float );
    1692 int ?<?( double, double ), ?<=?( double, double ),
    1693         ?>?( double, double ), ?>=?( double, double );
    1694 int ?<?( long double, long double ), ?<=?( long double, long double ),
    1695         ?>?( long double, long double ), ?>=?( long double, long double );
    1696 forall( dtype DT ) int ?<?( const restrict volatile DT *, const restrict volatile DT * ),
     2135\rewriterules\use{?>?}\use{?>=?}%use{?<?}%use{?<=?}
     2136\begin{lstlisting}
     2137a < b @\rewrite@ ?<?( a, b )
     2138a > b @\rewrite@ ?>?( a, b )
     2139a <= b @\rewrite@ ?<=?( a, b )
     2140a >= b @\rewrite@ ?>=?( a, b )
     2141\end{lstlisting}
     2142
     2143\begin{lstlisting}
     2144int ?<?( int, int ),
     2145        ?<=?( int, int ),
     2146        ?>?( int, int ),
     2147        ?>=?( int, int );
     2148int ?<?( unsigned int, unsigned int ),
     2149        ?<=?( unsigned int, unsigned int ),
     2150        ?>?( unsigned int, unsigned int ),
     2151        ?>=?( unsigned int, unsigned int );
     2152int ?<?( long int, long int ),
     2153        ?<=?( long int, long int ),
     2154        ?>?( long int, long int ),
     2155        ?>=?( long int, long int );
     2156int ?<?( long unsigned int, long unsigned ),
     2157        ?<=?( long unsigned int, long unsigned ),
     2158        ?>?( long unsigned int, long unsigned ),
     2159        ?>=?( long unsigned int, long unsigned );
     2160int ?<?( 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 );
     2164int ?<?( 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 );
     2168int ?<?( float, float ),
     2169        ?<=?( float, float ),
     2170        ?>?( float, float ),
     2171        ?>=?( float, float );
     2172int ?<?( double, double ),
     2173        ?<=?( double, double ),
     2174        ?>?( double, double ),
     2175        ?>=?( double, double );
     2176int ?<?( long double, long double ),
     2177        ?<=?( long double, long double ),
     2178        ?>?( long double, long double ),
     2179        ?>=?( long double, long double );
     2180
     2181forall( dtype DT ) int
     2182        ?<?( const restrict volatile DT *, const restrict volatile DT * ),
    16972183        ?<?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
    16982184        ?<=?( const restrict volatile DT *, const restrict volatile DT * ),
     
    17032189        ?>=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * );
    17042190\end{lstlisting}
    1705 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     2191For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2192rank of \lstinline$int$ there exist
    17062193% Don't use predefined: keep this out of prelude.cf.
    17072194\begin{lstlisting}
     
    17132200
    17142201\semantics
    1715 The interpretations of a relational expression are the interpretations of the corresponding function call.
     2202The interpretations of a relational expression are the interpretations of the corresponding function
     2203call.
    17162204
    17172205
     
    17212209\lhs{equality-expression}
    17222210\rhs \nonterm{relational-expression}
    1723 \rhs \nonterm{equality-expression} ©==© \nonterm{relational-expression}
    1724 \rhs \nonterm{equality-expression} ©!=© \nonterm{relational-expression}
     2211\rhs \nonterm{equality-expression} \lstinline$==$ \nonterm{relational-expression}
     2212\rhs \nonterm{equality-expression} \lstinline$!=$ \nonterm{relational-expression}
    17252213\end{syntax}
    17262214
    17272215\rewriterules
    17282216\begin{lstlisting}
    1729 a == b => ?==?( a, b )§\use{?==?}§
    1730 a != b => ?!=?( a, b )§\use{?"!=?}§
    1731 \end{lstlisting}
    1732 
    1733 \predefined
    1734 \begin{lstlisting}
    1735 int ?==?( 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 );
     2217a == b @\rewrite@ ?==?( a, b )@\use{?==?}@
     2218a != b @\rewrite@ ?!=?( a, b )@\use{?"!=?}@
     2219\end{lstlisting}
     2220
     2221\begin{lstlisting}
     2222int ?==?( 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
    17532259forall( dtype DT ) int
    17542260        ?==?( const restrict volatile DT *, const restrict volatile DT * ),
     
    17752281        ?==?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * ),
    17762282        ?!=?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * );
     2283
    17772284forall( ftype FT ) int
    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}
    1783 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     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}
     2294For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2295rank of \lstinline$int$ there exist
    17842296% Don't use predefined: keep this out of prelude.cf.
    17852297\begin{lstlisting}
     
    17892301
    17902302\begin{rationale}
    1791 The polymorphic equality operations come in three styles: comparisons between pointers of compatible types, between pointers to ©void© and pointers to object types or incomplete types, and between the \Index{null pointer} constant and pointers to any type.
    1792 In the last case, a special constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA type system.
     2303The polymorphic equality operations come in three styles: comparisons between pointers of compatible
     2304types, between pointers to \lstinline$void$ and pointers to object types or incomplete types, and
     2305between the \Index{null pointer} constant and pointers to any type. In the last case, a special
     2306constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA
     2307type system.
    17932308\end{rationale}
    17942309
    17952310\semantics
    1796 The interpretations of an equality expression are the interpretations of the corresponding function call.
     2311The interpretations of an equality expression are the interpretations of the corresponding function
     2312call.
    17972313
    17982314\begin{sloppypar}
    1799 The result of an equality comparison between two pointers to predefined functions or predefined values is implementation-defined.
     2315The result of an equality comparison between two pointers to predefined functions or predefined
     2316values is implementation-defined.
    18002317\end{sloppypar}
    18012318\begin{rationale}
    1802 The implementation-defined status of equality comparisons allows implementations to use one library routine to implement many predefined functions.
    1803 These optimization are particularly important when the predefined functions are polymorphic, as is the case for most pointer operations
     2319The implementation-defined status of equality comparisons allows implementations to use one library
     2320routine to implement many predefined functions. These optimization are particularly important when
     2321the predefined functions are polymorphic, as is the case for most pointer operations
    18042322\end{rationale}
    18052323
     
    18102328\lhs{AND-expression}
    18112329\rhs \nonterm{equality-expression}
    1812 \rhs \nonterm{AND-expression} ©&© \nonterm{equality-expression}
     2330\rhs \nonterm{AND-expression} \lstinline$&$ \nonterm{equality-expression}
    18132331\end{syntax}
    18142332
    18152333\rewriterules
    18162334\begin{lstlisting}
    1817 a & b => ?&?( a, b )§\use{?&?}§
    1818 \end{lstlisting}
    1819 
    1820 \predefined
     2335a & b @\rewrite@ ?&?( a, b )@\use{?&?}@
     2336\end{lstlisting}
     2337
    18212338\begin{lstlisting}
    18222339int ?&?( int, int );
     
    18272344long long unsigned int ?&?( long long unsigned int, long long unsigned int );
    18282345\end{lstlisting}
    1829 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     2346For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2347rank of \lstinline$int$ there exist
    18302348% Don't use predefined: keep this out of prelude.cf.
    18312349\begin{lstlisting}
     
    18342352
    18352353\semantics
    1836 The interpretations of a bitwise AND expression are the interpretations of the corresponding function call.
     2354The interpretations of a bitwise AND expression are the interpretations of the corresponding
     2355function call.
    18372356
    18382357
     
    18422361\lhs{exclusive-OR-expression}
    18432362\rhs \nonterm{AND-expression}
    1844 \rhs \nonterm{exclusive-OR-expression} ©^© \nonterm{AND-expression}
     2363\rhs \nonterm{exclusive-OR-expression} \lstinline$^$ \nonterm{AND-expression}
    18452364\end{syntax}
    18462365
    18472366\rewriterules
    18482367\begin{lstlisting}
    1849 a ^ b => ?^?( a, b )§\use{?^?}§
    1850 \end{lstlisting}
    1851 
    1852 \predefined
     2368a ^ b @\rewrite@ ?^?( a, b )@\use{?^?}@
     2369\end{lstlisting}
     2370
    18532371\begin{lstlisting}
    18542372int ?^?( int, int );
     
    18592377long long unsigned int ?^?( long long unsigned int, long long unsigned int );
    18602378\end{lstlisting}
    1861 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     2379For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2380rank of \lstinline$int$ there exist
    18622381% Don't use predefined: keep this out of prelude.cf.
    18632382\begin{lstlisting}
     
    18662385
    18672386\semantics
    1868 The interpretations of a bitwise exclusive OR expression are the interpretations of the corresponding function call.
     2387The interpretations of a bitwise exclusive OR expression are the interpretations of the
     2388corresponding function call.
    18692389
    18702390
     
    18742394\lhs{inclusive-OR-expression}
    18752395\rhs \nonterm{exclusive-OR-expression}
    1876 \rhs \nonterm{inclusive-OR-expression} ©|© \nonterm{exclusive-OR-expression}
     2396\rhs \nonterm{inclusive-OR-expression} \lstinline$|$ \nonterm{exclusive-OR-expression}
    18772397\end{syntax}
    18782398
    1879 \rewriterules
    1880 \begin{lstlisting}
    1881 a | b => ?|?( a, b )§\use{?"|?}§
    1882 \end{lstlisting}
    1883 
    1884 \predefined
     2399\rewriterules\use{?"|?}
     2400\begin{lstlisting}
     2401a | b @\rewrite@ ?|?( a, b )
     2402\end{lstlisting}
     2403
    18852404\begin{lstlisting}
    18862405int ?|?( int, int );
     
    18912410long long unsigned int ?|?( long long unsigned int, long long unsigned int );
    18922411\end{lstlisting}
    1893 For every extended integer type ©X© with \Index{integer conversion rank} greater than the rank of ©int© there exist
     2412For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2413rank of \lstinline$int$ there exist
    18942414% Don't use predefined: keep this out of prelude.cf.
    18952415\begin{lstlisting}
     
    18982418
    18992419\semantics
    1900 The interpretations of a bitwise inclusive OR expression are the interpretations of the corresponding function call.
     2420The interpretations of a bitwise inclusive OR expression are the interpretations of the
     2421corresponding function call.
    19012422
    19022423
     
    19062427\lhs{logical-AND-expression}
    19072428\rhs \nonterm{inclusive-OR-expression}
    1908 \rhs \nonterm{logical-AND-expression} ©&&© \nonterm{inclusive-OR-expression}
     2429\rhs \nonterm{logical-AND-expression} \lstinline$&&$ \nonterm{inclusive-OR-expression}
    19092430\end{syntax}
    19102431
    1911 \semantics The operands of the expression ``©a && b©'' are treated as ``©(int)((a)!=0)©'' and ``©(int)((b)!=0)©'', which shall both be unambiguous.
    1912 The expression has only one interpretation, which is of type ©int©.
    1913 \begin{rationale}
    1914 When the operands of a logical expression are values of built-in types, and ``©!=©'' has not been redefined for those types, the compiler can optimize away the function calls.
    1915 
    1916 A common C idiom omits comparisons to ©0© in the controlling expressions of loops and ©if© statements.
    1917 For instance, the loop below iterates as long as ©rp© points at a ©Rational© value that is non-zero.
    1918 
    1919 \begin{lstlisting}
    1920 extern otype Rational;§\use{Rational}§
    1921 extern const Rational 0;§\use{0}§
     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
     2434unambiguous. The expression has only one interpretation, which is of type \lstinline$int$.
     2435\begin{rationale}
     2436When the operands of a logical expression are values of built-in types, and ``\lstinline$!=$'' has
     2437not been redefined for those types, the compiler can optimize away the function calls.
     2438
     2439A 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
     2441at a \lstinline$Rational$ value that is non-zero.
     2442
     2443\begin{lstlisting}
     2444extern type Rational;@\use{Rational}@
     2445extern const Rational 0;@\use{0}@
    19222446extern int ?!=?( Rational, Rational );
    19232447Rational *rp;
     2448
    19242449while ( rp && *rp ) { ... }
    19252450\end{lstlisting}
    1926 The logical expression calls the ©Rational© inequality operator, passing it ©*rp© and the ©Rational 0©, and getting a 1 or 0 as a result.
    1927 In contrast, {\CC} would apply a programmer-defined ©Rational©-to-©int© conversion to ©*rp© in the equivalent situation.
    1928 The conversion to ©int© would produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was not written with this situation in mind.
     2451The logical expression calls the \lstinline$Rational$ inequality operator, passing
     2452it \lstinline$*rp$ and the \lstinline$Rational 0$, and getting a 1 or 0 as a result. In
     2453contrast, {\CC} would apply a programmer-defined \lstinline$Rational$-to-\lstinline$int$
     2454conversion to \lstinline$*rp$ in the equivalent situation. The conversion to \lstinline$int$ would
     2455produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was
     2456not written with this situation in mind.
    19292457\end{rationale}
    19302458
     
    19352463\lhs{logical-OR-expression}
    19362464\rhs \nonterm{logical-AND-expression}
    1937 \rhs \nonterm{logical-OR-expression} ©||© \nonterm{logical-AND-expression}
     2465\rhs \nonterm{logical-OR-expression} \lstinline$||$ \nonterm{logical-AND-expression}
    19382466\end{syntax}
    19392467
    19402468\semantics
    19412469
    1942 The operands of the expression ``©a || b©'' are treated as ``©(int)((a)!=0)©'' and ``©(int)((b))!=0)©'', which shall both be unambiguous.
    1943 The expression has only one interpretation, which is of type ©int©.
     2470The operands of the expression ``\lstinline$a || b$'' are treated as ``\lstinline$(int)((a)!=0)$''
     2471and ``\lstinline$(int)((b))!=0)$'', which shall both be unambiguous. The expression has only one
     2472interpretation, which is of type \lstinline$int$.
    19442473
    19452474
     
    19492478\lhs{conditional-expression}
    19502479\rhs \nonterm{logical-OR-expression}
    1951 \rhs \nonterm{logical-OR-expression} ©?© \nonterm{expression}
    1952          ©:© \nonterm{conditional-expression}
     2480\rhs \nonterm{logical-OR-expression} \lstinline$?$ \nonterm{expression}
     2481         \lstinline$:$ \nonterm{conditional-expression}
    19532482\end{syntax}
    19542483
    19552484\semantics
    1956 In the conditional expression\use{?:} ``©a?b:c©'', if the second and third operands both have an interpretation with ©void© type, then the expression has an interpretation with type ©void©, equivalent to
     2485In the conditional expression\use{?:} ``\lstinline$a?b:c$'', if the second and
     2486third operands both have an interpretation with \lstinline$void$ type, then the expression has an
     2487interpretation with type \lstinline$void$, equivalent to
    19572488\begin{lstlisting}
    19582489( int)(( a)!=0) ? ( void)( b) : ( void)( c)
    19592490\end{lstlisting}
    19602491
    1961 If the second and third operands both have interpretations with non-©void© types, the expression is treated as if it were the call ``©cond((a)!=0, b, c)©'', with ©cond© declared as
    1962 \begin{lstlisting}
    1963 forall( otype T ) T cond( int, T, T );
    1964 forall( dtype D ) void * cond( int, D *, void * ), * cond( int, void *, D * );
    1965 forall( dtype D ) _atomic void * cond(
    1966         int, _Atomic D *, _Atomic void * ), * cond( int, _Atomic void *, _Atomic D * );
    1967 forall( dtype D ) const void * cond(
    1968         int, const D *, const void * ), * cond( int, const void *, const D * );
    1969 forall( dtype D ) restrict void * cond(
    1970         int, restrict D *, restrict void * ), * cond( int, restrict void *, restrict D * );
    1971 forall( dtype D ) volatile void * cond(
    1972         int, volatile D *, volatile void * ), * cond( int, volatile void *, volatile D * );
    1973 forall( dtype D ) _Atomic const void * cond(
    1974         int, _Atomic const D *, _Atomic const void * ), * cond( int, _Atomic const void *, _Atomic const D * );
    1975 forall( dtype D ) _Atomic restrict void * cond(
    1976         int, _Atomic restrict D *, _Atomic restrict void * ), * cond( int, _Atomic restrict void *, _Atomic restrict D * );
    1977 forall( dtype D ) _Atomic volatile void * cond(
    1978         int, _Atomic volatile D *, _Atomic volatile void * ), * cond( int, _Atomic volatile void *, _Atomic volatile D * );
    1979 forall( dtype D ) const restrict void * cond(
    1980         int, const restrict D *, const restrict void * ), * cond( int, const restrict void *, const restrict D * );
    1981 forall( dtype D ) const volatile void * cond(
    1982         int, const volatile D *, const volatile void * ), * cond( int, const volatile void *, const volatile D * );
    1983 forall( dtype D ) restrict volatile void * cond(
    1984         int, restrict volatile D *, restrict volatile void * ), * cond( int, restrict volatile void *, restrict volatile D * );
    1985 forall( dtype D ) _Atomic const restrict void * cond(
    1986         int, _Atomic const restrict D *, _Atomic const restrict void * ),
     2492If the second and third operands both have interpretations with non-\lstinline$void$ types, the
     2493expression is treated as if it were the call ``\lstinline$cond((a)!=0, b, c)$'',
     2494with \lstinline$cond$ declared as
     2495\begin{lstlisting}
     2496forall( type T ) T cond( int, T, T );
     2497 
     2498forall( dtype D ) void
     2499        * cond( int, D *, void * ),
     2500        * cond( int, void *, D * );
     2501       
     2502forall( dtype D ) _atomic void
     2503        * cond( int, _Atomic D *, _Atomic void * ),
     2504        * cond( int, _Atomic void *, _Atomic D * );
     2505
     2506forall( dtype D ) const void
     2507        * cond( int, const D *, const void * ),
     2508        * cond( int, const void *, const D * );
     2509
     2510forall( dtype D ) restrict void
     2511        * cond( int, restrict D *, restrict void * ),
     2512        * cond( int, restrict void *, restrict D * );
     2513
     2514forall( dtype D ) volatile void
     2515        * cond( int, volatile D *, volatile void * ),
     2516        * cond( int, volatile void *, volatile D * );
     2517
     2518forall( dtype D ) _Atomic const void
     2519        * cond( int, _Atomic const D *, _Atomic const void * ),
     2520        * cond( int, _Atomic const void *, _Atomic const D * );
     2521
     2522forall( dtype D ) _Atomic restrict void
     2523        * cond( int, _Atomic restrict D *, _Atomic restrict void * ),
     2524        * cond( int, _Atomic restrict void *, _Atomic restrict D * );
     2525
     2526forall( dtype D ) _Atomic volatile void
     2527        * cond( int, _Atomic volatile D *, _Atomic volatile void * ),
     2528        * cond( int, _Atomic volatile void *, _Atomic volatile D * );
     2529
     2530forall( dtype D ) const restrict void
     2531        * cond( int, const restrict D *, const restrict void * ),
     2532        * cond( int, const restrict void *, const restrict D * );
     2533
     2534forall( dtype D ) const volatile void
     2535        * cond( int, const volatile D *, const volatile void * ),
     2536        * cond( int, const volatile void *, const volatile D * );
     2537
     2538forall( dtype D ) restrict volatile void
     2539        * cond( int, restrict volatile D *, restrict volatile void * ),
     2540        * cond( int, restrict volatile void *, restrict volatile D * );
     2541
     2542forall( dtype D ) _Atomic const restrict void
     2543        * cond( int, _Atomic const restrict D *, _Atomic const restrict void * ),
    19872544        * cond( int, _Atomic const restrict void *, _Atomic const restrict D * );
    1988 forall( dtype D ) _Atomic const volatile void * cond(
    1989         int, _Atomic const volatile D *, _Atomic const volatile void * ),
     2545
     2546forall( dtype D ) _Atomic const volatile void
     2547        * cond( int, _Atomic const volatile D *, _Atomic const volatile void * ),
    19902548        * cond( int, _Atomic const volatile void *, _Atomic const volatile D * );
    1991 forall( 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 * );
    1994 forall( 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 * );
    1997 forall( 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}
    2003 The 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.
     2549
     2550forall( 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
     2556forall( 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
     2562forall( 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}
     2570The object of the above is to apply the \Index{usual arithmetic conversion}s when the second and
     2571third operands have arithmetic type, and to combine the qualifiers of the second and third operands
     2572if they are pointers.
    20042573\end{rationale}
    20052574
     
    20112580rand() ? i : l;
    20122581\end{lstlisting}
    2013 The best interpretation infers the expression's type to be ©long© and applies the safe ©int©-to-©long© conversion to ©i©.
     2582The 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$.
    20142584
    20152585\begin{lstlisting}
     
    20182588rand() ? cip : vip;
    20192589\end{lstlisting}
    2020 The expression has type ©const volatile int *©, with safe conversions applied to the second and third operands to add ©volatile© and ©const© qualifiers, respectively.
     2590The expression has type \lstinline$const volatile int *$, with safe conversions applied to the second
     2591and third operands to add \lstinline$volatile$ and \lstinline$const$ qualifiers, respectively.
    20212592
    20222593\begin{lstlisting}
    20232594rand() ? cip : 0;
    20242595\end{lstlisting}
    2025 The expression has type ©const int *©, with a specialization conversion applied to ©0©.
     2596The expression has type \lstinline$const int *$, with a specialization conversion applied to
     2597\lstinline$0$.
    20262598
    20272599
     
    20342606         \nonterm{assignment-expression}
    20352607\lhs{assignment-operator} one of
    2036 \rhs ©=©\ \ ©*=©\ \ ©/=©\ \ ©%=©\ \ ©+=©\ \ ©-=©\ \ ©<<=©\ \ ©>>=©\ \ ©&=©\ \ ©^=©\ \ ©|=©
     2608\rhs \lstinline$=$\ \ \lstinline$*=$\ \ \lstinline$/=$\ \ \lstinline$%=$\ \ \lstinline$+=$\ \ \lstinline$-=$\ \ 
     2609         \lstinline$<<=$\ \ \lstinline$>>=$\ \ \lstinline$&=$\ \ \lstinline$^=$\ \ \lstinline$|=$
    20372610\end{syntax}
    20382611
    20392612\rewriterules
    2040 Let ``©<-©'' be any of the assignment operators.
    2041 Then
    2042 \use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?}\use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?}
    2043 \begin{lstlisting}
    2044 a <- b => ?<-?( &( a ), b )
     2613Let ``\(\leftarrow\)'' be any of the assignment operators. Then
     2614\use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?}
     2615\use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?}
     2616\begin{lstlisting}
     2617a @$\leftarrow$@ b @\rewrite@ ?@$\leftarrow$@?( &( a ), b )
    20452618\end{lstlisting}
    20462619
    20472620\semantics
    2048 Each interpretation of the left operand of an assignment expression is considered separately.
    2049 For each interpretation that is a bit-field or is declared with the ©register© storage class specifier, the expression has one valid interpretation, with the type of the left operand.
    2050 The right operand is cast to that type, and the assignment expression is ambiguous if either operand is.
    2051 For the remaining interpretations, the expression is rewritten, and the interpretations of the assignment expression are the interpretations of the corresponding function call.
    2052 Finally, 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;
    2053 where interpretations have compatible result types, the best interpretations are selected in the manner described for function call expressions.
     2621Each interpretation of the left operand of an assignment expression is considered separately. For
     2622each interpretation that is a bit-field or is declared with the \lstinline$register$ storage class
     2623specifier, the expression has one valid interpretation, with the type of the left operand. The
     2624right operand is cast to that type, and the assignment expression is ambiguous if either operand is.
     2625For the remaining interpretations, the expression is rewritten, and the interpretations of the
     2626assignment expression are the interpretations of the corresponding function call. Finally, all
     2627interpretations of the expression produced for the different interpretations of the left operand are
     2628combined to produce the interpretations of the expression as a whole; where interpretations have
     2629compatible result types, the best interpretations are selected in the manner described for function
     2630call expressions.
    20542631
    20552632
    20562633\subsubsection{Simple assignment}
    20572634
    2058 \predefined
    20592635\begin{lstlisting}
    20602636_Bool
     
    21162692        ?=?( volatile _Complex long double *, _Complex long double ),
    21172693        ?=?( _Atomic volatile _Complex long double *, _Atomic _Complex long double );
     2694
    21182695forall( ftype FT ) FT
    21192696        * ?=?( FT * volatile *, FT * ),
    21202697        * ?=?( FT * volatile *, forall( ftype F ) F * );
     2698
    21212699forall( ftype FT ) FT const
    21222700        * ?=?( FT const * volatile *, FT const * ),
    21232701        * ?=?( FT const * volatile *, forall( ftype F ) F * );
     2702
    21242703forall( ftype FT ) FT volatile
    21252704        * ?=?( FT volatile * volatile *, FT * ),
    21262705        * ?=?( FT volatile * volatile *, forall( ftype F ) F * );
     2706
    21272707forall( ftype FT ) FT const
    21282708        * ?=?( FT const volatile * volatile *, FT const * ),
    21292709        * ?=?( FT const volatile * volatile *, forall( ftype F ) F * );
     2710
    21302711forall( dtype DT ) DT
    21312712        * ?=?( DT * restrict volatile *, DT * ),
     
    21352716        * ?=?( DT * _Atomic restrict volatile *, void * ),
    21362717        * ?=?( DT * _Atomic restrict volatile *, forall( dtype D ) D * );
     2718
    21372719forall( dtype DT ) DT _Atomic
    21382720        * ?=?( _Atomic DT * restrict volatile *, DT _Atomic * ),
     
    21422724        * ?=?( _Atomic DT * _Atomic restrict volatile *, void * ),
    21432725        * ?=?( _Atomic DT * _Atomic restrict volatile *, forall( dtype D ) D * );
     2726
    21442727forall( dtype DT ) DT const
    21452728        * ?=?( DT const * restrict volatile *, DT const * ),
     
    21492732        * ?=?( DT const * _Atomic restrict volatile *, void const * ),
    21502733        * ?=?( DT const * _Atomic restrict volatile *, forall( dtype D ) D * );
     2734
    21512735forall( dtype DT ) DT restrict
    21522736        * ?=?( restrict DT * restrict volatile *, DT restrict * ),
     
    21562740        * ?=?( restrict DT * _Atomic restrict volatile *, void * ),
    21572741        * ?=?( restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * );
     2742
    21582743forall( dtype DT ) DT volatile
    21592744        * ?=?( DT volatile * restrict volatile *, DT volatile * ),
     
    21632748        * ?=?( DT volatile * _Atomic restrict volatile *, void volatile * ),
    21642749        * ?=?( DT volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
     2750
    21652751forall( dtype DT ) DT _Atomic const
    21662752        * ?=?( DT _Atomic const * restrict volatile *, DT _Atomic const * ),
     
    21702756        * ?=?( DT _Atomic const * _Atomic restrict volatile *, void const * ),
    21712757        * ?=?( DT _Atomic const * _Atomic restrict volatile *, forall( dtype D ) D * );
     2758
    21722759forall( dtype DT ) DT _Atomic restrict
    21732760        * ?=?( _Atomic restrict DT * restrict volatile *, DT _Atomic restrict * ),
     
    21772764        * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, void * ),
    21782765        * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * );
     2766
    21792767forall( dtype DT ) DT _Atomic volatile
    21802768        * ?=?( DT _Atomic volatile * restrict volatile *, DT _Atomic volatile * ),
     
    21842772        * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, void volatile * ),
    21852773        * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
     2774
    21862775forall( dtype DT ) DT const restrict
    21872776        * ?=?( DT const restrict * restrict volatile *, DT const restrict * ),
     
    21912780        * ?=?( DT const restrict * _Atomic restrict volatile *, void const * ),
    21922781        * ?=?( DT const restrict * _Atomic restrict volatile *, forall( dtype D ) D * );
     2782
    21932783forall( dtype DT ) DT const volatile
    21942784        * ?=?( DT const volatile * restrict volatile *, DT const volatile * ),
     
    21982788        * ?=?( DT const volatile * _Atomic restrict volatile *, void const volatile * ),
    21992789        * ?=?( DT const volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
     2790
    22002791forall( dtype DT ) DT restrict volatile
    22012792        * ?=?( DT restrict volatile * restrict volatile *, DT restrict volatile * ),
     
    22052796        * ?=?( DT restrict volatile * _Atomic restrict volatile *, void volatile * ),
    22062797        * ?=?( DT restrict volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
     2798
    22072799forall( dtype DT ) DT _Atomic const restrict
    22082800        * ?=?( DT _Atomic const restrict * restrict volatile *,
     
    22182810        * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *,
    22192811         forall( dtype D ) D * );
     2812
    22202813forall( dtype DT ) DT _Atomic const volatile
    22212814        * ?=?( DT _Atomic const volatile * restrict volatile *,
     
    22312824        * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *,
    22322825         forall( dtype D ) D * );
     2826
    22332827forall( dtype DT ) DT _Atomic restrict volatile
    22342828        * ?=?( DT _Atomic restrict volatile * restrict volatile *,
     
    22442838        * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *,
    22452839         forall( dtype D ) D * );
     2840
    22462841forall( dtype DT ) DT const restrict volatile
    22472842        * ?=?( DT const restrict volatile * restrict volatile *,
     
    22572852        * ?=?( DT const restrict volatile * _Atomic restrict volatile *,
    22582853         forall( dtype D ) D * );
     2854
    22592855forall( dtype DT ) DT _Atomic const restrict volatile
    22602856        * ?=?( DT _Atomic const restrict volatile * restrict volatile *,
     
    22702866        * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *,
    22712867         forall( dtype D ) D * );
     2868
    22722869forall( dtype DT ) void
    22732870        * ?=?( void * restrict volatile *, DT * );
     2871
    22742872forall( dtype DT ) void const
    22752873        * ?=?( void const * restrict volatile *, DT const * );
     2874
    22762875forall( dtype DT ) void volatile
    22772876        * ?=?( void volatile * restrict volatile *, DT volatile * );
     2877
    22782878forall( dtype DT ) void const volatile
    22792879        * ?=?( void const volatile * restrict volatile *, DT const volatile * );
    22802880\end{lstlisting}
    22812881\begin{rationale}
    2282 The pattern of overloadings for simple assignment resembles that of pointer increment and decrement, except that the polymorphic pointer assignment functions declare a ©dtype© parameter, instead of a ©type© parameter, because the left operand may be a pointer to an incomplete type.
    2283 \end{rationale}
    2284 
    2285 For every complete structure or union type ©S© there exist
     2882The pattern of overloadings for simple assignment resembles that of pointer increment and decrement,
     2883except that the polymorphic pointer assignment functions declare a \lstinline$dtype$ parameter,
     2884instead of a \lstinline$type$ parameter, because the left operand may be a pointer to an incomplete
     2885type.
     2886\end{rationale}
     2887
     2888For every complete structure or union type \lstinline$S$ there exist
    22862889% Don't use predefined: keep this out of prelude.cf.
    22872890\begin{lstlisting}
     
    22892892\end{lstlisting}
    22902893
    2291 For every extended integer type ©X© there exist
     2894For every extended integer type \lstinline$X$ there exist
    22922895% Don't use predefined: keep this out of prelude.cf.
    22932896\begin{lstlisting}
     
    22952898\end{lstlisting}
    22962899
    2297 For every complete enumerated type ©E© there exist
     2900For every complete enumerated type \lstinline$E$ there exist
    22982901% Don't use predefined: keep this out of prelude.cf.
    22992902\begin{lstlisting}
     
    23012904\end{lstlisting}
    23022905\begin{rationale}
    2303 The right-hand argument is ©int© because enumeration constants have type ©int©.
     2906The right-hand argument is \lstinline$int$ because enumeration constants have type \lstinline$int$.
    23042907\end{rationale}
    23052908
    23062909\semantics
    2307 The structure assignment functions provide member-wise assignment;
    2308 each 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.
    2309 All other assignment functions have the same effect as the corresponding C assignment expression.
    2310 \begin{rationale}
    2311 Note 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.
     2910The structure assignment functions provide member-wise assignment; each non-array member and each
     2911element of each array member of the right argument is assigned to the corresponding member or
     2912element of the left argument using the assignment function defined for its type. All other
     2913assignment functions have the same effect as the corresponding C assignment expression.
     2914\begin{rationale}
     2915Note that, by default, union assignment\index{deficiencies!union assignment} uses C semantics---that
     2916is, bitwise copy---even if some of the union members have programmer-defined assignment functions.
    23122917\end{rationale}
    23132918
     
    23152920\subsubsection{Compound assignment}
    23162921
    2317 \predefined
    2318 \begin{lstlisting}
    2319 forall( otype T ) T
     2922\begin{lstlisting}
     2923forall( type T ) T
    23202924        * ?+=?( T * restrict volatile *, ptrdiff_t ),
    23212925        * ?-=?( T * restrict volatile *, ptrdiff_t ),
    23222926        * ?+=?( T * _Atomic restrict volatile *, ptrdiff_t ),
    23232927        * ?-=?( T * _Atomic restrict volatile *, ptrdiff_t );
    2324 forall( otype T ) T _Atomic
     2928
     2929forall( type T ) T _Atomic
    23252930        * ?+=?( T _Atomic * restrict volatile *, ptrdiff_t ),
    23262931        * ?-=?( T _Atomic * restrict volatile *, ptrdiff_t ),
    23272932        * ?+=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ),
    23282933        * ?-=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t );
    2329 forall( otype T ) T const
     2934
     2935forall( type T ) T const
    23302936        * ?+=?( T const * restrict volatile *, ptrdiff_t ),
    23312937        * ?-=?( T const * restrict volatile *, ptrdiff_t ),
    23322938        * ?+=?( T const * _Atomic restrict volatile *, ptrdiff_t ),
    23332939        * ?-=?( T const * _Atomic restrict volatile *, ptrdiff_t );
    2334 forall( otype T ) T restrict
     2940
     2941forall( type T ) T restrict
    23352942        * ?+=?( T restrict * restrict volatile *, ptrdiff_t ),
    23362943        * ?-=?( T restrict * restrict volatile *, ptrdiff_t ),
    23372944        * ?+=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ),
    23382945        * ?-=?( T restrict * _Atomic restrict volatile *, ptrdiff_t );
    2339 forall( otype T ) T volatile
     2946
     2947forall( type T ) T volatile
    23402948        * ?+=?( T volatile * restrict volatile *, ptrdiff_t ),
    23412949        * ?-=?( T volatile * restrict volatile *, ptrdiff_t ),
    23422950        * ?+=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ),
    23432951        * ?-=?( T volatile * _Atomic restrict volatile *, ptrdiff_t );
    2344 forall( otype T ) T _Atomic const
     2952
     2953forall( type T ) T _Atomic const
    23452954        * ?+=?( T _Atomic const restrict volatile *, ptrdiff_t ),
    23462955        * ?-=?( T _Atomic const restrict volatile *, ptrdiff_t ),
    23472956        * ?+=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ),
    23482957        * ?-=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t );
    2349 forall( otype T ) T _Atomic restrict
     2958
     2959forall( type T ) T _Atomic restrict
    23502960        * ?+=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ),
    23512961        * ?-=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ),
    23522962        * ?+=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ),
    23532963        * ?-=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t );
    2354 forall( otype T ) T _Atomic volatile
     2964
     2965forall( type T ) T _Atomic volatile
    23552966        * ?+=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ),
    23562967        * ?-=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ),
    23572968        * ?+=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ),
    23582969        * ?-=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t );
    2359 forall( otype T ) T const restrict
     2970
     2971forall( type T ) T const restrict
    23602972        * ?+=?( T const restrict * restrict volatile *, ptrdiff_t ),
    23612973        * ?-=?( T const restrict * restrict volatile *, ptrdiff_t ),
    23622974        * ?+=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ),
    23632975        * ?-=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t );
    2364 forall( otype T ) T const volatile
     2976
     2977forall( type T ) T const volatile
    23652978        * ?+=?( T const volatile * restrict volatile *, ptrdiff_t ),
    23662979        * ?-=?( T const volatile * restrict volatile *, ptrdiff_t ),
    23672980        * ?+=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ),
    23682981        * ?-=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t );
    2369 forall( otype T ) T restrict volatile
     2982
     2983forall( type T ) T restrict volatile
    23702984        * ?+=?( T restrict volatile * restrict volatile *, ptrdiff_t ),
    23712985        * ?-=?( T restrict volatile * restrict volatile *, ptrdiff_t ),
    23722986        * ?+=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
    23732987        * ?-=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
    2374 forall( otype T ) T _Atomic const restrict
     2988
     2989forall( type T ) T _Atomic const restrict
    23752990        * ?+=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ),
    23762991        * ?-=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ),
    23772992        * ?+=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ),
    23782993        * ?-=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t );
    2379 forall( otype T ) T _Atomic const volatile
     2994
     2995forall( type T ) T _Atomic const volatile
    23802996        * ?+=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ),
    23812997        * ?-=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ),
    23822998        * ?+=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ),
    23832999        * ?-=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t );
    2384 forall( otype T ) T _Atomic restrict volatile
     3000
     3001forall( type T ) T _Atomic restrict volatile
    23853002        * ?+=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ),
    23863003        * ?-=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ),
    23873004        * ?+=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
    23883005        * ?-=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
    2389 forall( otype T ) T const restrict volatile
     3006
     3007forall( type T ) T const restrict volatile
    23903008        * ?+=?( T const restrict volatile * restrict volatile *, ptrdiff_t ),
    23913009        * ?-=?( T const restrict volatile * restrict volatile *, ptrdiff_t ),
    23923010        * ?+=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
    23933011        * ?-=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
    2394 forall( otype T ) T _Atomic const restrict volatile
     3012
     3013forall( type T ) T _Atomic const restrict volatile
    23953014        * ?+=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ),
    23963015        * ?-=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ),
     
    25623181\end{lstlisting}
    25633182
    2564 For every extended integer type ©X© there exist
     3183For every extended integer type \lstinline$X$ there exist
    25653184% Don't use predefined: keep this out of prelude.cf.
    25663185\begin{lstlisting}
     
    25773196\end{lstlisting}
    25783197
    2579 For every complete enumerated type ©E© there exist
     3198For every complete enumerated type \lstinline$E$ there exist
    25803199% Don't use predefined: keep this out of prelude.cf.
    25813200\begin{lstlisting}
     
    25983217\lhs{expression}
    25993218\rhs \nonterm{assignment-expression}
    2600 \rhs \nonterm{expression} ©,© \nonterm{assignment-expression}
     3219\rhs \nonterm{expression} \lstinline$,$ \nonterm{assignment-expression}
    26013220\end{syntax}
    26023221
    26033222\semantics
    2604 In the comma expression ``©a, b©'', the first operand is interpreted as ``©( void )(a)©'', which shall be unambiguous\index{ambiguous interpretation}.
    2605 The interpretations of the expression are the interpretations of the second operand.
     3223In the comma expression ``\lstinline$a, b$'', the first operand is interpreted as
     3224``\lstinline$( void )(a)$'', which shall be unambiguous\index{ambiguous interpretation}. The
     3225interpretations of the expression are the interpretations of the second operand.
    26063226
    26073227
     
    26183238
    26193239\constraints
    2620 If 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:
     3240If an identifier has \Index{no linkage}, there shall be no more than one declaration of the
     3241identifier ( in a declarator or type specifier ) with compatible types in the same scope and in the
     3242same name space, except that:
    26213243\begin{itemize}
    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.
     3244\item
     3245a typedef name may be redefined to denote the same type as it currently does, provided that type is
     3246not a variably modified type;
     3247\item
     3248tags may be redeclared as specified in section 6.7.2.3 of the {\c11} standard.
    26243249\end{itemize}
    26253250\begin{rationale}
    2626 This constraint adds the phrase ``with compatible types'' to the {\c11} constraint, to allow overloading.
    2627 \end{rationale}
    2628 
    2629 An 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}
    2631 This restriction echos {\c11}'s ban on the redeclaration of typedef names as parameters.
    2632 This avoids an ambiguity between old-style function declarations and new-style function prototypes:
     3251This constraint adds the phrase ``with compatible types'' to the {\c11} constraint, to allow
     3252overloading.
     3253\end{rationale}
     3254
     3255An identifier declared by a type declaration shall not be redeclared as a parameter in a function
     3256definition whose declarator includes an identifier list.
     3257\begin{rationale}
     3258This restriction echos {\c11}'s ban on the redeclaration of typedef names as parameters. This
     3259avoids an ambiguity between old-style function declarations and new-style function prototypes:
    26333260\begin{lstlisting}
    26343261void f( Complex,        // ... 3000 characters ...
    26353262void g( Complex,        // ... 3000 characters ...
    2636 int Complex;
    2637 { ... }
    2638 \end{lstlisting}
    2639 Without the rule, ©Complex© would be a type in the first case, and a parameter name in the second.
     3263int Complex; { ... }
     3264\end{lstlisting}
     3265Without the rule, \lstinline$Complex$ would be a type in the first case, and a parameter name in the
     3266second.
    26403267\end{rationale}
    26413268
     
    26563283
    26573284\semantics
    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.
     3285\CFA extends the {\c11} definition of \define{anonymous structure} to include structure
     3286specifiers with tags, and extends the {\c11} definition of \define{anonymous union} to include union
     3287specifiers with tags.
    26593288\begin{rationale}
    26603289This extension imitates an extension in the Plan 9 C compiler \cite{Thompson90new}.
     
    26633292\examples
    26643293\begin{lstlisting}
    2665 struct point {§\impl{point}§
     3294struct point {@\impl{point}@
    26663295        int x, y;
    26673296};
    2668 struct color_point {§\impl{color_point}§
     3297struct color_point {@\impl{color_point}@
    26693298        enum { RED, BLUE, GREEN } color;
    26703299        struct point;
     
    26733302cp.x = 0;
    26743303cp.color = RED;
    2675 struct literal {§\impl{literal}§
     3304
     3305struct literal {@\impl{literal}@
    26763306        enum { NUMBER, STRING } tag;
    26773307        union {
    2678                 double n;
    2679                 char *s;
     3308         double n;
     3309         char *s;
    26803310        };
    26813311};
     
    26893319
    26903320\setcounter{subsubsection}{4}
    2691 \subsubsection{Forall specifiers}
    2692 \label{forall}
     3321\subsubsection{Forall specifiers}\label{forall}
    26933322
    26943323\begin{syntax}
    26953324\lhs{forall-specifier}
    2696 \rhs ©forall© ©(© \nonterm{type-parameter-list} ©)©
     3325\rhs \lstinline$forall$ \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
    26973326\end{syntax}
    26983327
    2699 \begin{comment}
    27003328\constraints
    2701 If 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}
    2703 This 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}
    2705 forall( otype T ) struct Pair { T a, b;
    2706 } mkPair( T, T ); // illegal
    2707 \end{lstlisting}
    2708 If an instance of ©struct Pair© was declared later in the current scope, what would the members' type be?
    2709 \end{rationale}
    2710 \end{comment}
     3329If the \nonterm{declaration-specifiers} of a declaration that contains a \nonterm{forall-specifier}
     3330declares a structure or union tag, the types of the members of the structure or union shall not use
     3331any of the type identifiers declared by the \nonterm{type-parameter-list}.
     3332\begin{rationale}
     3333This sort of declaration is illegal because the scope of the type identifiers ends at the end of the
     3334declaration, but the scope of the structure tag does not.
     3335\begin{lstlisting}
     3336forall( type T ) struct Pair { T a, b; } mkPair( T, T ); // illegal
     3337\end{lstlisting}
     3338If an instance of \lstinline$struct Pair$ was declared later in the current scope, what would the
     3339members' type be?
     3340\end{rationale}
    27113341
    27123342\semantics
    2713 The \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 
    2715 If, in the declaration ``©T D©'', ©T© contains \nonterm{forall-specifier}s and ©D© has the form
    2716 \begin{lstlisting}
    2717 D( §\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.
    2720 The 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}
    2724 Since 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.
     3343The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type
     3344identifiers, function and object identifiers with \Index{no linkage}.
     3345
     3346If, in the declaration ``\lstinline$T D1$'', \lstinline$T$ contains \nonterm{forall-specifier}s and
     3347\lstinline$D1$ has the form
     3348\begin{lstlisting}
     3349D( @\normalsize\nonterm{parameter-type-list}@ )
     3350\end{lstlisting}
     3351then a type identifier declared by one of the \nonterm{forall-specifier}s is an \define{inferred
     3352parameter} of the function declarator if and only if it is not an inferred parameter of a function
     3353declarator 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
     3356assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s
     3357of that function declarator.
     3358\begin{rationale}
     3359Since every inferred parameter is used by some parameter, inference can be understood as a single
     3360bottom-up pass over the expression tree, that only needs to apply local reasoning at each node.
    27253361
    27263362If this restriction were lifted, it would be possible to write
    27273363\begin{lstlisting}
    2728 forall( otype T ) T * alloc( void );§\use{alloc}§ int *p = alloc();
    2729 \end{lstlisting}
    2730 Here ©alloc()© would receive ©int© as an inferred argument, and return an ©int *©.
    2731 In general, if a call to ©alloc()© is a subexpression of an expression involving polymorphic functions and overloaded identifiers, there could be considerable distance between the call and the subexpression that causes ©T© to be bound.
    2732 
    2733 With the current restriction, ©alloc()© must be given an argument that determines ©T©:
    2734 \begin{lstlisting}
    2735 forall( otype T ) T * alloc( T initial_value );§\use{alloc}§
    2736 \end{lstlisting}
    2737 \end{rationale}
    2738 \end{comment}
    2739 
    2740 If a function declarator is part of a function definition, its inferred parameters and assertion parameters have \Index{block scope};
    2741 otherwise, identifiers declared by assertions have a \define{declaration scope}, which terminates at the end of the \nonterm{declaration}.
     3364forall( type T ) T * alloc( void );@\use{alloc}@
     3365int *p = alloc();
     3366\end{lstlisting}
     3367Here \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
     3369involving polymorphic functions and overloaded identifiers, there could be considerable distance
     3370between the call and the subexpression that causes \lstinline$T$ to be bound.
     3371
     3372With the current restriction, \lstinline$alloc()$ must be given an argument that determines
     3373\lstinline$T$:
     3374\begin{lstlisting}
     3375forall( type T ) T * alloc( T initial_value );@\use{alloc}@
     3376\end{lstlisting}
     3377\end{rationale}
     3378
     3379If a function declarator is part of a function definition, its inferred parameters and assertion
     3380parameters have \Index{block scope}; otherwise, identifiers declared by assertions have a
     3381\define{declaration scope}, which terminates at the end of the \nonterm{declaration}.
    27423382
    27433383A function type that has at least one inferred parameter is a \define{polymorphic function} type.
    2744 Function types with no inferred parameters are \define{monomorphic function} types.
    2745 One 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 
    2747 The names of inferred parameters and the order of identifiers in forall specifiers are not relevant to polymorphic function type compatibility.
    2748 Let $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.
    2749 Let $f'$ be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$.
    2750 Then $f$ and $g$ are \Index{compatible type}s if $f'$'s and $g$'s return types and parameter lists are compatible, and if for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same identifier and compatible type, and vice versa.
     3384Function types with no inferred parameters are \define{monomorphic function} types. One function
     3385type is \define{less polymorphic} than another if it has fewer inferred parameters, or if it has the
     3386same number of inferred parameters and fewer of its explicit parameters have types that depend on an
     3387inferred parameter.
     3388
     3389The names of inferred parameters and the order of identifiers in forall specifiers are not relevant
     3390to polymorphic function type compatibility. Let $f$ and $g$ be two polymorphic function types with
     3391the same number of inferred parameters, and let $f_i$ and $g_i$ be the inferred parameters of $f$
     3392and $g$ in their order of occurance in the function types' \nonterm{parameter-type-list}s. Let $f'$
     3393be $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
     3395for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same
     3396identifier and compatible type, and vice versa.
    27513397
    27523398\examples
     
    27543400\begin{lstlisting}
    27553401int fi( int );
    2756 forall( 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©.
     3402forall( 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$.
    27593406\begin{lstlisting}
    27603407int (*pfi )( int ) = fi;
    2761 forall( 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.
     3408forall( type T ) T (*pfT )( T ) = fT;
     3409\end{lstlisting}
     3410\lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not
     3411polymorphic, but the function it points at is.
    27643412\begin{lstlisting}
    27653413int (*fvpfi( void ))( int ) {
    27663414        return pfi;
    27673415}
    2768 forall( otype T ) T (*fvpfT( void ))( T ) {
     3416forall( type T ) T (*fvpfT( void ))( T ) {
    27693417        return pfT;
    27703418}
    27713419\end{lstlisting}
    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}
    2774 forall( otype T ) int ( *fTpfi( T ) )( int );
    2775 forall( otype T ) T ( *fTpfT( T ) )( T );
    2776 forall( 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.
    2779 It 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()©.
    2781 For instance, in the expression ``©fTpfT(17)©'', ©T© is inferred to be ©int©, and the returned value would have type ©int ( * )( int )©. ``©fTpfT(17)(13)©'' and ``©fTpfT("yes")("no")©'' are legal, but ``©fTpfT(17)("no")©'' is illegal.
    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}
    2784 forall( otype T, otype U, otype V ) U * f( T *, U, V * const );
    2785 forall( otype U, otype V, otype W ) U * g( V *, U, W * const );
    2786 \end{lstlisting}
    2787 The functions ©f()© and ©g()© have compatible types.
    2788 Let \(f\) and \(g\) be their types;
    2789 then \(f_1\) = ©T©, \(f_2\) = ©U©, \(f_3\) = ©V©, \(g_1\)
    2790 = ©V©, \(g_2\) = ©U©, and \(g_3\) = ©W©.
    2791 Replacing every \(f_i\) by \(g_i\) in \(f\) gives
    2792 \begin{lstlisting}
    2793 forall( 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}
    2796 The word ``©type©'' in a forall specifier is redundant at the moment, but I want to leave room for inferred parameters of ordinary types in case parameterized types get added one day.
     3420\lstinline$fvpfi()$ and \lstinline$fvpfT()$ are functions taking no arguments and returning pointers
     3421to functions. \lstinline$fvpfT()$ is monomorphic, but the function that its return value points
     3422at is polymorphic.
     3423\begin{lstlisting}
     3424forall( type T ) int ( *fTpfi( T ) )( int );
     3425forall( type T ) T ( *fTpfT( T ) )( T );
     3426forall( 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
     3429taking an integer and returning an integer. It could return \lstinline$pfi$. \lstinline$fTpfT()$
     3430is 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,
     3432in the expression ``\lstinline$fTpfT(17)$'', \lstinline$T$ is inferred to be \lstinline$int$, and
     3433the 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
     3436is polymorphic ( in type \lstinline$U$). ``\lstinline$f5(17)("no")$'' is a legal expression of type
     3437\lstinline$char *$.
     3438\begin{lstlisting}
     3439forall( type T, type U, type V ) U * f( T *, U, V * const );
     3440forall( type U, type V, type W ) U * g( V *, U, W * const );
     3441\end{lstlisting}
     3442The functions \lstinline$f()$ and \lstinline$g()$ have compatible types. Let \(f\) and \(g\) be
     3443their 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\)
     3445by \(g_i\) in \(f\) gives
     3446\begin{lstlisting}
     3447forall( type V, type U, type W ) U * f( V *, U, W * const );
     3448\end{lstlisting}
     3449which has a return type and parameter list that is compatible with \(g\).
     3450\begin{rationale}
     3451The word ``\lstinline$type$'' in a forall specifier is redundant at the moment, but I want to leave
     3452room for inferred parameters of ordinary types in case parameterized types get added one day.
    27973453
    27983454Even without parameterized types, I might try to allow
    27993455\begin{lstlisting}
    28003456forall( int n ) int sum( int vector[n] );
    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}
    2805 A polymorphic declaration must do two things: it must introduce type parameters, and it must apply assertions to those types.
    2806 Adding this to existing C declaration syntax and semantics was delicate, and not entirely successful.
    2807 
    2808 C depends on declaration-before-use, so a forall specifier must introduce type names before they can be used in the declaration specifiers.
    2809 This could be done by making the forall specifier part of the declaration specifiers, or by making it a new introductory clause of declarations.
    2810 
    2811 Assertions are also part of polymorphic function types, because it must be clear which functions have access to the assertion parameters declared by the assertions.
    2812 All attempts to put assertions inside an introductory clause produced complex semantics and confusing code.
    2813 Building 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.
    2814 Assertions are also used with type parameters of specifications, and by type declarations.
    2815 For 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.
     3457\end{lstlisting}
     3458but C currently rewrites array parameters as pointer parameters, so the effects of such a change
     3459require more thought.
     3460\end{rationale}
     3461
     3462\begin{rationale}
     3463A polymorphic declaration must do two things: it must introduce type parameters, and it must apply
     3464assertions to those types. Adding this to existing C declaration syntax and semantics was delicate,
     3465and not entirely successful.
     3466
     3467C depends on declaration-before-use, so a forall specifier must introduce type names before they can
     3468be used in the declaration specifiers. This could be done by making the forall specifier part of
     3469the declaration specifiers, or by making it a new introductory clause of declarations.
     3470
     3471Assertions are also part of polymorphic function types, because it must be clear which functions
     3472have access to the assertion parameters declared by the assertions. All attempts to put assertions
     3473inside an introductory clause produced complex semantics and confusing code. Building them into the
     3474declaration specifiers could be done by placing them in the function's parameter list, or in a
     3475forall specifier that is a declaration specifier. Assertions are also used with type parameters of
     3476specifications, and by type declarations. For consistency's sake it seems best to attach assertions
     3477to the type declarations in forall specifiers, which means that forall specifiers must be
     3478declaration specifiers.
    28163479\end{rationale}
    28173480%HERE
     
    28203483\subsection{Type qualifiers}
    28213484
    2822 \CFA defines a new type qualifier ©lvalue©\impl{lvalue}\index{lvalue}.
     3485\CFA defines a new type qualifier \lstinline$lvalue$\impl{lvalue}\index{lvalue}.
    28233486\begin{syntax}
    28243487\oldlhs{type-qualifier}
    2825 \rhs ©lvalue©
     3488\rhs \lstinline$lvalue$
    28263489\end{syntax}
    28273490
    28283491\constraints
    2829 \Indexc{restrict} Types other than type parameters and pointer types whose referenced type is an object type shall not be restrict-qualified.
     3492\lstinline$restrict$\index{register@{\lstinline$restrict$}} Types other than type parameters and
     3493pointer types whose referenced type is an object type shall not be restrict-qualified.
    28303494
    28313495\semantics
    2832 An 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.
    2840 Let ©T© be an unqualified version of a type;
    2841 then 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}
    2844 The ©const© and ©volatile© qualifiers can only be sensibly used to qualify the return type of a function if the ©lvalue© qualifier is also used.
    2845 \end{rationale}
    2846 
    2847 An {lvalue}-qualified type may be used in a \Index{cast expression} if the operand is an lvalue;
    2848 the 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.
    2852 Reference types have four uses in {\CC}.
     3496An object's type may be a restrict-qualified type parameter. \lstinline$restrict$ does not
     3497establish 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
     3501passed 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
     3505an 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
     3508indicate that the function result is a constant or volatile lvalue.
     3509\begin{rationale}
     3510The \lstinline$const$ and \lstinline$volatile$ qualifiers can only be sensibly used to qualify the
     3511return type of a function if the \lstinline$lvalue$ qualifier is also used.
     3512\end{rationale}
     3513
     3514An {lvalue}-qualified type may be used in a \Index{cast expression} if the operand is an lvalue; the
     3515result 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
     3519object of type \lstinline$T$) type. Reference types have four uses in {\CC}.
    28533520\begin{itemize}
    28543521\item
    2855 They are necessary for user-defined operators that return lvalues, such as ``subscript'' and ``dereference''.
    2856 
    2857 \item
    2858 A reference can be used to define an alias for a complicated lvalue expression, as a way of getting some of the functionality of the Pascal ©with© statement.
    2859 The following {\CC} code gives an example.
     3522They are necessary for user-defined operators that return lvalues, such as ``subscript'' and
     3523``dereference''.
     3524
     3525\item
     3526A reference can be used to define an alias for a complicated lvalue expression, as a way of getting
     3527some of the functionality of the Pascal \lstinline$with$ statement. The following {\CC} code gives
     3528an example.
    28603529\begin{lstlisting}
    28613530{
     
    28673536
    28683537\item
    2869 A reference parameter can be used to allow a function to modify an argument without forcing the caller to pass the address of the argument.
    2870 This is most useful for user-defined assignment operators.
    2871 In {\CC}, plain assignment is done by a function called ``©operator=©'', and the two expressions
     3538A reference parameter can be used to allow a function to modify an argument without forcing the
     3539caller to pass the address of the argument. This is most useful for user-defined assignment
     3540operators. In {\CC}, plain assignment is done by a function called ``\lstinline$operator=$'', and
     3541the two expressions
    28723542\begin{lstlisting}
    28733543a = b;
    28743544operator=( a, b );
    2875 \end{lstlisting} are equivalent.
    2876 If ©a© and ©b© are of type ©T©, then the first parameter of ©operator=© must have type ``©T&©''.
    2877 It cannot have type ©T©, because then assignment couldn't alter the variable, and it can't have type ``©T *©'', because the assignment would have to be written ``©&a = b;©''.
    2878 
    2879 In the case of user-defined operators, this could just as well be handled by using pointer types and by changing the rewrite rules so that ``©a = b;©'' is equivalent to ``©operator=(&( a), b )©''.
    2880 Reference parameters of ``normal'' functions are Bad Things, because they remove a useful property of C function calls: an argument can only be modified by a function if it is preceded by ``©&©''.
     3545\end{lstlisting}
     3546are equivalent. If \lstinline$a$ and \lstinline$b$ are of type \lstinline$T$, then the first
     3547parameter 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
     3551In the case of user-defined operators, this could just as well be handled by using pointer types and
     3552by 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,
     3554because they remove a useful property of C function calls: an argument can only be modified by a
     3555function if it is preceded by ``\lstinline$&$''.
    28813556
    28823557\item
    28833558References to \Index{const-qualified} types can be used instead of value parameters.  Given the
    2884 {\CC} function call ``©fiddle( a_thing )©'', where the type of ©a_thing© is
    2885 ©Thing©, the type of ©fiddle© could be either of
     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
    28863561\begin{lstlisting}
    28873562void fiddle( Thing );
    28883563void fiddle( const Thing & );
    28893564\end{lstlisting}
    2890 If the second form is used, then constructors and destructors are not invoked to create a temporary variable at the call site ( and it is bad style for the caller to make any assumptions about such things), and within ©fiddle© the parameter is subject to the usual problems caused by aliases.
    2891 The reference form might be chosen for efficiency's sake if ©Thing©s are too large or their constructors or destructors are too expensive.
    2892 An implementation may switch between them without causing trouble for well-behaved clients.
    2893 This leaves the implementor to define ``too large'' and ``too expensive''.
     3565If the second form is used, then constructors and destructors are not invoked to create a temporary
     3566variable at the call site ( and it is bad style for the caller to make any assumptions about such
     3567things), and within \lstinline$fiddle$ the parameter is subject to the usual problems caused by
     3568aliases. The reference form might be chosen for efficiency's sake if \lstinline$Thing$s are too
     3569large or their constructors or destructors are too expensive. An implementation may switch between
     3570them without causing trouble for well-behaved clients. This leaves the implementor to define ``too
     3571large'' and ``too expensive''.
    28943572
    28953573I propose to push this job onto the compiler by allowing it to implement
    28963574\begin{lstlisting}
    28973575void fiddle( const volatile Thing );
    2898 \end{lstlisting} with call-by-reference.
    2899 Since it knows all about the size of ©Thing©s and the parameter passing mechanism, it should be able to come up with a better definition of ``too large'', and may be able to make a good guess at ``too expensive''.
     3576\end{lstlisting}
     3577with call-by-reference. Since it knows all about the size of \lstinline$Thing$s and the parameter
     3578passing mechanism, it should be able to come up with a better definition of ``too large'', and may
     3579be able to make a good guess at ``too expensive''.
    29003580\end{itemize}
    29013581
    2902 In summary, since references are only really necessary for returning lvalues, I'll only provide lvalue functions.
     3582In summary, since references are only really necessary for returning lvalues, I'll only provide
     3583lvalue functions.
    29033584\end{rationale}
    29043585
     
    29073588\subsection{Initialization}
    29083589
    2909 An expression that is used as an \nonterm{initializer} is treated as being cast to the type of the object being initialized.
    2910 An expression used in an \nonterm{initializer-list} is treated as being cast to the type of the aggregate member that it initializes.
    2911 In either case the cast must have a single unambiguous \Index{interpretation}.
     3590An expression that is used as an \nonterm{initializer} is treated as being cast to the type of the
     3591object being initialized. An expression used in an \nonterm{initializer-list} is treated as being
     3592cast to the type of the aggregate member that it initializes. In either case the cast must have a
     3593single unambiguous \Index{interpretation}.
    29123594
    29133595
     
    29173599\begin{syntax}
    29183600\lhs{spec-definition}
    2919 \rhs ©spec© \nonterm{identifier}
    2920         ©(© \nonterm{type-parameter-list} ©)©
    2921         ©{© \nonterm{spec-declaration-list}\opt ©}©
     3601\rhs \lstinline$spec$ \nonterm{identifier}
     3602        \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
     3603        \lstinline${$ \nonterm{spec-declaration-list}\opt \lstinline$}$
    29223604\lhs{spec-declaration-list}
    2923 \rhs \nonterm{spec-declaration} ©;©
    2924 \rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} ©;©
     3605\rhs \nonterm{spec-declaration} \lstinline$;$
     3606\rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} \lstinline$;$
    29253607\lhs{spec-declaration}
    29263608\rhs \nonterm{specifier-qualifier-list} \nonterm{declarator-list}
    29273609\lhs{declarator-list}
    29283610\rhs \nonterm{declarator}
    2929 \rhs \nonterm{declarator-list} ©,© \nonterm{declarator}
     3611\rhs \nonterm{declarator-list} \lstinline$,$ \nonterm{declarator}
    29303612\end{syntax}
    29313613\begin{rationale}
    2932 The 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.
     3614The declarations allowed in a specification are much the same as those allowed in a structure,
     3615except that bit fields are not allowed, and \Index{incomplete type}s and function types are allowed.
    29333616\end{rationale}
    29343617
    29353618\semantics
    2936 A \define{specification definition} defines a name for a \define{specification}: a parameterized collection of object and function declarations.
     3619A \define{specification definition} defines a name for a \define{specification}: a parameterized
     3620collection of object and function declarations.
    29373621
    29383622The declarations in a specification consist of the declarations in the
    29393623\nonterm{spec-declaration-list} and declarations produced by any assertions in the
    2940 \nonterm{spec-parameter-list}.
    2941 If 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.
     3624\nonterm{spec-parameter-list}. If the collection contains two declarations that declare the same
     3625identifier and have compatible types, they are combined into one declaration with the composite type
     3626constructed from the two types.
    29423627
    29433628
     
    29493634\rhs \nonterm{assertion-list} \nonterm{assertion}
    29503635\lhs{assertion}
    2951 \rhs ©|© \nonterm{identifier} ©(© \nonterm{type-name-list} ©)©
    2952 \rhs ©|© \nonterm{spec-declaration}
     3636\rhs \lstinline$|$ \nonterm{identifier} \lstinline$($ \nonterm{type-name-list} \lstinline$)$
     3637\rhs \lstinline$|$ \nonterm{spec-declaration}
    29533638\lhs{type-name-list}
    29543639\rhs \nonterm{type-name}
    2955 \rhs \nonterm{type-name-list} ©,© \nonterm{type-name}
     3640\rhs \nonterm{type-name-list} \lstinline$,$ \nonterm{type-name}
    29563641\end{syntax}
    29573642
    29583643\constraints
    2959 The \nonterm{identifier} in an assertion that is not a \nonterm{spec-declaration} shall be the name of a specification.
    2960 The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}.
    2961 If the
    2962 \nonterm{type-parameter} uses type-class ©type©\use{type}, the argument shall be the type name of an \Index{object type};
    2963 if it uses ©dtype©, the argument shall be the type name of an object type or an \Index{incomplete type};
    2964 and if it uses ©ftype©, the argument shall be the type name of a \Index{function type}.
     3644The \nonterm{identifier} in an assertion that is not a \nonterm{spec-declaration} shall be the name
     3645of a specification. The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for
     3646each \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
     3648name of an \Index{object type}; if it uses \lstinline$dtype$, the argument shall be the type name of
     3649an object type or an \Index{incomplete type}; and if it uses \lstinline$ftype$, the argument shall
     3650be the type name of a \Index{function type}.
    29653651
    29663652\semantics
    2967 An \define{assertion} is a declaration of a collection of objects and functions, called \define{assertion parameters}.
    2968 
    2969 The 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 
    2971 The collection of assertion parameters produced by the \nonterm{assertion-list} are found by combining the declarations produced by each assertion.
    2972 If 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.
     3653An \define{assertion} is a declaration of a collection of objects and functions, called
     3654\define{assertion parameters}.
     3655
     3656The assertion parameters produced by an assertion that applies the name of a specification to type
     3657arguments are found by taking the declarations specified in the specification and treating each of
     3658the specification's parameters as a synonym for the corresponding \nonterm{type-name} argument.
     3659
     3660The collection of assertion parameters produced by the \nonterm{assertion-list} are found by
     3661combining the declarations produced by each assertion. If the collection contains two declarations
     3662that declare the same identifier and have compatible types, they are combined into one declaration
     3663with the \Index{composite type} constructed from the two types.
    29733664
    29743665\examples
    29753666\begin{lstlisting}
    2976 forall( otype T | T ?*?( T, T ))§\use{?*?}§
    2977 T square( T val ) {§\impl{square}§
     3667forall( type T | T ?*?( T, T ))@\use{?*?}@
     3668T square( T val ) {@\impl{square}@
    29783669        return val + val;
    29793670}
    2980 trait summable( otype T ) {§\impl{summable}§
    2981         T ?+=?( T *, T );§\use{?+=?}§
    2982         const T 0;§\use{0}§
     3671
     3672context summable( type T ) {@\impl{summable}@
     3673        T ?+=?( T *, T );@\use{?+=?}@
     3674        const T 0;@\use{0}@
    29833675};
    2984 trait list_of( otype List, otype Element ) {§\impl{list_of}§
     3676context list_of( type List, type Element ) {@\impl{list_of}@
    29853677        Element car( List );
    29863678        List cdr( List );
     
    29893681        int is_nil( List );
    29903682};
    2991 trait 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.
    2994 The assertion ``©|sum_list( i_list, int )©''\use{sum_list} produces the assertion parameters
     3683context 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
     3686up. The assertion ``\lstinline$|sum_list( i_list, int )$''\use{sum_list} produces the assertion
     3687parameters
    29953688\begin{lstlisting}
    29963689int ?+=?( int *, int );
     
    30093702\lhs{type-parameter-list}
    30103703\rhs \nonterm{type-parameter}
    3011 \rhs \nonterm{type-parameter-list} ©,© \nonterm{type-parameter}
     3704\rhs \nonterm{type-parameter-list} \lstinline$,$ \nonterm{type-parameter}
    30123705\lhs{type-parameter}
    30133706\rhs \nonterm{type-class} \nonterm{identifier} \nonterm{assertion-list}\opt
    30143707\lhs{type-class}
    3015 \rhs ©type©
    3016 \rhs ©dtype©
    3017 \rhs ©ftype©
     3708\rhs \lstinline$type$
     3709\rhs \lstinline$dtype$
     3710\rhs \lstinline$ftype$
    30183711\lhs{type-declaration}
    3019 \rhs \nonterm{storage-class-specifier}\opt ©type© \nonterm{type-declarator-list} \verb|;|
     3712\rhs \nonterm{storage-class-specifier}\opt \lstinline$type$ \nonterm{type-declarator-list} \verb|;|
    30203713\lhs{type-declarator-list}
    30213714\rhs \nonterm{type-declarator}
    3022 \rhs \nonterm{type-declarator-list} ©,© \nonterm{type-declarator}
     3715\rhs \nonterm{type-declarator-list} \lstinline$,$ \nonterm{type-declarator}
    30233716\lhs{type-declarator}
    3024 \rhs \nonterm{identifier} \nonterm{assertion-list}\opt ©=© \nonterm{type-name}
     3717\rhs \nonterm{identifier} \nonterm{assertion-list}\opt \lstinline$=$ \nonterm{type-name}
    30253718\rhs \nonterm{identifier} \nonterm{assertion-list}\opt
    30263719\end{syntax}
    30273720
    30283721\constraints
    3029 If a type declaration has block scope, and the declared identifier has external or internal linkage, the declaration shall have no initializer for the identifier.
     3722If a type declaration has block scope, and the declared identifier has external or internal linkage,
     3723the declaration shall have no initializer for the identifier.
    30303724
    30313725\semantics
    3032 A \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 
    3034 An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}.
    3035 Identifiers declared with type-class ©type©\use{type} are \Index{object type}s;
    3036 those declared with type-class ©dtype©\use{dtype} are \Index{incomplete type}s;
    3037 and those declared with type-class ©ftype©\use{ftype} are \Index{function type}s.
    3038 The 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 
    3040 A \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.
    3041 The type in the initializer is called the \define{implementation
    3042   type}.
    3043 Within 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 
    3045 A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or with storage-class specifier ©static©\use{static} defines an \Index{incomplete type}.
    3046 If a \Index{translation unit} or \Index{block} contains one or more such declarations for an identifier, it must contain exactly one definition of the identifier ( but not in an enclosed block, which would define a new type known only within that block).
     3726A \nonterm{type-parameter} or a \nonterm{type-declarator} declares an identifier to be a \Index{type
     3727name} for a type incompatible with all other types.
     3728
     3729An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}. Identifiers declared
     3730with 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
     3733terminates at the end of the \nonterm{spec-declaration-list} or polymorphic function that contains
     3734the \nonterm{type-parameter}.
     3735
     3736A \nonterm{type-declarator} with an \Index{initializer} is a \define{type definition}.  The declared
     3737identifier is an \Index{incomplete type} within the initializer, and an \Index{object type} after
     3738the 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
     3740the defined type and the implementation type, and between pointers to the defined type and pointers
     3741to the implementation type.
     3742
     3743A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or
     3744with 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,
     3746it must contain exactly one definition of the identifier ( but not in an enclosed block, which would
     3747define a new type known only within that block).
    30473748\begin{rationale}
    30483749Incomplete type declarations allow compact mutually-recursive types.
    30493750\begin{lstlisting}
    3050 otype t1; // incomplete type declaration
    3051 otype t2 = struct { t1 * p; ... };
    3052 otype t1 = struct { t2 * p; ... };
    3053 \end{lstlisting}
    3054 Without them, mutual recursion could be handled by declaring mutually recursive structures, then initializing the types to those structures.
     3751type t1; // Incomplete type declaration.
     3752type t2 = struct { t1 * p; ... };
     3753type t1 = struct { t2 * p; ... };
     3754\end{lstlisting}
     3755Without them, mutual recursion could be handled by declaring mutually recursive structures, then
     3756initializing the types to those structures.
    30553757\begin{lstlisting}
    30563758struct s1;
    3057 otype t2 = struct s2 { struct s1 * p; ... };
    3058 otype t1 = struct s1 { struct s2 * p; ... };
    3059 \end{lstlisting}
    3060 This introduces extra names, and may force the programmer to cast between the types and their implementations.
    3061 \end{rationale}
    3062 
    3063 A type declaration without an initializer and with \Index{storage-class specifier} ©extern©\use{extern} is an \define{opaque type declaration}.
    3064 Opaque types are \Index{object type}s.
    3065 An opaque type is not a \nonterm{constant-expression};
    3066 neither is a structure or union that has a member whose type is not a \nonterm{constant-expression}.
    3067 Every other \Index{object type} is a \nonterm{constant-expression}.
    3068 Objects with static storage duration shall be declared with a type that is a \nonterm{constant-expression}.
    3069 \begin{rationale}
    3070 Type declarations can declare identifiers with external linkage, whereas typedef declarations declare identifiers that only exist within a translation unit.
    3071 These opaque types can be used in declarations, but the implementation of the type is not visible.
    3072 
    3073 Static objects can not have opaque types because space for them would have to be allocated at program start-up.
    3074 This 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 
    3077 An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a value of \Index{type-class} ©dtype©.
    3078 An object type\index{object types} which is not a qualified version of a type is a value of type-classes ©type© and ©dtype©.
    3079 A \Index{function type} is a value of type-class ©ftype©.
    3080 \begin{rationale}
    3081 Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which omits the identifier being declared.
    3082 
    3083 Object types are precisely the types that can be instantiated.
    3084 Type 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.
    3085 For 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 
    3087 Type qualifiers are a weak point of C's type system.
    3088 Consider the standard library function ©strchr()© which, given a string and a character, returns a pointer to the first occurrence of the character in the string.
    3089 \begin{lstlisting}
    3090 char *strchr( const char *s, int c ) {§\impl{strchr}§
     3759type t2 = struct s2 { struct s1 * p; ... };
     3760type t1 = struct s1 { struct s2 * p; ... };
     3761\end{lstlisting}
     3762This introduces extra names, and may force the programmer to cast between the types and their
     3763implementations.
     3764\end{rationale}
     3765
     3766A 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
     3769or 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
     3771be declared with a type that is a \nonterm{constant-expression}.
     3772\begin{rationale}
     3773Type declarations can declare identifiers with external linkage, whereas typedef declarations
     3774declare identifiers that only exist within a translation unit. These opaque types can be used in
     3775declarations, but the implementation of the type is not visible.
     3776
     3777Static objects can not have opaque types because space for them would have to be allocated at
     3778program start-up. This is a deficiency\index{deficiencies!static opaque objects}, but I don't want
     3779to deal with ``module initialization'' code just now.
     3780\end{rationale}
     3781
     3782An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a
     3783value of \Index{type-class} \lstinline$dtype$. An object type\index{object types} which is not a
     3784qualified 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}
     3787Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which
     3788omits the identifier being declared.
     3789
     3790Object types are precisely the types that can be instantiated. Type qualifiers are not included in
     3791type values because the compiler needs the information they provide at compile time to detect
     3792illegal statements or to produce efficient machine instructions. For instance, the code that a
     3793compiler must generate to manipulate an object that has volatile-qualified type may be different
     3794from the code to manipulate an ordinary object.
     3795
     3796Type 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
     3798occurrence of the character in the string.
     3799\begin{lstlisting}
     3800char *strchr( const char *s, int c ) {@\impl{strchr}@
    30913801        char real_c = c; // done because c was declared as int.
    30923802        for ( ; *s != real_c; s++ )
    3093                 if ( *s == '\0' ) return NULL;
     3803         if ( *s == '\0' ) return NULL;
    30943804        return ( char * )s;
    30953805}
    30963806\end{lstlisting}
    3097 The parameter ©s© must be ©const char *©, because ©strchr()© might be used to search a constant string, but the return type must be ©char *©, because the result might be used to modify a non-constant string.
    3098 Hence the body must perform a cast, and ( even worse) ©strchr()© provides a type-safe way to attempt to modify constant strings.
    3099 What is needed is some way to say that ©s©'s type might contain qualifiers, and the result type has exactly the same qualifiers.
    3100 Polymorphic functions do not provide a fix for this deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of type values.
    3101 Instead, overloading can be used to define ©strchr()© for each combination of qualifiers.
    3102 \end{rationale}
    3103 
    3104 \begin{rationale}
    3105 Since \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.
    3106 This prevents the declaration of types that contain each other.
    3107 \begin{lstlisting}
    3108 otype t1;
    3109 otype t2 = t1; // illegal: incomplete type t1
    3110 otype t1 = t2;
    3111 \end{lstlisting}
    3112 
    3113 The initializer in a file-scope declaration must be a constant expression.
    3114 This means type declarations can not build on opaque types, which is a deficiency\index{deficiencies!nesting opaque
     3807The parameter \lstinline$s$ must be \lstinline$const char *$, because \lstinline$strchr()$ might be
     3808used to search a constant string, but the return type must be \lstinline$char *$, because the result
     3809might 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
     3811is some way to say that \lstinline$s$'s type might contain qualifiers, and the result type has
     3812exactly the same qualifiers. Polymorphic functions do not provide a fix for this
     3813deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of
     3814type values. Instead, overloading can be used to define \lstinline$strchr()$ for each combination
     3815of qualifiers.
     3816\end{rationale}
     3817
     3818\begin{rationale}
     3819Since \Index{incomplete type}s are not type values, they can not be used as the initializer in a
     3820type declaration, or as the type of a structure or union member. This prevents the declaration of
     3821types that contain each other.
     3822\begin{lstlisting}
     3823type t1;
     3824type t2 = t1; // illegal: incomplete type t1.
     3825type t1 = t2;
     3826\end{lstlisting}
     3827
     3828The initializer in a file-scope declaration must be a constant expression. This means type
     3829declarations can not build on opaque types, which is a deficiency\index{deficiencies!nesting opaque
    31153830 types}.
    31163831\begin{lstlisting}
    3117 extern otype Huge; // extended-precision integer type
    3118 otype Rational = struct {
     3832extern type Huge; // extended-precision integer type.
     3833type Rational = struct {
    31193834        Huge numerator, denominator;    // illegal
    31203835};
     
    31233838};
    31243839\end{lstlisting}
    3125 Without this restriction, \CFA might require ``module initialization'' code ( since ©Rational© has external linkage, it must be created before any other translation unit instantiates it), and would force an ordering on the initialization of the translation unit that defines ©Huge© and the translation that declares ©Rational©.
    3126 
    3127 A 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.
     3840Without this restriction, \CFA might require ``module initialization'' code ( since
     3841\lstinline$Rational$ has external linkage, it must be created before any other translation unit
     3842instantiates it), and would force an ordering on the initialization of the translation unit that
     3843defines \lstinline$Huge$ and the translation that declares \lstinline$Rational$.
     3844
     3845A benefit of the restriction is that it prevents the declaration in separate translation units of
     3846types that contain each other, which would be hard to prevent otherwise.
    31283847\begin{lstlisting}
    31293848//  File a.c:
    31303849        extern type t1;
    3131         type t2 = struct { t1 f1; ... } // illegal
     3850        type t2 = struct { t1 f1; ... } // illegal
    31323851//  File b.c:
    31333852        extern type t2;
    3134         type t1 = struct { t2 f2; ... } // illegal
     3853        type t1 = struct { t2 f2; ... } // illegal
    31353854\end{lstlisting}
    31363855\end{rationale}
     
    31383857\begin{rationale}
    31393858Since a \nonterm{type-declaration} is a \nonterm{declaration} and not a
    3140 \nonterm{struct-declaration}, type declarations can not be structure members.
    3141 The form of
    3142 \nonterm{type-declaration} forbids arrays of, pointers to, and functions returning ©type©.
    3143 Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued expressions.
    3144 It also side-steps the problem of type-valued expressions producing different values in different declarations.
    3145 
    3146 Since a type declaration is not a \nonterm{parameter-declaration}, functions can not have explicit type parameters.
    3147 This may be too restrictive, but it attempts to make compilation simpler.
    3148 Recall 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.
    3149 A type parameter would add a type name to the current scope.
    3150 The 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 
    3152 Explicit type parameters don't seem to be very useful, anyway, because their scope would not include the return type of the function.
    3153 Consider the following attempt to define a type-safe memory allocation function.
     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$.
     3861Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued
     3862expressions. It also side-steps the problem of type-valued expressions producing different values
     3863in different declarations.
     3864
     3865Since a type declaration is not a \nonterm{parameter-declaration}, functions can not have explicit
     3866type parameters. This may be too restrictive, but it attempts to make compilation simpler. Recall
     3867that when traditional C scanners read in an identifier, they look it up in the symbol table to
     3868determine whether or not it is a typedef name, and return a ``type'' or ``identifier'' token
     3869depending on what they find. A type parameter would add a type name to the current scope. The
     3870scope manipulations involved in parsing the declaration of a function that takes function pointer
     3871parameters and returns a function pointer may just be too complicated.
     3872
     3873Explicit type parameters don't seem to be very useful, anyway, because their scope would not include
     3874the return type of the function. Consider the following attempt to define a type-safe memory
     3875allocation function.
    31543876\begin{lstlisting}
    31553877#include <stdlib.h>
    3156 T * new( otype T ) { return ( T * )malloc( sizeof( T) ); };
    3157 ... int * ip = new( int );
    3158 \end{lstlisting}
    3159 This looks sensible, but \CFA's declaration-before-use rules mean that ``©T©'' in the function body refers to the parameter, but the ``©T©'' in the return type refers to the meaning of ©T© in the scope that contains ©new©;
    3160 it could be undefined, or a type name, or a function or variable name.
    3161 Nothing good can result from such a situation.
     3878T * new( type T ) { return ( T * )malloc( sizeof( T) ); };
     3879@\ldots@
     3880int * ip = new( int );
     3881\end{lstlisting}
     3882This looks sensible, but \CFA's declaration-before-use rules mean that ``\lstinline$T$'' in the
     3883function body refers to the parameter, but the ``\lstinline$T$'' in the return type refers to the
     3884meaning of \lstinline$T$ in the scope that contains \lstinline$new$; it could be undefined, or a
     3885type name, or a function or variable name. Nothing good can result from such a situation.
    31623886\end{rationale}
    31633887
     
    31653889Since type declarations create new types, instances of types are always passed by value.
    31663890\begin{lstlisting}
    3167 otype A1 = int[2];
     3891type A1 = int[2];
    31683892void f1( A1 a ) { a[0] = 0; };
    3169 otypedef int A2[2];
     3893typedef int A2[2];
    31703894void f2( A2 a ) { a[0] = 0; };
    31713895A1 v1;
     
    31743898f2( v2 );
    31753899\end{lstlisting}
    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]©.
     3900\lstinline$V1$ is passed by value, so \lstinline$f1()$'s assignment to \lstinline$a[0]$ does not
     3901modify v1.  \lstinline$V2$ is converted to a pointer, so \lstinline$f2()$ modifies
     3902\lstinline$v2[0]$.
    31773903
    31783904A translation unit containing the declarations
    31793905\begin{lstlisting}
    3180 extern type Complex;§\use{Complex}§ // opaque type declaration
    3181 extern float abs( Complex );§\use{abs}§
    3182 \end{lstlisting} can contain declarations of complex numbers, which can be passed to ©abs©.
    3183 Some other translation unit must implement ©Complex© and ©abs©.
    3184 That unit might contain the declarations
    3185 \begin{lstlisting}
    3186 otype Complex = struct { float re, im; };§\impl{Complex}§
    3187 Complex cplx_i = { 0.0, 1.0 };§\impl{cplx_i}§
    3188 float abs( Complex c ) {§\impl{abs( Complex )}§
     3906extern type Complex;@\use{Complex}@ // opaque type declaration.
     3907extern float abs( Complex );@\use{abs}@
     3908\end{lstlisting}
     3909can contain declarations of complex numbers, which can be passed to \lstinline$abs$. Some other
     3910translation unit must implement \lstinline$Complex$ and \lstinline$abs$. That unit might contain
     3911the declarations
     3912\begin{lstlisting}
     3913type Complex = struct { float re, im; };@\impl{Complex}@
     3914Complex cplx_i = { 0.0, 1.0 };@\impl{cplx_i}@
     3915float abs( Complex c ) {@\impl{abs( Complex )}@
    31893916        return sqrt( c.re * c.re + c.im * c.im );
    31903917}
    31913918\end{lstlisting}
    3192 Note that ©c© is implicitly converted to a ©struct© so that its components can be retrieved.
    3193 
    3194 \begin{lstlisting}
    3195 otype Time_of_day = int;§\impl{Time_of_day}§ // seconds since midnight.
    3196 Time_of_day ?+?( Time_of_day t1, int seconds ) {§\impl{?+?}§
     3919Note that \lstinline$c$ is implicitly converted to a \lstinline$struct$ so that its components can
     3920be retrieved.
     3921
     3922\begin{lstlisting}
     3923type Time_of_day = int;@\impl{Time_of_day}@ // seconds since midnight.
     3924Time_of_day ?+?( Time_of_day t1, int seconds ) {@\impl{?+?}@
    31973925        return (( int)t1 + seconds ) % 86400;
    31983926}
    31993927\end{lstlisting}
    3200 ©t1© must be cast to its implementation type to prevent infinite recursion.
    3201 
    3202 \begin{rationale}
    3203 Within the scope of a type definition, an instance of the type can be viewed as having that type or as having the implementation type.
    3204 In the ©Time_of_day© example, the difference is important.
    3205 Different languages have treated the distinction between the abstraction and the implementation in different ways.
     3928\lstinline$t1$ must be cast to its implementation type to prevent infinite recursion.
     3929
     3930\begin{rationale}
     3931Within the scope of a type definition, an instance of the type can be viewed as having that type or
     3932as having the implementation type. In the \lstinline$Time_of_day$ example, the difference is
     3933important. Different languages have treated the distinction between the abstraction and the
     3934implementation in different ways.
    32063935\begin{itemize}
    32073936\item
    3208 Inside a Clu cluster \cite{CLU}, the declaration of an instance states which view applies.
    3209 Two primitives called ©up© and ©down© can be used to convert between the views.
    3210 \item
    3211 The Simula class \cite{SIMULA87} is essentially a record type.
    3212 Since 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.
    3213 In {\CC}
    3214 \cite{C++}, operations on class instances include assignment and ``©&©'', which can be overloaded.
    3215 A ``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
    3217 An 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.
    3218 The derived subprograms are clones of the existing subprograms with the old type replaced by the derived type.
    3219 Literals and aggregates of the old type are also cloned.
     3937Inside a Clu cluster \cite{clu}, the declaration of an instance states which view applies. Two
     3938primitives called \lstinline$up$ and \lstinline$down$ can be used to convert between the views.
     3939\item
     3940The Simula class \cite{Simula87} is essentially a record type. Since the only operations on a
     3941record are member selection and assignment, which can not be overloaded, there is never any
     3942ambiguity 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
     3944overloaded. A ``scope resolution'' operator can be used inside the class to specify whether the
     3945abstract or implementation version of the operation should be used.
     3946\item
     3947An Ada derived type definition \cite{ada} creates a new type from an old type, and also implicitly
     3948declares derived subprograms that correspond to the existing subprograms that use the old type as a
     3949parameter type or result type. The derived subprograms are clones of the existing subprograms with
     3950the old type replaced by the derived type. Literals and aggregates of the old type are also cloned.
    32203951In other words, the abstract view provides exactly the same operations as the implementation view.
    32213952This allows the abstract view to be used in all cases.
    32223953
    3223 The derived subprograms can be replaced by programmer-specified subprograms.
    3224 This is an exception to the normal scope rules, which forbid duplicate definitions of a subprogram in a scope.
    3225 In this case, explicit conversions between the derived type and the old type can be used.
     3954The derived subprograms can be replaced by programmer-specified subprograms. This is an exception
     3955to the normal scope rules, which forbid duplicate definitions of a subprogram in a scope. In this
     3956case, explicit conversions between the derived type and the old type can be used.
    32263957\end{itemize}
    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©.
     3958\CFA's rules are like Clu's, except that implicit conversions and
     3959conversion costs allow it to do away with most uses of \lstinline$up$ and \lstinline$down$.
    32283960\end{rationale}
    32293961
     
    32313963\subsubsection{Default functions and objects}
    32323964
    3233 A declaration\index{type declaration} of a type identifier ©T© with type-class ©type© implicitly declares a \define{default assignment} function ©T ?=?( T *, T )©\use{?=?}, with the same \Index{scope} and \Index{linkage} as the identifier ©T©.
    3234 \begin{rationale}
    3235 Assignment 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).
    3236 Without this rule, nearly every inferred type parameter would need an accompanying assignment assertion parameter.
    3237 If a type parameter should not have an assignment operation, ©dtype© should be used.
    3238 If 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 
    3241 A definition\index{type definition} of a type identifier ©T© with \Index{implementation type} ©I© and type-class ©type© implicitly defines a default assignment function.
    3242 A definition\index{type definition} of a type identifier ©T© with implementation type ©I© and an assertion list implicitly defines \define{default function}s and \define{default object}s as declared by the assertion declarations.
    3243 The default objects and functions have the same \Index{scope} and \Index{linkage} as the identifier ©T©.
    3244 Their values are determined as follows:
     3965A 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
     3968identifier \lstinline$T$.
     3969\begin{rationale}
     3970Assignment is central to C's imperative programming style, and every existing C object type has
     3971assignment defined for it ( except for array types, which are treated as pointer types for purposes
     3972of assignment). Without this rule, nearly every inferred type parameter would need an accompanying
     3973assignment 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
     3975an assignment function that causes a run-time error, or provide an external declaration but no
     3976definition and thus cause a link-time error.
     3977\end{rationale}
     3978
     3979A definition\index{type definition} of a type identifier \lstinline$T$ with \Index{implementation
     3980type} \lstinline$I$ and type-class \lstinline$type$ implicitly defines a default assignment
     3981function. A definition\index{type definition} of a type identifier \lstinline$T$ with implementation
     3982type \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
     3984functions have the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$. Their
     3985values are determined as follows:
    32453986\begin{itemize}
    32463987\item
    3247 If at the definition of ©T© there is visible a declaration of an object with the same name as the default object, and if the type of that object with all occurrence of ©I© replaced by ©T© is compatible with the type of the default object, then the default object is initialized with that object.
    3248 Otherwise the scope of the declaration of ©T© must contain a definition of the default object.
     3988If at the definition of \lstinline$T$ there is visible a declaration of an object with the same name
     3989as the default object, and if the type of that object with all occurrence of \lstinline$I$ replaced
     3990by \lstinline$T$ is compatible with the type of the default object, then the default object is
     3991initialized with that object. Otherwise the scope of the declaration of \lstinline$T$ must contain
     3992a definition of the default object.
    32493993
    32503994\item
    3251 If at the definition of ©T© there is visible a declaration of a function with the same name as the default function, and if the type of that function with all occurrence of ©I© replaced by ©T© is compatible with the type of the default function, then the default function calls that function after converting its arguments and returns the converted result.
    3252 
    3253 Otherwise, if ©I© contains exactly one anonymous member\index{anonymous member} such that at the definition of ©T© there is visible a declaration of a function with the same name as the default function, and the type of that function with all occurrences of the anonymous member's type in its parameter list replaced by ©T© is compatible with the type of the default function, then the default function calls that function after converting its arguments and returns the result.
    3254 
    3255 Otherwise the scope of the declaration of ©T© must contain a definition of the default function.
     3995If at the definition of \lstinline$T$ there is visible a declaration of a function with the same
     3996name as the default function, and if the type of that function with all occurrence of \lstinline$I$
     3997replaced by \lstinline$T$ is compatible with the type of the default function, then the default
     3998function calls that function after converting its arguments and returns the converted result.
     3999
     4000Otherwise, if \lstinline$I$ contains exactly one anonymous member\index{anonymous member} such that
     4001at the definition of \lstinline$T$ there is visible a declaration of a function with the same name
     4002as the default function, and the type of that function with all occurrences of the anonymous
     4003member's type in its parameter list replaced by \lstinline$T$ is compatible with the type of the
     4004default function, then the default function calls that function after converting its arguments and
     4005returns the result.
     4006
     4007Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default
     4008function.
    32564009\end{itemize}
    32574010\begin{rationale}
    3258 Note that a pointer to a default function will not compare as equal to a pointer to the inherited function.
    3259 \end{rationale}
    3260 
    3261 A function or object with the same type and name as a default function or object that is declared within the scope of the definition of ©T© replaces the default function or object.
     4011Note that a pointer to a default function will not compare as equal to a pointer to the inherited
     4012function.
     4013\end{rationale}
     4014
     4015A function or object with the same type and name as a default function or object that is declared
     4016within the scope of the definition of \lstinline$T$ replaces the default function or object.
    32624017
    32634018\examples
    32644019\begin{lstlisting}
    3265 trait s( otype T ) {
     4020context s( type T ) {
    32664021        T a, b;
    3267 } struct impl { int left, right; } a = { 0, 0 };
    3268 otype Pair | s( Pair ) = struct impl;
     4022}
     4023struct impl { int left, right; } a = { 0, 0 };
     4024type Pair | s( Pair ) = struct impl;
    32694025Pair b = { 1, 1 };
    32704026\end{lstlisting}
    3271 The definition of ©Pair© implicitly defines two objects ©a© and ©b©.
    3272 ©Pair a© inherits its value from the ©struct impl a©.
    3273 The definition of ©Pair b© is compulsory because there is no ©struct impl b© to construct a value from.
    3274 \begin{lstlisting}
    3275 trait ss( otype T ) {
     4027The 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
     4030from.
     4031\begin{lstlisting}
     4032context ss( type T ) {
    32764033        T clone( T );
    32774034        void munge( T * );
    32784035}
    3279 otype Whatsit | ss( Whatsit );§\use{Whatsit}§
    3280 otype Doodad | ss( Doodad ) = struct doodad {§\use{Doodad}§
     4036type Whatsit | ss( Whatsit );@\use{Whatsit}@
     4037type Doodad | ss( Doodad ) = struct doodad {@\use{Doodad}@
    32814038        Whatsit; // anonymous member
    32824039        int extra;
     
    32844041Doodad clone( Doodad ) { ... }
    32854042\end{lstlisting}
    3286 The definition of ©Doodad© implicitly defines three functions:
     4043The definition of \lstinline$Doodad$ implicitly defines three functions:
    32874044\begin{lstlisting}
    32884045Doodad ?=?( Doodad *, Doodad );
     
    32904047void munge( Doodad * );
    32914048\end{lstlisting}
    3292 The 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.
    3294 Hence the definition of ``©Doodad clone( Doodad )©'' is necessary.
     4049The assignment function inherits \lstinline$struct doodad$'s assignment function because the types
     4050match 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()$
     4053does \emph{not} inherit \lstinline$Whatsit$'s \lstinline$clone()$: replacement in the parameter
     4054list 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.
    32954057
    32964058Default functions and objects are subject to the normal scope rules.
    32974059\begin{lstlisting}
    3298 otype T = ...;
    3299 T a_T = ...;            // Default assignment used.
     4060type T = @\ldots@;
     4061T a_T = @\ldots@;               // Default assignment used.
    33004062T ?=?( T *, T );
    3301 T a_T = ...;            // Programmer-defined assignment called.
     4063T a_T = @\ldots@;               // Programmer-defined assignment called.
    33024064\end{lstlisting}
    33034065\begin{rationale}
     
    33064068
    33074069\begin{rationale}
    3308 The \emph{class} construct of object-oriented programming languages performs three independent functions.
    3309 It \emph{encapsulates} a data structure;
    3310 it defines a \emph{subtype} relationship, whereby instances of one class may be used in contexts that require instances of another;
    3311 and it allows one class to \emph{inherit} the implementation of another.
    3312 
    3313 In \CFA, encapsulation is provided by opaque types and the scope rules, and subtyping is provided by specifications and assertions.
    3314 Inheritance is provided by default functions and objects.
     4070The \emph{class} construct of object-oriented programming languages performs three independent
     4071functions. It \emph{encapsulates} a data structure; it defines a \emph{subtype} relationship, whereby
     4072instances of one class may be used in contexts that require instances of another; and it allows one
     4073class to \emph{inherit} the implementation of another.
     4074
     4075In \CFA, encapsulation is provided by opaque types and the scope rules, and subtyping is provided
     4076by specifications and assertions. Inheritance is provided by default functions and objects.
    33154077\end{rationale}
    33164078
     
    33234085\end{syntax}
    33244086
    3325 Many statements contain expressions, which may have more than one interpretation.
    3326 The following sections describe how the \CFA translator selects an interpretation.
    3327 In all cases the result of the selection shall be a single unambiguous \Index{interpretation}.
     4087Many statements contain expressions, which may have more than one interpretation. The following
     4088sections describe how the \CFA translator selects an interpretation. In all cases the result of the
     4089selection shall be a single unambiguous \Index{interpretation}.
    33284090
    33294091
     
    33324094\begin{syntax}
    33334095\oldlhs{labeled-statement}
    3334 \rhs ©case© \nonterm{case-value-list} : \nonterm{statement}
     4096\rhs \lstinline$case$ \nonterm{case-value-list} : \nonterm{statement}
    33354097\lhs{case-value-list}
    33364098\rhs \nonterm{case-value}
    3337 \rhs \nonterm{case-value-list} ©,© \nonterm{case-value}
     4099\rhs \nonterm{case-value-list} \lstinline$,$ \nonterm{case-value}
    33384100\lhs{case-value}
    33394101\rhs \nonterm{constant-expression}
    33404102\rhs \nonterm{subrange}
    33414103\lhs{subrange}
    3342 \rhs \nonterm{constant-expression} ©~© \nonterm{constant-expression}
     4104\rhs \nonterm{constant-expression} \lstinline$~$ \nonterm{constant-expression}
    33434105\end{syntax}
    33444106
     
    33534115case 1~4, 9~14, 27~32:
    33544116\end{lstlisting}
    3355 The ©case© and ©default© clauses are restricted within the ©switch© and ©choose© statements, precluding Duff's device.
     4117The \lstinline$case$ and \lstinline$default$ clauses are restricted within the \lstinline$switch$ and \lstinline$choose$ statements, precluding Duff's device.
    33564118
    33574119
    33584120\subsection{Expression and null statements}
    33594121
    3360 The expression in an expression statement is treated as being cast to ©void©.
     4122The expression in an expression statement is treated as being cast to \lstinline$void$.
    33614123
    33624124
     
    33654127\begin{syntax}
    33664128\oldlhs{selection-statement}
    3367 \rhs ©choose© ©(© \nonterm{expression} ©)© \nonterm{statement}
     4129\rhs \lstinline$choose$ \lstinline$($ \nonterm{expression} \lstinline$)$ \nonterm{statement}
    33684130\end{syntax}
    33694131
    3370 The controlling expression ©E© in the ©switch© and ©choose© statement:
     4132The controlling expression \lstinline$E$ in the \lstinline$switch$ and \lstinline$choose$ statement:
    33714133\begin{lstlisting}
    33724134switch ( E ) ...
    33734135choose ( E ) ...
    3374 \end{lstlisting} may have more than one interpretation, but it shall have only one interpretation with an integral type.
     4136\end{lstlisting}
     4137may have more than one interpretation, but it shall have only one interpretation with an integral type.
    33754138An \Index{integer promotion} is performed on the expression if necessary.
    3376 The constant expressions in ©case© statements with the switch are converted to the promoted type.
     4139The constant expressions in \lstinline$case$ statements with the switch are converted to the promoted type.
    33774140
    33784141
    33794142\setcounter{subsubsection}{3}
    3380 \subsubsection[The choose statement]{The \lstinline@choose@ statement}
    3381 
    3382 The ©choose© statement is the same as the ©switch© statement except control transfers to the end of the ©choose© statement at a ©case© or ©default© labeled statement.
    3383 The ©fallthru© statement is used to fall through to the next ©case© or ©default© labeled statement.
     4143\subsubsection{The \lstinline$choose$ statement}
     4144
     4145The \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.
     4146The \lstinline$fallthru$ statement is used to fall through to the next \lstinline$case$ or \lstinline$default$ labeled statement.
    33844147The following have identical meaning:
    33854148\begin{flushleft}
     
    34064169\end{tabular}
    34074170\end{flushleft}
    3408 The ©choose© statement addresses the problem of accidental fall-through associated with the ©switch© statement.
     4171The \lstinline$choose$ statement addresses the problem of accidental fall-through associated with the \lstinline$switch$ statement.
    34094172
    34104173
    34114174\subsection{Iteration statements}
    34124175
    3413 The controlling expression ©E© in the loops
     4176The controlling expression \lstinline$E$ in the loops
    34144177\begin{lstlisting}
    34154178if ( E ) ...
     
    34174180do ... while ( E );
    34184181\end{lstlisting}
    3419 is treated as ``©( int )((E)!=0)©''.
     4182is treated as ``\lstinline$( int )((E)!=0)$''.
    34204183
    34214184The statement
    34224185\begin{lstlisting}
    3423 for ( a; b; c ) ...
    3424 \end{lstlisting} is treated as
     4186for ( a; b; c ) @\ldots@
     4187\end{lstlisting}
     4188is treated as
    34254189\begin{lstlisting}
    34264190for ( ( void )( a ); ( int )(( b )!=0); ( void )( c ) ) ...
     
    34324196\begin{syntax}
    34334197\oldlhs{jump-statement}
    3434 \rhs ©continue© \nonterm{identifier}\opt
    3435 \rhs ©break© \nonterm{identifier}\opt
     4198\rhs \lstinline$continue$ \nonterm{identifier}\opt
     4199\rhs \lstinline$break$ \nonterm{identifier}\opt
    34364200\rhs \ldots
    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}
     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}
    34404204\end{syntax}
    34414205
    3442 Labeled ©continue© and ©break© allow useful but restricted control-flow that reduces the need for the ©goto© statement for exiting multiple nested control-structures.
     4206Labeled \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.
    34434207\begin{lstlisting}
    34444208L1: {                                                   // compound
     
    34674231
    34684232\setcounter{subsubsection}{1}
    3469 \subsubsection[The continue statement]{The \lstinline@continue@ statement}
    3470 
    3471 The 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 
    3476 The 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 
    3481 An 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}
     4233\subsubsection{The \lstinline$continue$ statement}
     4234
     4235The 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
     4240The 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
     4245An 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}
    34854249
    34864250When an exception is raised, \Index{propagation} directs control from a raise in the source execution to a handler in the faulting execution.
    34874251
    34884252
    3489 \subsubsection[The throwResume statement]{The \lstinline@throwResume@ statement}
     4253\subsubsection{The \lstinline$throwResume$ statement}
    34904254
    34914255
     
    34944258\begin{syntax}
    34954259\lhs{exception-statement}
    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}
     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}
    34994263\lhs{handler-list}
    35004264\rhs \nonterm{handler-clause}
    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}
     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}
    35054269\lhs{handler-clause}
    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}
     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}
    35104274\lhs{finally-clause}
    3511 \rhs ©finally© \nonterm{compound-statement}
     4275\rhs \lstinline$finally$ \nonterm{compound-statement}
    35124276\lhs{exception-declaration}
    35134277\rhs \nonterm{type-specifier}
     
    35174281\rhs \nonterm{new-abstract-declarator-tuple}
    35184282\lhs{asynchronous-statement}
    3519 \rhs ©enable© \nonterm{identifier-list} \nonterm{compound-statement}
    3520 \rhs ©disable© \nonterm{identifier-list} \nonterm{compound-statement}
     4283\rhs \lstinline$enable$ \nonterm{identifier-list} \nonterm{compound-statement}
     4284\rhs \lstinline$disable$ \nonterm{identifier-list} \nonterm{compound-statement}
    35214285\end{syntax}
    35224286
     
    35244288
    35254289
    3526 \subsubsection[The try statement]{The \lstinline@try@ statement}
    3527 
    3528 The ©try© statement is a block with associated handlers, called a \Index{guarded block};
     4290\subsubsection{The \lstinline$try$ statement}
     4291
     4292The \lstinline$try$ statement is a block with associated handlers, called a \Index{guarded block};
    35294293all other blocks are \Index{unguarded block}s.
    3530 A ©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 
    3535 The ©enable©/©disable© statements toggle delivery of \Index{asynchronous exception}s.
     4294A \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
     4299The \lstinline$enable$/\lstinline$disable$ statements toggle delivery of \Index{asynchronous exception}s.
    35364300
    35374301
     
    35434307\subsection{Predefined macro names}
    35444308
    3545 The implementation shall define the macro names ©__LINE__©, ©__FILE__©, ©__DATE__©, and ©__TIME__©, as in the {\c11} standard.
    3546 It shall not define the macro name ©__STDC__©.
    3547 
    3548 In addition, the implementation shall define the macro name ©__CFORALL__© to be the decimal constant 1.
     4309The 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
     4311macro name \lstinline$__STDC__$.
     4312
     4313In addition, the implementation shall define the macro name \lstinline$__CFORALL__$ to be the
     4314decimal constant 1.
    35494315
    35504316
     
    35564322
    35574323\section{C types}
    3558 This 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.
     4324This section gives example specifications for some groups of types that are important in the C
     4325language, in terms of the predefined operations that can be applied to those types.
    35594326
    35604327
    35614328\subsection{Scalar, arithmetic, and integral types}
    35624329
    3563 The pointer, integral, and floating-point types are all \define{scalar types}.
    3564 All of these types can be logically negated and compared.
    3565 The assertion ``©scalar( Complex )©'' should be read as ``type ©Complex© is scalar''.
    3566 \begin{lstlisting}
    3567 trait scalar( otype T ) {§\impl{scalar}§
     4330The pointer, integral, and floating-point types are all \define{scalar types}. All of these types
     4331can be logically negated and compared. The assertion ``\lstinline$scalar( Complex )$'' should be read
     4332as ``type \lstinline$Complex$ is scalar''.
     4333\begin{lstlisting}
     4334context scalar( type T ) {@\impl{scalar}@
    35684335        int !?( T );
    35694336        int ?<?( T, T ), ?<=?( T, T ), ?==?( T, T ), ?>=?( T, T ), ?>?( T, T ), ?!=?( T, T );
     
    35714338\end{lstlisting}
    35724339
    3573 The integral and floating-point types are \define{arithmetic types}, which support the basic arithmetic operators.
    3574 The 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 ).
    3575 This is equivalent to inheritance of specifications.
    3576 \begin{lstlisting}
    3577 trait arithmetic( otype T | scalar( T ) ) {§\impl{arithmetic}§§\use{scalar}§
     4340The integral and floating-point types are \define{arithmetic types}, which support the basic
     4341arithmetic operators. The use of an assertion in the \nonterm{spec-parameter-list} declares that,
     4342in order to be arithmetic, a type must also be scalar ( and hence that scalar operations are
     4343available ). This is equivalent to inheritance of specifications.
     4344\begin{lstlisting}
     4345context arithmetic( type T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@
    35784346        T +?( T ), -?( T );
    35794347        T ?*?( T, T ), ?/?( T, T ), ?+?( T, T ), ?-?( T, T );
     
    35814349\end{lstlisting}
    35824350
    3583 The various flavors of ©char© and ©int© and the enumerated types make up the \define{integral types}.
    3584 \begin{lstlisting}
    3585 trait integral( otype T | arithmetic( T ) ) {§\impl{integral}§§\use{arithmetic}§
     4351The various flavors of \lstinline$char$ and \lstinline$int$ and the enumerated types make up the
     4352\define{integral types}.
     4353\begin{lstlisting}
     4354context integral( type T | arithmetic( T ) ) {@\impl{integral}@@\use{arithmetic}@
    35864355        T ~?( T );
    35874356        T ?&?( T, T ), ?|?( T, T ), ?^?( T, T );
     
    35974366The only operation that can be applied to all modifiable lvalues is simple assignment.
    35984367\begin{lstlisting}
    3599 trait m_lvalue( otype T ) {§\impl{m_lvalue}§
     4368context m_lvalue( type T ) {@\impl{m_lvalue}@
    36004369        T ?=?( T *, T );
    36014370};
     
    36034372
    36044373Modifiable scalar lvalues are scalars and are modifiable lvalues, and assertions in the
    3605 \nonterm{spec-parameter-list} reflect those relationships.
    3606 This is equivalent to multiple inheritance of specifications.
    3607 Scalars can also be incremented and decremented.
    3608 \begin{lstlisting}
    3609 trait m_l_scalar( otype T | scalar( T ) | m_lvalue( T ) ) {§\impl{m_l_scalar}§
    3610         T ?++( T * ), ?--( T * );§\use{scalar}§§\use{m_lvalue}§
     4374\nonterm{spec-parameter-list} reflect those relationships. This is equivalent to multiple
     4375inheritance of specifications. Scalars can also be incremented and decremented.
     4376\begin{lstlisting}
     4377context m_l_scalar( type T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@
     4378        T ?++( T * ), ?--( T * );@\use{scalar}@@\use{m_lvalue}@
    36114379        T ++?( T * ), --?( T * );
    36124380};
    36134381\end{lstlisting}
    36144382
    3615 Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic.
    3616 Note that this results in the ``inheritance'' of ©scalar© along both paths.
    3617 \begin{lstlisting}
    3618 trait 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}§
     4383Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic. Note that this
     4384results in the ``inheritance'' of \lstinline$scalar$ along both paths.
     4385\begin{lstlisting}
     4386context 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}@
    36204388        T ?+=?( T *, T ), ?-=?( T *, T );
    36214389};
    3622 trait 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}§
     4390
     4391context 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}@
    36254394};
    36264395\end{lstlisting}
     
    36294398\subsection{Pointer and array types}
    36304399
    3631 Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a constant pointer to the first element of the array, and the subscript expression ``©a[i]©'' is equivalent to the dereferencing expression ``©(*( a+( i )))©''.
    3632 Technically, pointer arithmetic and pointer comparisons other than ``©==©'' and ``©!=©'' are only defined for pointers to array elements, but the type system does not enforce those restrictions.
    3633 Consequently, there is no need for a separate ``array type'' specification.
    3634 
    3635 Pointer types are scalar types.
    3636 Like other scalar types, they have ``©+©'' and ``©-©'' operators, but the types do not match the types of the operations in ©arithmetic©, so these operators cannot be consolidated in ©scalar©.
    3637 \begin{lstlisting}
    3638 trait pointer( type P | scalar( P ) ) {§\impl{pointer}§§\use{scalar}§
     4400Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a
     4401constant 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 )))$''.
     4403Technically, 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
     4405enforce those restrictions. Consequently, there is no need for a separate ``array type''
     4406specification.
     4407
     4408Pointer 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}
     4412context pointer( type P | scalar( P ) ) {@\impl{pointer}@@\use{scalar}@
    36394413        P ?+?( P, long int ), ?+?( long int, P ), ?-?( P, long int );
    36404414        ptrdiff_t ?-?( P, P );
    36414415};
    3642 trait m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {§\impl{m_l_pointer}§
     4416
     4417context m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@
    36434418        P ?+=?( P *, long int ), ?-=?( P *, long int );
    36444419        P ?=?( P *, void * );
     
    36474422\end{lstlisting}
    36484423
    3649 Specifications 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.
    3650 Different specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not included in types.
    3651 The assertion ``©|ptr_to( Safe_pointer, int )©'' should be read as ``©Safe_pointer© acts like a pointer to ©int©''.
    3652 \begin{lstlisting}
    3653 trait ptr_to( otype P | pointer( P ), otype T ) {§\impl{ptr_to}§§\use{pointer}§
    3654         lvalue T *?( P );
    3655         lvalue T ?[?]( P, long int );
     4424Specifications that define the dereference operator ( or subscript operator ) require two
     4425parameters, one for the pointer type and one for the pointed-at ( or element ) type. Different
     4426specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not
     4427included 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}
     4430context ptr_to( type P | pointer( P ), type T ) {@\impl{ptr_to}@@\use{pointer}@
     4431        lvalue T *?( P ); lvalue T ?[?]( P, long int );
    36564432};
    3657 trait 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}§
     4433
     4434context 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}@
    36604436};
    3661 trait 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}§
     4437
     4438context 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}@
    36644440};
    3665 trait ptr_to_const_volatile( otype P | pointer( P ), otype T ) }§\impl{ptr_to_const_volatile}§
    3666         const volatile lvalue T *?( P );§\use{pointer}§
     4441\end{lstlisting}
     4442\begin{lstlisting}
     4443context ptr_to_const_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_const_volatile}@
     4444        const volatile lvalue T *?( P );@\use{pointer}@
    36674445        const volatile lvalue T ?[?]( P, long int );
    36684446};
    36694447\end{lstlisting}
    36704448
    3671 Assignment to pointers is more complicated than is the case with other types, because the target's type can have extra type qualifiers in the pointed-at type: a ``©T *©'' can be assigned to a ``©const T *©'', a ``©volatile T *©'', and a ``©const volatile T *©''.
    3672 Again, the pointed-at type is passed in, so that assertions can connect these specifications to the ``©ptr_to©'' specifications.
    3673 \begin{lstlisting}
    3674 trait m_l_ptr_to( otype P | m_l_pointer( P ),§\use{m_l_pointer}§§\impl{m_l_ptr_to}§ otype T | ptr_to( P, T )§\use{ptr_to}§ {
     4449Assignment to pointers is more complicated than is the case with other types, because the target's
     4450type can have extra type qualifiers in the pointed-at type: a ``\lstinline$T *$'' can be assigned to
     4451a ``\lstinline$const T *$'', a ``\lstinline$volatile T *$'', and a ``\lstinline$const volatile T *$''.
     4452Again, the pointed-at type is passed in, so that assertions can connect these specifications to the
     4453``\lstinline$ptr_to$'' specifications.
     4454\begin{lstlisting}
     4455context 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}@ {
    36754456        P ?=?( P *, T * );
    36764457        T * ?=?( T **, P );
    36774458};
    3678 trait m_l_ptr_to_const( otype P | m_l_pointer( P ),§\use{m_l_pointer}§§\impl{m_l_ptr_to_const}§ otype T | ptr_to_const( P, T )§\use{ptr_to_const}§) {
     4459
     4460context 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}@) {
    36794461        P ?=?( P *, const T * );
    36804462        const T * ?=?( const T **, P );
    36814463};
    3682 trait m_l_ptr_to_volatile( otype P | m_l_pointer( P ),§\use{m_l_pointer}§§\impl{m_l_ptr_to_volatile}§ otype T | ptr_to_volatile( P, T )) {§\use{ptr_to_volatile}§
     4464
     4465context 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}@
    36834466        P ?=?( P *, volatile T * );
    36844467        volatile T * ?=?( volatile T **, P );
    36854468};
    3686 trait m_l_ptr_to_const_volatile( otype P | ptr_to_const_volatile( P ),§\use{ptr_to_const_volatile}§§\impl{m_l_ptr_to_const_volatile}§
    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}§
     4469
     4470context 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}@
    36884472        P ?=?( P *, const volatile T * );
    36894473        const volatile T * ?=?( const volatile T **, P );
     
    36914475\end{lstlisting}
    36924476
    3693 Note the regular manner in which type qualifiers appear in those specifications.
    3694 An 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}
    3696 trait m_l_ptr_like( type MyP | m_l_pointer( MyP ),§\use{m_l_pointer}§§\impl{m_l_ptr_like}§ type CP | m_l_pointer( CP ) ) {
     4477Note the regular manner in which type qualifiers appear in those specifications. An alternative
     4478specification can make use of the fact that qualification of the pointed-at type is part of a
     4479pointer type to capture that regularity.
     4480\begin{lstlisting}
     4481context 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 ) ) {
    36974482        MyP ?=?( MyP *, CP );
    36984483        CP ?=?( CP *, MyP );
    36994484};
    37004485\end{lstlisting}
    3701 The assertion ``©| m_l_ptr_like( Safe_ptr, const int * )©'' should be read as ``©Safe_ptr© is a pointer type like ©const int *©''.
    3702 This specification has two defects, compared to the original four: there is no automatic assertion that dereferencing a ©MyP© produces an lvalue of the type that ©CP© points at, and the ``©|m_l_pointer( CP )©'' assertion provides only a weak assurance that the argument passed to ©CP© really is a pointer type.
     4486The 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
     4488defects, 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
     4491to \lstinline$CP$ really is a pointer type.
    37034492
    37044493
    37054494\section{Relationships between operations}
    37064495
    3707 Different operators often have related meanings;
    3708 for instance, in C, ``©+©'', ``©+=©'', and the two versions of ``©++©'' perform variations of addition.
    3709 Languages 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.
    3710 Completeness and consistency is left to the good taste and discretion of the programmer.
    3711 It 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 
    3713 In \CFA, polymorphic functions provide the equivalent of these generic operators, and specifications explicitly define the minimal implementation that a programmer should provide.
    3714 This section shows a few examples.
     4496Different operators often have related meanings; for instance, in C, ``\lstinline$+$'',
     4497``\lstinline$+=$'', and the two versions of ``\lstinline$++$'' perform variations of addition.
     4498Languages like {\CC} and Ada allow programmers to define operators for new types, but do not
     4499require that these relationships be preserved, or even that all of the operators be implemented.
     4500Completeness and consistency is left to the good taste and discretion of the programmer. It is
     4501possible to encourage these attributes by providing generic operator functions, or member functions
     4502of abstract classes, that are defined in terms of other, related operators.
     4503
     4504In \CFA, polymorphic functions provide the equivalent of these generic operators, and
     4505specifications explicitly define the minimal implementation that a programmer should provide. This
     4506section shows a few examples.
    37154507
    37164508
    37174509\subsection{Relational and equality operators}
    37184510
    3719 The different comparison operators have obvious relationships, but there is no obvious subset of the operations to use in the implementation of the others.
    3720 However, 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;
    3721 the library function ©strcmp© is an example.
    3722 
    3723 C 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}
    3725 trait comparable( otype T ) {
     4511The different comparison operators have obvious relationships, but there is no obvious subset of the
     4512operations to use in the implementation of the others. However, it is usually convenient to
     4513implement a single comparison function that returns a negative integer, 0, or a positive integer if
     4514its first argument is respectively less than, equal to, or greater than its second argument; the
     4515library function \lstinline$strcmp$ is an example.
     4516
     4517C and \CFA have an extra, non-obvious comparison operator: ``\lstinline$!$'', logical negation,
     4518returns 1 if its operand compares equal to 0, and 0 otherwise.
     4519\begin{lstlisting}
     4520context comparable( type T ) {
    37264521        const T 0;
    37274522        int compare( T, T );
    37284523}
    3729 forall( otype T | comparable( T ) ) int ?<?( T l, T r ) {
     4524
     4525forall( type T | comparable( T ) ) int ?<?( T l, T r ) {
    37304526        return compare( l, r ) < 0;
    37314527}
    37324528// ... similarly for <=, ==, >=, >, and !=.
    3733 forall( otype T | comparable( T ) ) int !?( T operand ) {
     4529
     4530forall( type T | comparable( T ) ) int !?( T operand ) {
    37344531        return !compare( operand, 0 );
    37354532}
     
    37394536\subsection{Arithmetic and integer operations}
    37404537
    3741 A complete arithmetic type would provide the arithmetic operators and the corresponding assignment operators.
    3742 Of 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.
    3743 Similarly, a complete integral type would provide integral operations based on integral assignment operations.
    3744 \begin{lstlisting}
    3745 trait arith_base( otype T ) {
     4538A complete arithmetic type would provide the arithmetic operators and the corresponding assignment
     4539operators. Of these, the assignment operators are more likely to be implemented directly, because
     4540it is usually more efficient to alter the contents of an existing object than to create and return a
     4541new one. Similarly, a complete integral type would provide integral operations based on integral
     4542assignment operations.
     4543\begin{lstlisting}
     4544context arith_base( type T ) {
    37464545        const T 1;
    37474546        T ?+=?( T *, T ), ?-=?( T *, T ), ?*=?( T *, T ), ?/=?( T *, T );
    37484547}
    3749 forall( otype T | arith_base( T ) ) T ?+?( T l, T r ) {
     4548
     4549forall( type T | arith_base( T ) ) T ?+?( T l, T r ) {
    37504550        return l += r;
    37514551}
    3752 forall( otype T | arith_base( T ) ) T ?++( T * operand ) {
     4552
     4553forall( type T | arith_base( T ) ) T ?++( T * operand ) {
    37534554        T temporary = *operand;
    37544555        *operand += 1;
    37554556        return temporary;
    37564557}
    3757 forall( otype T | arith_base( T ) ) T ++?( T * operand ) {
     4558
     4559forall( type T | arith_base( T ) ) T ++?( T * operand ) {
    37584560        return *operand += 1;
    37594561}
    37604562// ... similarly for -, --, *, and /.
    3761 trait int_base( otype T ) {
     4563
     4564context int_base( type T ) {
    37624565        T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );
    37634566        T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );
    37644567}
    3765 forall( otype T | int_base( T ) ) T ?&?( T l, T r ) {
     4568
     4569forall( type T | int_base( T ) ) T ?&?( T l, T r ) {
    37664570        return l &= r;
    37674571}
     
    37694573\end{lstlisting}
    37704574
    3771 Note that, although an arithmetic type would certainly provide comparison functions, and an integral type would provide arithmetic operations, there does not have to be any relationship among ©int_base©, ©arith_base© and ©comparable©.
    3772 Note also that these declarations provide guidance and assistance, but they do not define an absolutely minimal set of requirements.
    3773 A truly minimal implementation of an arithmetic type might only provide ©0©, ©1©, and ©?-=?©, which would be used by polymorphic ©?+=?©, ©?*=?©, and ©?/=?© functions.
    3774 
    3775 Note also that ©short© is an integer type in C11 terms, but has no operations!
     4575Note that, although an arithmetic type would certainly provide comparison functions, and an integral
     4576type 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
     4578declarations provide guidance and assistance, but they do not define an absolutely minimal set of
     4579requirements. 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
     4583Note also that \lstinline$short$ is an integer type in C11 terms, but has no operations!
    37764584
    37774585
     
    37794587Review index entries.
    37804588
    3781 Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers.
    3782 This gets into ©noalias© territory.
    3783 Qualifying anything (``©short restrict rs©'') means pointer parameters of ©?++©, etc, would need restrict qualifiers.
    3784 
    3785 Enumerated types.
    3786 Constants are not ints.
    3787 Overloading.
    3788 Definition should be ``representable as an integer type'', not ``as an int''.
    3789 C11 usual conversions freely convert to and from ordinary integer types via assignment, which works between any integer types.
    3790 Does enum Color ?*?( enum
     4589Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers. This gets
     4590into \lstinline$noalias$ territory. Qualifying anything (``\lstinline$short restrict rs$'') means
     4591pointer parameters of \lstinline$?++$, etc, would need restrict qualifiers.
     4592
     4593Enumerated types. Constants are not ints. Overloading. Definition should be ``representable as an
     4594integer type'', not ``as an int''. C11 usual conversions freely convert to and from ordinary
     4595integer types via assignment, which works between any integer types. Does enum Color ?*?( enum
    37914596Color, enum Color ) really make sense? ?++ does, but it adds (int)1.
    37924597
    3793 Operators on {,signed,unsigned} char and other small types. ©?<?© harmless;
    3794 ?*? questionable for chars.
    3795 Generic selections make these choices visible.
    3796 Safe 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 
    3800 Don't use ©ptrdiff_t© by name in the predefineds.
    3801 
    3802 Polymorphic objects.
    3803 Polymorphic typedefs and type declarations.
     4598Operators on {,signed,unsigned} char and other small types. ?<? harmless; ?*? questionable for
     4599chars. 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
     4603forth, but copying must not be done by assignment.
     4604
     4605Don't use ptrdiff\_t by name in the predefineds.
     4606
     4607Polymorphic objects. Polymorphic typedefs and type declarations.
    38044608
    38054609
    38064610\bibliographystyle{plain}
    3807 \bibliography{cfa}
     4611\bibliography{refrat}
    38084612
    38094613
    38104614\addcontentsline{toc}{chapter}{\indexname} % add index name to table of contents
    38114615\begin{theindex}
    3812 Italic page numbers give the location of the main entry for the referenced term.
    3813 Plain page numbers denote uses of the indexed term.
    3814 Entries for grammar non-terminals are italicized.
    3815 A typewriter font is used for grammar terminals and program identifiers.
     4616Italic page numbers give the location of the main entry for the referenced term. Plain page numbers
     4617denote uses of the indexed term. Entries for grammar non-terminals are italicized. A typewriter
     4618font is used for grammar terminals and program identifiers.
    38164619\indexspace
    38174620\input{refrat.ind}
  • src/ArgTweak/FunctionFixer.cc

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

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 13:35:30 2016
    13 // Update Count     : 352
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Sep 17 15:25:58 2015
     13// Update Count     : 233
    1414//
    1515
     
    2121#include "Parser/ParseNode.h"
    2222
    23 #include "SynTree/Declaration.h"
     23#include "SynTree/Type.h"
    2424#include "SynTree/Expression.h"
    2525#include "SynTree/Initializer.h"
    2626#include "SynTree/Statement.h"
    27 #include "SynTree/Type.h"
    28 #include "SynTree/Attribute.h"
    29 
    30 #include "Common/utility.h"
    31 #include "Common/UnimplementedError.h"
     27
     28#include "utility.h"
     29#include "UnimplementedError.h"
    3230
    3331#include "CodeGenerator.h"
     
    3533#include "GenType.h"
    3634
    37 #include "InitTweak/InitTweak.h"
    38 
    3935using namespace std;
    4036
     
    4541        bool wantSpacing( Statement * stmt) {
    4642                return dynamic_cast< IfStmt * >( stmt ) || dynamic_cast< CompoundStmt * >( stmt ) ||
    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 {
     43                        dynamic_cast< WhileStmt * >( stmt ) || dynamic_cast< ForStmt * > ( stmt ) || dynamic_cast< SwitchStmt *>( stmt );
     44        }
     45
     46        ostream & CodeGenerator::Indenter::operator()( ostream & output ) {
    6347          return output << string( cg.cur_indent, ' ' );
    6448        }
    6549
    66         ostream & operator<<( ostream & output, const CodeGenerator::Indenter &indent ) {
     50        ostream & operator<<( ostream & output, CodeGenerator::Indenter &indent ) {
    6751                return indent( output );
    6852        }
    6953
    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 ) {
     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 ) {
    8958                //output << std::string( init );
    9059        }
    9160
    92         CodeGenerator::CodeGenerator( std::ostream & os, char * init, int indentation, bool infunp )
    93                         : indent( *this ), cur_indent( indentation ), insideFunction( infunp ), output( os ), printLabels( *this ) {
     61        CodeGenerator::CodeGenerator( std::ostream &os, char *init, int indentation, bool infunp )
     62                        : indent( *this ), cur_indent( indentation ), insideFunction( infunp ), output( os ) {
    9463                //output << std::string( init );
    9564        }
    9665
    97         string mangleName( DeclarationWithType * decl ) {
     66        string mangleName( DeclarationWithType *decl ) {
    9867                if ( decl->get_mangleName() != "" ) {
    99                         // need to incorporate scope level in order to differentiate names for destructors
    100                         return decl->get_scopedMangleName();
     68                        return decl->get_mangleName();
    10169                } else {
    10270                        return decl->get_name();
     
    10472        }
    10573
    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 
    12274        //*** Declarations
    123         void CodeGenerator::visit( FunctionDecl * functionDecl ) {
    124                 extension( functionDecl );
    125                 genAttributes( functionDecl->get_attributes() );
    126 
     75        void CodeGenerator::visit( FunctionDecl *functionDecl ) {
    12776                handleStorageClass( functionDecl );
    12877                if ( functionDecl->get_isInline() ) {
     
    14695        }
    14796
    148         void CodeGenerator::visit( ObjectDecl * objectDecl ) {
    149                 extension( objectDecl );
    150                 genAttributes( objectDecl->get_attributes() );
    151 
     97        void CodeGenerator::visit( ObjectDecl *objectDecl ) {
    15298                handleStorageClass( objectDecl );
    15399                output << genType( objectDecl->get_type(), mangleName( objectDecl ) );
    154 
     100       
    155101                if ( objectDecl->get_init() ) {
    156102                        output << " = ";
    157103                        objectDecl->get_init()->accept( *this );
    158104                } // if
    159 
    160105                if ( objectDecl->get_bitfieldWidth() ) {
    161106                        output << ":";
     
    164109        }
    165110
    166         void CodeGenerator::handleAggregate( AggregateDecl * aggDecl ) {
     111        void CodeGenerator::handleAggregate( AggregateDecl *aggDecl ) {
    167112                if ( aggDecl->get_name() != "" )
    168113                        output << aggDecl->get_name();
    169 
    170                 std::list< Declaration * > & memb = aggDecl->get_members();
     114       
     115                std::list< Declaration * > &memb = aggDecl->get_members();
     116
    171117                if ( ! memb.empty() ) {
    172 //              if ( aggDecl->has_body() ) {
    173 //                      std::list< Declaration * > & memb = aggDecl->get_members();
    174118                        output << " {" << endl;
    175119
    176                         cur_indent += CodeGenerator::tabsize;
    177                         for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end(); i++ ) {
    178                                 output << indent;
     120                        cur_indent += CodeGenerator::tabsize; 
     121                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
     122                                output << indent; 
    179123                                (*i)->accept( *this );
    180124                                output << ";" << endl;
    181                         } // for
    182 
    183                         cur_indent -= CodeGenerator::tabsize;
     125                        }
     126
     127                        cur_indent -= CodeGenerator::tabsize; 
    184128
    185129                        output << indent << "}";
     
    187131        }
    188132
    189         void CodeGenerator::visit( StructDecl * structDecl ) {
    190                 extension( structDecl );
     133        void CodeGenerator::visit( StructDecl *structDecl ) {
    191134                output << "struct ";
    192135                handleAggregate( structDecl );
    193136        }
    194137
    195         void CodeGenerator::visit( UnionDecl * unionDecl ) {
    196                 extension( unionDecl );
     138        void CodeGenerator::visit( UnionDecl *aggregateDecl ) {
    197139                output << "union ";
    198                 handleAggregate( unionDecl );
    199         }
    200 
    201         void CodeGenerator::visit( EnumDecl * enumDecl ) {
    202                 extension( enumDecl );
     140                handleAggregate( aggregateDecl );
     141        }
     142 
     143        void CodeGenerator::visit( EnumDecl *aggDecl ) {
    203144                output << "enum ";
    204145
    205                 if ( enumDecl->get_name() != "" )
    206                         output << enumDecl->get_name();
    207 
    208                 std::list< Declaration* > &memb = enumDecl->get_members();
     146                if ( aggDecl->get_name() != "" )
     147                        output << aggDecl->get_name();
     148       
     149                std::list< Declaration* > &memb = aggDecl->get_members();
    209150
    210151                if ( ! memb.empty() ) {
    211152                        output << " {" << endl;
    212153
    213                         cur_indent += CodeGenerator::tabsize;
     154                        cur_indent += CodeGenerator::tabsize; 
    214155                        for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
    215                                 ObjectDecl * obj = dynamic_cast< ObjectDecl* >( *i );
     156                                ObjectDecl *obj = dynamic_cast< ObjectDecl* >( *i );
    216157                                assert( obj );
    217                                 output << indent << mangleName( obj );
     158                                output << indent << mangleName( obj ); 
    218159                                if ( obj->get_init() ) {
    219160                                        output << " = ";
     
    223164                        } // for
    224165
    225                         cur_indent -= CodeGenerator::tabsize;
     166                        cur_indent -= CodeGenerator::tabsize; 
    226167
    227168                        output << indent << "}";
    228169                } // if
    229170        }
    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 ) {
     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 ) {
    240180                // really, we should mutate this into something that isn't a TypeDecl but that requires large-scale changes,
    241181                // still to be done
    242                 extension( typeDecl );
    243182                output << "extern unsigned long " << typeDecl->get_name();
    244183                if ( typeDecl->get_base() ) {
     
    260199                                (*iter)->accept( *this );
    261200                                output << "]";
    262                         } // if
    263                 } // for
     201                        }
     202                }
    264203                output << " = ";
    265204        }
    266205
    267         void CodeGenerator::visit( SingleInit * init ) {
     206        void CodeGenerator::visit( SingleInit *init ) {
    268207                printDesignators( init->get_designators() );
    269208                init->get_value()->accept( *this );
    270209        }
    271210
    272         void CodeGenerator::visit( ListInit * init ) {
     211        void CodeGenerator::visit( ListInit *init ) {
    273212                printDesignators( init->get_designators() );
    274213                output << "{ ";
    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
     214                genCommaList( init->begin_initializers(), init->end_initializers() );
    281215                output << " }";
    282216        }
    283217
    284         void CodeGenerator::visit( Constant * constant ) {
     218        void CodeGenerator::visit( Constant *constant ) {
    285219                output << constant->get_value() ;
    286220        }
    287221
    288222        //*** Expressions
    289         void CodeGenerator::visit( ApplicationExpr * applicationExpr ) {
    290                 extension( applicationExpr );
    291                 if ( VariableExpr * varExpr = dynamic_cast< VariableExpr* >( applicationExpr->get_function() ) ) {
     223        void CodeGenerator::visit( ApplicationExpr *applicationExpr ) {
     224                if ( VariableExpr *varExpr = dynamic_cast< VariableExpr* >( applicationExpr->get_function() ) ) {
    292225                        OperatorInfo opInfo;
    293226                        if ( varExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( varExpr->get_var()->get_name(), opInfo ) ) {
     
    297230                                  case OT_POSTFIXASSIGN:
    298231                                  case OT_INFIXASSIGN:
    299                                   case OT_CTOR:
    300                                   case OT_DTOR:
    301232                                        {
    302233                                                assert( arg != applicationExpr->get_args().end() );
    303                                                 if ( AddressExpr * addrExpr = dynamic_cast< AddressExpr * >( *arg ) ) {
    304                                                         // remove & from first assignment/ctor argument
     234                                                if ( AddressExpr *addrExpr = dynamic_cast< AddressExpr * >( *arg ) ) {
     235               
    305236                                                        *arg = addrExpr->get_arg();
    306237                                                } else {
    307                                                         // no address-of operator, so must be a pointer - add dereference
    308                                                         UntypedExpr * newExpr = new UntypedExpr( new NameExpr( "*?" ) );
     238                                                        UntypedExpr *newExpr = new UntypedExpr( new NameExpr( "*?" ) );
    309239                                                        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 );
    314240                                                        *arg = newExpr;
    315241                                                } // if
    316242                                                break;
    317243                                        }
    318 
     244             
    319245                                  default:
    320246                                        // do nothing
    321247                                        ;
    322                                 } // switch
    323 
     248                                }
     249           
    324250                                switch ( opInfo.type ) {
    325251                                  case OT_INDEX:
     
    330256                                        output << "]";
    331257                                        break;
    332 
     258             
    333259                                  case OT_CALL:
    334                                         // there are no intrinsic definitions of the function call operator
    335                                         assert( false );
    336                                         break;
    337 
    338260                                  case OT_CTOR:
    339261                                  case OT_DTOR:
    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 
     262                                        // there are no intrinsic definitions of the function call operator or constructors or destructors
     263                                        assert( false );
     264                                        break;
     265             
    359266                                  case OT_PREFIX:
    360267                                  case OT_PREFIXASSIGN:
     
    365272                                        output << ")";
    366273                                        break;
    367 
     274             
    368275                                  case OT_POSTFIX:
    369276                                  case OT_POSTFIXASSIGN:
     
    372279                                        output << opInfo.symbol;
    373280                                        break;
    374 
    375281
    376282                                  case OT_INFIX:
     
    383289                                        output << ")";
    384290                                        break;
    385 
     291             
    386292                                  case OT_CONSTANT:
    387293                                  case OT_LABELADDRESS:
    388294                                        // there are no intrinsic definitions of 0/1 or label addresses as functions
    389295                                        assert( false );
    390                                 } // switch
     296                                }
    391297                        } else {
    392298                                varExpr->accept( *this );
     
    402308                } // if
    403309        }
    404 
    405         void CodeGenerator::visit( UntypedExpr * untypedExpr ) {
    406                 extension( untypedExpr );
    407                 if ( NameExpr * nameExpr = dynamic_cast< NameExpr* >( untypedExpr->get_function() ) ) {
     310 
     311        void CodeGenerator::visit( UntypedExpr *untypedExpr ) {
     312                if ( NameExpr *nameExpr = dynamic_cast< NameExpr* >( untypedExpr->get_function() ) ) {
    408313                        OperatorInfo opInfo;
    409314                        if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
     
    417322                                        output << "]";
    418323                                        break;
    419 
     324             
    420325                                  case OT_CALL:
     326                                        case OT_CTOR:
     327                                        case OT_DTOR:
    421328                                        assert( false );
    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 
     329                                        break;
     330             
    444331                                  case OT_PREFIX:
    445332                                  case OT_PREFIXASSIGN:
     
    451338                                        output << ")";
    452339                                        break;
    453 
     340             
    454341                                  case OT_POSTFIX:
    455342                                  case OT_POSTFIXASSIGN:
     
    458345                                        output << opInfo.symbol;
    459346                                        break;
    460 
     347 
    461348                                  case OT_INFIX:
    462349                                  case OT_INFIXASSIGN:
     
    468355                                        output << ")";
    469356                                        break;
    470 
     357                                       
    471358                                  case OT_CONSTANT:
    472359                                        // there are no intrinsic definitions of 0 or 1 as functions
    473360                                        assert( false );
    474                                 } // switch
     361                                }
    475362                        } else {
    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
     363                                nameExpr->accept( *this );
     364                                output << "(";
     365                                genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
     366                                output << ")";
    487367                        } // if
    488368                } else {
     
    493373                } // if
    494374        }
    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 );
     375 
     376        void CodeGenerator::visit( NameExpr *nameExpr ) {
    504377                OperatorInfo opInfo;
    505378                if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
     
    510383                } // if
    511384        }
    512 
    513         void CodeGenerator::visit( AddressExpr * addressExpr ) {
    514                 extension( addressExpr );
     385 
     386        void CodeGenerator::visit( AddressExpr *addressExpr ) {
    515387                output << "(&";
    516388                // this hack makes sure that we don't convert "constant_zero" to "0" if we're taking its address
    517                 if ( VariableExpr * variableExpr = dynamic_cast< VariableExpr* >( addressExpr->get_arg() ) ) {
     389                if ( VariableExpr *variableExpr = dynamic_cast< VariableExpr* >( addressExpr->get_arg() ) ) {
    518390                        output << mangleName( variableExpr->get_var() );
    519391                } else {
     
    523395        }
    524396
    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(), "" );
     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
    534410                        output << ")";
    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 ) {
     411                        castExpr->get_arg()->accept( *this );
     412                        output << ")";                 
     413                }
     414        }
     415 
     416        void CodeGenerator::visit( UntypedMemberExpr *memberExpr ) {
    544417                assert( false );
    545418        }
    546 
    547         void CodeGenerator::visit( MemberExpr * memberExpr ) {
    548                 extension( memberExpr );
     419 
     420        void CodeGenerator::visit( MemberExpr *memberExpr ) {
    549421                memberExpr->get_aggregate()->accept( *this );
    550422                output << "." << mangleName( memberExpr->get_member() );
    551423        }
    552 
    553         void CodeGenerator::visit( VariableExpr * variableExpr ) {
    554                 extension( variableExpr );
     424 
     425        void CodeGenerator::visit( VariableExpr *variableExpr ) {
    555426                OperatorInfo opInfo;
    556427                if ( variableExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( variableExpr->get_var()->get_name(), opInfo ) && opInfo.type == OT_CONSTANT ) {
     
    560431                } // if
    561432        }
    562 
    563         void CodeGenerator::visit( ConstantExpr * constantExpr ) {
     433 
     434        void CodeGenerator::visit( ConstantExpr *constantExpr ) {
    564435                assert( constantExpr->get_constant() );
    565                 extension( constantExpr );
    566436                constantExpr->get_constant()->accept( *this );
    567437        }
    568 
    569         void CodeGenerator::visit( SizeofExpr * sizeofExpr ) {
    570                 extension( sizeofExpr );
     438 
     439        void CodeGenerator::visit( SizeofExpr *sizeofExpr ) {
    571440                output << "sizeof(";
    572441                if ( sizeofExpr->get_isType() ) {
     
    577446                output << ")";
    578447        }
    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 );
     448 
     449        void CodeGenerator::visit( LogicalExpr *logicalExpr ) {
    610450                output << "(";
    611451                logicalExpr->get_arg1()->accept( *this );
     
    618458                output << ")";
    619459        }
    620 
    621         void CodeGenerator::visit( ConditionalExpr * conditionalExpr ) {
    622                 extension( conditionalExpr );
     460 
     461        void CodeGenerator::visit( ConditionalExpr *conditionalExpr ) {
    623462                output << "(";
    624463                conditionalExpr->get_arg1()->accept( *this );
     
    629468                output << ")";
    630469        }
    631 
    632         void CodeGenerator::visit( CommaExpr * commaExpr ) {
    633                 extension( commaExpr );
     470 
     471        void CodeGenerator::visit( CommaExpr *commaExpr ) {
    634472                output << "(";
    635473                commaExpr->get_arg1()->accept( *this );
     
    638476                output << ")";
    639477        }
    640 
    641         void CodeGenerator::visit( TupleExpr * tupleExpr ) {}
    642 
    643         void CodeGenerator::visit( TypeExpr * typeExpr ) {}
    644 
    645         void CodeGenerator::visit( AsmExpr * asmExpr ) {
     478 
     479        void CodeGenerator::visit( TupleExpr *tupleExpr ) {}
     480 
     481        void CodeGenerator::visit( TypeExpr *typeExpr ) {}
     482
     483        void CodeGenerator::visit( AsmExpr *asmExpr ) {
    646484                if ( asmExpr->get_inout() ) {
    647485                        output << "[ ";
     
    656494
    657495        //*** Statements
    658         void CodeGenerator::visit( CompoundStmt * compoundStmt ) {
     496        void CodeGenerator::visit( CompoundStmt *compoundStmt ) {
    659497                std::list<Statement*> ks = compoundStmt->get_kids();
    660498                output << "{" << endl;
     
    669507                        if ( wantSpacing( *i ) ) {
    670508                                output << endl;
    671                         } // if
    672                 } // for
    673                 cur_indent -= CodeGenerator::tabsize;
     509                        }
     510                }
     511                cur_indent -= CodeGenerator::tabsize; 
    674512
    675513                output << indent << "}";
    676514        }
    677515
    678         void CodeGenerator::visit( ExprStmt * exprStmt ) {
     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
    679520                assert( exprStmt );
    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 ) {
     521
     522                // if ( exprStmt != 0 ) {
     523                exprStmt->get_expr()->accept( *this );
     524                output << ";" ;
     525                // } // if
     526        }
     527
     528        void CodeGenerator::visit( AsmStmt *asmStmt ) {
    687529                output << "asm ";
    688530                if ( asmStmt->get_voltile() ) output << "volatile ";
     
    707549        }
    708550
    709         void CodeGenerator::visit( IfStmt * ifStmt ) {
     551        void CodeGenerator::visit( IfStmt *ifStmt ) {
    710552                output << "if ( ";
    711553                ifStmt->get_condition()->accept( *this );
     
    720562        }
    721563
    722         void CodeGenerator::visit( SwitchStmt * switchStmt ) {
     564        void CodeGenerator::visit( SwitchStmt *switchStmt ) {
    723565                output << "switch ( " ;
    724566                switchStmt->get_condition()->accept( *this );
    725567                output << " ) ";
    726 
     568               
    727569                output << "{" << std::endl;
    728570                cur_indent += CodeGenerator::tabsize;
    729                 acceptAll( switchStmt->get_statements(), *this );
     571
     572                acceptAll( switchStmt->get_branches(), *this );
     573
    730574                cur_indent -= CodeGenerator::tabsize;
     575
    731576                output << indent << "}";
    732577        }
    733578
    734         void CodeGenerator::visit( CaseStmt * caseStmt ) {
     579        void CodeGenerator::visit( CaseStmt *caseStmt ) {
    735580                output << indent;
    736581                if ( caseStmt->isDefault()) {
     
    741586                } // if
    742587                output << ":\n";
    743 
     588               
    744589                std::list<Statement *> sts = caseStmt->get_statements();
    745590
     
    749594                        (*i)->accept( *this );
    750595                        output << endl;
    751                 } // for
     596                }
    752597                cur_indent -= CodeGenerator::tabsize;
    753598        }
    754599
    755         void CodeGenerator::visit( BranchStmt * branchStmt ) {
     600        void CodeGenerator::visit( BranchStmt *branchStmt ) {
    756601                switch ( branchStmt->get_type()) {
    757602                  case BranchStmt::Goto:
    758603                        if ( ! branchStmt->get_target().empty() )
    759604                                output << "goto " << branchStmt->get_target();
    760                         else {
     605                        else { 
    761606                                if ( branchStmt->get_computedTarget() != 0 ) {
    762607                                        output << "goto *";
     
    771616                        output << "continue";
    772617                        break;
    773                 } // switch
     618                }
    774619                output << ";";
    775620        }
    776621
    777622
    778         void CodeGenerator::visit( ReturnStmt * returnStmt ) {
     623        void CodeGenerator::visit( ReturnStmt *returnStmt ) {
    779624                output << "return ";
    780                 maybeAccept( returnStmt->get_expr(), *this );
     625
     626                // xxx -- check for null expression;
     627                if ( returnStmt->get_expr() ) {
     628                        returnStmt->get_expr()->accept( *this );
     629                } // if
    781630                output << ";";
    782631        }
    783632
    784         void CodeGenerator::visit( WhileStmt * whileStmt ) {
    785                 if ( whileStmt->get_isDoWhile() ) {
     633        void CodeGenerator::visit( WhileStmt *whileStmt ) {
     634                if ( whileStmt->get_isDoWhile() )
    786635                        output << "do" ;
    787                 } else {
     636                else {
    788637                        output << "while (" ;
    789638                        whileStmt->get_condition()->accept( *this );
     
    804653        }
    805654
    806         void CodeGenerator::visit( ForStmt * forStmt ) {
    807                 // initialization is always hoisted, so don't bother doing anything with that
     655        void CodeGenerator::visit( ForStmt *forStmt ) {
     656                // initialization is always hoisted, so don't
     657                // bother doing anything with that
    808658                output << "for (;";
    809659
    810                 if ( forStmt->get_condition() != 0 ) {
     660                if ( forStmt->get_condition() != 0 )
    811661                        forStmt->get_condition()->accept( *this );
    812                 } // if
    813662                output << ";";
    814663
    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
     664                if ( forStmt->get_increment() != 0 )
     665                        forStmt->get_increment()->accept( *this );
    820666                output << ") ";
    821667
     
    826672        }
    827673
    828         void CodeGenerator::visit( NullStmt * nullStmt ) {
     674        void CodeGenerator::visit( NullStmt *nullStmt ) {
    829675                //output << indent << CodeGenerator::printLabels( nullStmt->get_labels() );
    830676                output << "/* null statement */ ;";
    831677        }
    832678
    833         void CodeGenerator::visit( DeclStmt * declStmt ) {
     679        void CodeGenerator::visit( DeclStmt *declStmt ) {
    834680                declStmt->get_decl()->accept( *this );
    835 
     681       
    836682                if ( doSemicolon( declStmt->get_decl() ) ) {
    837683                        output << ";";
     
    839685        }
    840686
    841         void CodeGenerator::handleStorageClass( Declaration * decl ) {
     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 ) {
    842698                switch ( decl->get_storageClass() ) {
    843699                  case DeclarationNode::Extern:
  • src/CodeGen/CodeGenerator.h

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 13:37:07 2016
    13 // Update Count     : 38
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:27:14 2015
     13// Update Count     : 27
    1414//
    1515
     
    1919#include <list>
    2020
    21 #include "SynTree/Declaration.h"
    2221#include "SynTree/SynTree.h"
    2322#include "SynTree/Visitor.h"
    24 
    2523#include "SymTab/Indexer.h"
    2624
     
    4038                virtual void visit( UnionDecl *aggregateDecl );
    4139                virtual void visit( EnumDecl *aggregateDecl );
    42                 virtual void visit( TraitDecl *aggregateDecl );
     40                virtual void visit( ContextDecl *aggregateDecl );
    4341                virtual void visit( TypedefDecl *typeDecl );
    4442                virtual void visit( TypeDecl *typeDecl );
     
    5452                virtual void visit( ApplicationExpr *applicationExpr );
    5553                virtual void visit( UntypedExpr *untypedExpr );
    56                 virtual void visit( RangeExpr * rangeExpr );
    5754                virtual void visit( NameExpr *nameExpr );
    5855                virtual void visit( AddressExpr *addressExpr );
     
    6158                virtual void visit( MemberExpr *memberExpr );
    6259                virtual void visit( VariableExpr *variableExpr );
    63                 virtual void visit( ConstantExpr *constantExpr );
     60                virtual void visit( ConstantExpr *constantExpr ); 
    6461                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 );
    6962                virtual void visit( LogicalExpr *logicalExpr );
    7063                virtual void visit( ConditionalExpr *conditionalExpr );
     
    8679                virtual void visit( ForStmt * );
    8780                virtual void visit( NullStmt * );
    88                 virtual void visit( DeclStmt * );
    89 
    90                 void genAttributes( std::list< Attribute * > & attributes );
     81                virtual void visit( DeclStmt * );
    9182
    9283                template< class Iterator > void genCommaList( Iterator begin, Iterator end );
     
    9586                        Indenter(CodeGenerator &cg) : cg(cg) {}
    9687                        CodeGenerator & cg;
    97                         std::ostream& operator()(std::ostream & os) const;
     88                        std::ostream& operator()(std::ostream & os);
    9889                };
    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 );
    10990          private:
    11091
     
    11394                bool insideFunction;
    11495                std::ostream &output;
    115                 LabelPrinter printLabels;
    11696
    11797                void printDesignators( std::list< Expression * > & );
     98                static std::string printLabels ( std::list < Label > & );
    11899                void handleStorageClass( Declaration *decl );
    119100                void handleAggregate( AggregateDecl *aggDecl );
    120101                void handleTypedef( NamedTypeDecl *namedType );
    121         }; // CodeGenerator
    122102
     103        };
     104       
    123105        template< class Iterator >
    124106        void CodeGenerator::genCommaList( Iterator begin, Iterator end ) {
     
    131113                } // for
    132114        }
    133 
     115 
    134116        inline bool doSemicolon( Declaration* decl ) {
    135117                if ( FunctionDecl* func = dynamic_cast< FunctionDecl* >( decl ) ) {
  • src/CodeGen/FixNames.cc

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

    r242d458 r679864e1  
    1919#include "GenType.h"
    2020#include "CodeGenerator.h"
    21 
    22 #include "SynTree/Declaration.h"
     21#include "SynTree/Visitor.h"
     22#include "SynTree/Type.h"
    2323#include "SynTree/Expression.h"
    24 #include "SynTree/Type.h"
    25 #include "SynTree/Visitor.h"
    2624
    2725namespace CodeGen {
     
    4139                virtual void visit( EnumInstType *enumInst );
    4240                virtual void visit( TypeInstType *typeInst );
    43                 virtual void visit( VarArgsType *varArgsType );
    4441 
    4542          private:
     
    194191        }
    195192
    196         void GenType::visit( VarArgsType *varArgsType ) {
    197                 typeString = "__builtin_va_list " + typeString;
    198                 handleQualifiers( varArgsType );
    199         }
    200 
    201193        void GenType::handleQualifiers( Type *type ) {
    202194                if ( type->get_isConst() ) {
  • src/CodeGen/OperatorTable.cc

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

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

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

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

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 17:36:16 2016
    13 // Update Count     : 33
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Jul 28 13:09:02 2015
     13// Update Count     : 31
    1414//
    1515
     
    1717#define LABEL_FIXER_H
    1818
    19 #include "Common/utility.h"
     19#include "utility.h"
    2020#include "SynTree/SynTree.h"
    2121#include "SynTree/Visitor.h"
    22 #include "SynTree/Label.h"
    2322#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 ); }
    4850                virtual void visit( CaseStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
    4951                virtual void visit( ReturnStmt *stmt ) { visit( (Statement *)stmt ); return Parent::visit( stmt ); }
     
    7274
    7375                  private:
    74                         Label label;
     76                        Label label; 
    7577                        Statement *definition;
    7678                };
    77 
     79                 
    7880                std::map < Label, Entry *> labelTable;
    7981                LabelGenerator *generator;
  • src/ControlStruct/LabelGenerator.cc

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

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

    r242d458 r679864e1  
    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 : 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.
     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.
    2122
    2223#include <cassert>
     
    2627#include "SynTree/Statement.h"
    2728#include "SynTree/Expression.h"
    28 #include "SynTree/Attribute.h"
    2929
    3030namespace ControlStruct {
     
    3333                targetTable = 0;
    3434        }
    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
     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
    4240        void MLEMutator::fixBlock( std::list< Statement * > &kids ) {
    4341                for ( std::list< Statement * >::iterator k = kids.begin(); k != kids.end(); k++ ) {
     
    4644                        if ( ! get_breakLabel().empty() ) {
    4745                                std::list< Statement * >::iterator next = k+1;
    48                                 std::list<Label> ls; ls.push_back( get_breakLabel() );
    49                                 kids.insert( next, new NullStmt( ls ) );
     46                                if ( next == kids.end() ) {
     47                                        std::list<Label> ls; ls.push_back( get_breakLabel() );
     48                                        kids.push_back( new NullStmt( ls ) );
     49                                } else {
     50                                        (*next)->get_labels().push_back( get_breakLabel() );
     51                                }
     52
    5053                                set_breakLabel("");
    5154                        } // if
     
    5760                if ( labeledBlock ) {
    5861                        Label brkLabel = generator->newLabel("blockBreak");
    59                         enclosingControlStructures.push_back( Entry( cmpndStmt, brkLabel ) );
     62                        enclosingBlocks.push_back( Entry( cmpndStmt, brkLabel ) );
    6063                } // if
    6164
    62                 // a child statement may set the break label - if they do, attach it to the next statement
     65                // a child statement may set the break label
     66                // - if they do, attach it to the next statement
    6367                std::list< Statement * > &kids = cmpndStmt->get_kids();
    6468                fixBlock( kids );
    6569
    6670                if ( labeledBlock ) {
    67                         assert( ! enclosingControlStructures.empty() );
    68                         if ( ! enclosingControlStructures.back().useBreakExit().empty() ) {
    69                                 set_breakLabel( enclosingControlStructures.back().useBreakExit() );
    70                         } // if
    71                         enclosingControlStructures.pop_back();
     71                        assert( ! enclosingBlocks.empty() );
     72                        if ( ! enclosingBlocks.back().useBreakExit().empty() ) {
     73                                set_breakLabel( enclosingBlocks.back().useBreakExit() );
     74                        }
     75                        enclosingBlocks.pop_back();
    7276                } // if
    7377
     
    7781        template< typename LoopClass >
    7882        Statement *MLEMutator::handleLoopStmt( LoopClass *loopStmt ) {
    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
     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
    8287                Label brkLabel = generator->newLabel("loopBreak");
    8388                Label contLabel = generator->newLabel("loopContinue");
    84                 enclosingControlStructures.push_back( Entry( loopStmt, brkLabel, contLabel ) );
     89                enclosingLoops.push_back( Entry( loopStmt, brkLabel, contLabel ) );
    8590                loopStmt->set_body ( loopStmt->get_body()->acceptMutator( *this ) );
    8691
    87                 Entry &e = enclosingControlStructures.back();
    8892                // sanity check that the enclosing loops have been popped correctly
     93                Entry &e = enclosingLoops.back();
    8994                assert ( e == loopStmt );
    9095
    91                 // this will take the necessary steps to add definitions of the previous two labels, if they are used.
     96                // this will take the necessary steps to add definitions of the previous
     97                // two labels, if they are used.
    9298                loopStmt->set_body( mutateLoop( loopStmt->get_body(), e ) );
    93                 enclosingControlStructures.pop_back();
     99                enclosingLoops.pop_back();
    94100
    95101                return loopStmt;
     
    103109        }
    104110
    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 
    125111        template< typename SwitchClass >
    126112        Statement *MLEMutator::handleSwitchStmt( SwitchClass *switchStmt ) {
    127                 // generate a label for breaking out of a labeled switch
     113                // generate a label for breaking out of a labeled switch 
    128114                Label brkLabel = generator->newLabel("switchBreak");
    129                 enclosingControlStructures.push_back( Entry(switchStmt, brkLabel) );
    130                 mutateAll( switchStmt->get_statements(), *this );
    131 
    132                 Entry &e = enclosingControlStructures.back();
     115                enclosingSwitches.push_back( Entry(switchStmt, brkLabel) );
     116                mutateAll( switchStmt->get_branches(), *this );
     117
     118                Entry &e = enclosingSwitches.back();
    133119                assert ( e == switchStmt );
    134120
    135121                // only generate break label if labeled break is used
    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() ) ) {
     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() ) ) {
    146132                                std::list<Label> temp; temp.push_back( brkLabel );
    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();
     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();
    153139                return switchStmt;
    154140        }
     
    157143                std::string originalTarget = branchStmt->get_originalTarget();
    158144
    159                 std::list< Entry >::reverse_iterator targetEntry;
    160                 if ( branchStmt->get_type() == BranchStmt::Goto ) {
     145                if ( branchStmt->get_type() == BranchStmt::Goto )
    161146                        return branchStmt;
    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() ) {
     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() )
    181163                        throw SemanticError("The label defined in the exit loop statement does not exist: " + originalTarget );  // shouldn't happen (since that's already checked)
    182                 } // if
     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)
    183176
    184177                // branch error checks, get the appropriate label name and create a goto
     
    186179                switch ( branchStmt->get_type() ) {
    187180                  case BranchStmt::Break:
    188                                 assert( targetEntry->useBreakExit() != "");
    189                                 exitLabel = targetEntry->useBreakExit();
     181                                assert( check->useBreakExit() != "");
     182                                exitLabel = check->useBreakExit();
    190183                                break;
    191184                  case BranchStmt::Continue:
    192                                 assert( targetEntry->useContExit() != "");
    193                                 exitLabel = targetEntry->useContExit();
     185                                assert( check->useContExit() != "");
     186                                exitLabel = check->useContExit();
    194187                                break;
    195188                  default:
     
    197190                } // switch
    198191
    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
     192                return new BranchStmt( std::list<Label>(), exitLabel, BranchStmt::Goto );
    209193        }
    210194
     
    222206                        // continue label goes in the body as the last statement
    223207                        std::list< Label > labels; labels.push_back( e.useContExit() );
    224                         newBody->get_kids().push_back( new NullStmt( labels ) );
    225                 } // if
     208                        newBody->get_kids().push_back( new NullStmt( labels ) );                       
     209                }
    226210
    227211                if ( e.isBreakUsed() ) {
    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
     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                }
    231216
    232217                return newBody;
     
    241226        }
    242227
    243         Statement *MLEMutator::mutate( IfStmt *ifStmt ) {
    244                 return handleIfStmt( ifStmt );
    245         }
    246 
    247228        Statement *MLEMutator::mutate( SwitchStmt *switchStmt ) {
    248229                return handleSwitchStmt( switchStmt );
    249230        }
     231
     232        Statement *MLEMutator::mutate( ChooseStmt *switchStmt ) {
     233                return handleSwitchStmt( switchStmt );         
     234        }
     235
    250236} // namespace ControlStruct
    251237
  • src/ControlStruct/MLEMutator.h

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 17:37:01 2016
    13 // Update Count     : 34
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Jun 03 15:06:36 2015
     13// Update Count     : 25
    1414//
    1515
     
    2020#include <list>
    2121
    22 #include "Common/utility.h"
     22#include "utility.h"
    2323#include "SynTree/SynTree.h"
    2424#include "SynTree/Mutator.h"
    25 #include "SynTree/Label.h"
    2625
    2726#include "LabelGenerator.h"
     
    3029        class MLEMutator : public Mutator {
    3130                class Entry;
    32                 typedef Mutator Parent;
    3331          public:
    3432                MLEMutator( std::map<Label, Statement *> *t, LabelGenerator *gen = 0 ) : targetTable( t ), breakLabel(std::string("")), generator( gen ) {}
    3533                ~MLEMutator();
    3634
    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;
     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 );
    4443
    4544                Statement *mutateLoop( Statement *bodyLoop, Entry &e );
     
    5655                        bool operator!=( const Statement *stmt ) { return ( loop != stmt ); }
    5756
    58                         bool operator==( const Entry &other ) { return ( loop == other.get_controlStructure() ); }
     57                        bool operator==( const Entry &other ) { return ( loop == other.get_loop() ); }
    5958
    60                         Statement *get_controlStructure() const { return loop; }
     59                        Statement *get_loop() const { return loop; }
    6160
    6261                        Label useContExit() { contUsed = true; return contExit; }
     
    6564                        bool isContUsed() const { return contUsed; }
    6665                        bool isBreakUsed() const { return breakUsed; }
     66
    6767                  private:
    6868                        Statement *loop;
     
    7272
    7373                std::map< Label, Statement * > *targetTable;
    74                 std::list< Entry > enclosingControlStructures;
     74                std::list< Entry > enclosingBlocks, enclosingLoops, enclosingSwitches;
    7575                Label breakLabel;
    7676                LabelGenerator *generator;
     
    7979                Statement *handleLoopStmt( LoopClass *loopStmt );
    8080
    81                 template< typename IfClass >
    82                 Statement *handleIfStmt( IfClass *switchStmt );
    83 
    84                 template< typename SwitchClass >
     81                template< typename SwitchClass >
    8582                Statement *handleSwitchStmt( SwitchClass *switchStmt );
    8683
  • src/ControlStruct/Mutate.cc

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 11:39:08 2016
    13 // Update Count     : 9
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Jul 15 14:50:04 2015
     13// Update Count     : 7
    1414//
    1515
     
    2020
    2121#include "Mutate.h"
     22#include "ChooseMutator.h"
    2223#include "LabelFixer.h"
    2324#include "MLEMutator.h"
     25#include "CaseRangeMutator.h"
    2426#include "ForExprMutator.h"
    2527#include "LabelTypeChecker.h"
    2628//#include "ExceptMutator.h"
    2729
    28 #include "Common/utility.h"
     30#include "utility.h"
    2931
    3032#include "SynTree/Visitor.h"
     
    3739                ForExprMutator formut;
    3840
    39                 // normalizes label definitions and generates multi-level exit labels
     41                // normalizes label definitions and generates multi-level
     42                // exit labels
    4043                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
    4150
    4251                //ExceptMutator exc;
     
    4554                mutateAll( translationUnit, formut );
    4655                acceptAll( translationUnit, lfix );
     56                mutateAll( translationUnit, chmut );
     57                mutateAll( translationUnit, ranges );
    4758                //mutateAll( translationUnit, exc );
    4859                //acceptAll( translationUnit, lbl );
  • src/ControlStruct/module.mk

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

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Wed Jun 29 21:43:03 2016
    13 // Update Count     : 296
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Aug 11 16:22:35 2015
     13// Update Count     : 89
    1414//
    1515
    16 #include <algorithm>
    17 #include <iterator>
    18 #include <list>
    19 #include <map>
    2016#include <set>
    2117#include <stack>
    2218#include <string>
    23 #include <utility>
    24 #include <vector>
     19#include <iterator>
     20#include <algorithm>
    2521#include <cassert>
    2622
    2723#include "Box.h"
    28 #include "DeclMutator.h"
    2924#include "PolyMutator.h"
    3025#include "FindFunction.h"
    31 #include "ScopedMap.h"
    32 #include "ScopedSet.h"
    3326#include "ScrubTyVars.h"
    3427
    3528#include "Parser/ParseNode.h"
    3629
    37 #include "SynTree/Constant.h"
    38 #include "SynTree/Declaration.h"
     30#include "SynTree/Type.h"
    3931#include "SynTree/Expression.h"
    4032#include "SynTree/Initializer.h"
     33#include "SynTree/Statement.h"
    4134#include "SynTree/Mutator.h"
    42 #include "SynTree/Statement.h"
    43 #include "SynTree/Type.h"
    44 #include "SynTree/TypeSubstitution.h"
    4535
    4636#include "ResolvExpr/TypeEnvironment.h"
    47 #include "ResolvExpr/TypeMap.h"
    48 #include "ResolvExpr/typeops.h"
    49 
    50 #include "SymTab/Indexer.h"
     37
    5138#include "SymTab/Mangler.h"
    5239
    53 #include "Common/SemanticError.h"
    54 #include "Common/UniqueName.h"
    55 #include "Common/utility.h"
     40#include "SemanticError.h"
     41#include "UniqueName.h"
     42#include "utility.h"
    5643
    5744#include <ext/functional> // temporary
     
    6148                const std::list<Label> noLabels;
    6249
    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
    16450                class Pass1 : public PolyMutator {
    16551                  public:
     
    17258                        virtual Expression *mutate( CommaExpr *commaExpr );
    17359                        virtual Expression *mutate( ConditionalExpr *condExpr );
    174                         virtual Statement * mutate( ReturnStmt *returnStmt );
     60                        virtual Statement *mutate(ReturnStmt *catchStmt);
    17561                        virtual Type *mutate( PointerType *pointerType );
    176                         virtual Type * mutate( FunctionType *functionType );
    177 
     62                        virtual Type *mutate( FunctionType *pointerType );
     63 
    17864                        virtual void doBeginScope();
    17965                        virtual void doEndScope();
    18066                  private:
    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
     67                        void passTypeVars( ApplicationExpr *appExpr, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars );
    18668                        Expression *addRetParam( ApplicationExpr *appExpr, FunctionType *function, Type *retType, 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 );
     69                        Expression *addPolyRetParam( ApplicationExpr *appExpr, FunctionType *function, std::string typeName, std::list< Expression *>::iterator &arg );
    19470                        Expression *applyAdapter( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars );
    19571                        void boxParam( Type *formal, Expression *&arg, const TyVarMap &exprTyVars );
    19672                        void boxParams( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars );
    19773                        void addInferredParams( ApplicationExpr *appExpr, FunctionType *functionType, std::list< Expression *>::iterator &arg, const TyVarMap &tyVars );
    198                         /// Stores assignment operators from assertion list in local map of assignment operations
    199                         void findTypeOps( const std::list< TypeDecl *> &forall );
     74                        void findAssignOps( const std::list< TypeDecl *> &forall );
    20075                        void passAdapters( ApplicationExpr *appExpr, FunctionType *functionType, const TyVarMap &exprTyVars );
    20176                        FunctionDecl *makeAdapter( FunctionType *adaptee, FunctionType *realType, const std::string &mangleName, const TyVarMap &tyVars );
    202                         /// Replaces intrinsic operator functions with their arithmetic desugaring
    20377                        Expression *handleIntrinsics( ApplicationExpr *appExpr );
    204                         /// Inserts a new temporary variable into the current scope with an auto-generated name
    20578                        ObjectDecl *makeTemporary( Type *type );
    20679
    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 
     80                        typedef std::map< std::string, FunctionDecl *> AdapterMap;
     81                        std::map< std::string, DeclarationWithType *> assignOps;
     82                        std::stack< AdapterMap > adapters;
    21783                        DeclarationWithType *retval;
    21884                        bool useRetval;
     
    22086                };
    22187
    222                 /// * Moves polymorphic returns in function types to pointer-type parameters
    223                 /// * adds type size and assertion parameters to parameter lists
    22488                class Pass2 : public PolyMutator {
    22589                  public:
     90                        Pass2();
    22691                        template< typename DeclClass >
    22792                        DeclClass *handleDecl( DeclClass *decl, Type *type );
     
    23297                        virtual Type *mutate( PointerType *pointerType );
    23398                        virtual Type *mutate( FunctionType *funcType );
    234 
    23599                  private:
    236100                        void addAdapters( FunctionType *functionType );
    237 
     101 
    238102                        std::map< UniqueId, std::string > adapterName;
    239103                };
    240104
    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:
     105                class Pass3 : public PolyMutator {
     106                  public:
    275107                        template< typename DeclClass >
    276108                        DeclClass *handleDecl( DeclClass *decl, Type *type );
     
    282114                        virtual Type *mutate( PointerType *pointerType );
    283115                        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 );
    321116                  private:
    322117                };
     
    324119        } // anonymous namespace
    325120
    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
     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
    346127                } // for
    347                 if ( ! errors.isEmpty() ) {
    348                         throw errors;
    349                 } // if
    350128        }
    351129
    352130        void box( std::list< Declaration *>& translationUnit ) {
    353                 LayoutFunctionBuilder layoutBuilder;
    354131                Pass1 pass1;
    355132                Pass2 pass2;
    356                 GenericInstantiator instantiator;
    357                 PolyGenericCalculator polyCalculator;
    358133                Pass3 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 );
     134                mutateAll( translationUnit, pass1 );
     135                mutateAll( translationUnit, pass2 );
     136                mutateAll( translationUnit, pass3 );
    366137        }
    367138
    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 
    567139        ////////////////////////////////////////// Pass1 ////////////////////////////////////////////////////
    568140
    569141        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 
    602142                std::string makeAdapterName( const std::string &mangleName ) {
    603143                        return "_adapter" + mangleName;
    604144                }
    605145
    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;
     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;
    615157                                                } // if
     158                                        } // for
     159                                        if ( ! doTransform && otherTyVars.find( typeInst->get_name() ) != otherTyVars.end() ) {
     160                                                doTransform = true;
    616161                                        } // if
    617162                                } // if
    618163                        } // if
    619                         return 0;
    620                 }
    621 
    622                 /// Returns T if the given declaration is a function with parameters (T*, T) for some TypeInstType T, NULL otherwise
    623                 TypeInstType *isTypeInstPtrValFn( DeclarationWithType *decl ) {
    624                         if ( FunctionType *funType = getFunctionType( decl->get_type() ) ) {
    625                                 if ( funType->get_parameters().size() == 2 ) {
    626                                         if ( PointerType *pointer = dynamic_cast< PointerType *>( funType->get_parameters().front()->get_type() ) ) {
    627                                                 if ( TypeInstType *refType = dynamic_cast< TypeInstType *>( pointer->get_base() ) ) {
    628                                                         if ( TypeInstType *refType2 = dynamic_cast< TypeInstType *>( funType->get_parameters().back()->get_type() ) ) {
    629                                                                 if ( refType->get_name() == refType2->get_name() ) {
    630                                                                         return refType;
     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;
    631190                                                                } // if
    632191                                                        } // if
     
    635194                                } // if
    636195                        } // if
    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();
     196                        return false;
     197                }
     198
     199                void Pass1::findAssignOps( const std::list< TypeDecl *> &forall ) {
     200                        assignOps.clear();
    731201                        for ( std::list< TypeDecl *>::const_iterator i = forall.begin(); i != forall.end(); ++i ) {
    732202                                for ( std::list< DeclarationWithType *>::const_iterator assert = (*i)->get_assertions().begin(); assert != (*i)->get_assertions().end(); ++assert ) {
    733203                                        std::string typeName;
    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;
     204                                        if ( checkAssignment( *assert, typeName ) ) {
     205                                                assignOps[ typeName ] = *assert;
    742206                                        } // if
    743207                                } // for
     
    746210
    747211                DeclarationWithType *Pass1::mutate( FunctionDecl *functionDecl ) {
    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 
     212                        if ( functionDecl->get_statements() ) {
     213                                TyVarMap oldtyVars = scopeTyVars;
    775214                                DeclarationWithType *oldRetval = retval;
    776215                                bool oldUseRetval = useRetval;
    777 
    778                                 // process polymorphic return value
     216       
    779217                                retval = 0;
    780                                 if ( isPolyRet( functionDecl->get_functionType() ) && functionDecl->get_linkage() == LinkageSpec::Cforall ) {
     218                                std::string typeName;
     219                                if ( isPolyRet( functionDecl->get_functionType(), typeName ) && functionDecl->get_linkage() == LinkageSpec::Cforall ) {
    781220                                        retval = functionDecl->get_functionType()->get_returnVals().front();
    782 
     221 
    783222                                        // give names to unnamed return values
    784223                                        if ( retval->get_name() == "" ) {
     
    787226                                        } // if
    788227                                } // if
    789 
    790                                 FunctionType *functionType = functionDecl->get_functionType();
     228       
     229                                scopeTyVars.clear();
     230///     std::cerr << "clear\n";
    791231                                makeTyVarMap( functionDecl->get_functionType(), scopeTyVars );
    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 
     232                                findAssignOps( functionDecl->get_functionType()->get_forall() );
    813233                                functionDecl->set_statements( functionDecl->get_statements()->acceptMutator( *this ) );
    814 
    815                                 scopeTyVars.endScope();
    816                                 assignOps.endScope();
    817                                 ctorOps.endScope();
    818                                 copyOps.endScope();
    819                                 dtorOps.endScope();
     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";
    820241                                retval = oldRetval;
    821242                                useRetval = oldUseRetval;
    822                                 doEndScope();
     243                                // doEndScope();
    823244                        } // if
    824245                        return functionDecl;
     
    826247
    827248                TypeDecl *Pass1::mutate( TypeDecl *typeDecl ) {
     249///     std::cerr << "add " << typeDecl->get_name() << "\n";
    828250                        scopeTyVars[ typeDecl->get_name() ] = typeDecl->get_kind();
    829251                        return Mutator::mutate( typeDecl );
     
    850272                }
    851273
    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
     274                void Pass1::passTypeVars( ApplicationExpr *appExpr, std::list< Expression *>::iterator &arg, const TyVarMap &exprTyVars ) {
    880275                        for ( TyVarMap::const_iterator tyParm = exprTyVars.begin(); tyParm != exprTyVars.end(); ++tyParm ) {
    881276                                ResolvExpr::EqvClass eqvClass;
     
    886281                                                arg = appExpr->get_args().insert( arg, new SizeofExpr( concrete->clone() ) );
    887282                                                arg++;
    888                                                 arg = appExpr->get_args().insert( arg, new AlignofExpr( concrete->clone() ) );
    889                                                 arg++;
    890283                                        } else {
    891                                                 /// xxx - should this be an assertion?
    892                                                 throw SemanticError( "unbound type variable: " + tyParm->first + " in application ", appExpr );
     284                                                throw SemanticError( "unbound type variable in application ", appExpr );
    893285                                        } // if
    894286                                } // if
    895287                        } // 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                         }
    918288                }
    919289
     
    924294                }
    925295
     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
     302                                } // 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
    926313                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 );
    969                                 } // if
    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 ) {
     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;
    988337                        assert( env );
    989                         Type *concrete = replaceWithConcrete( appExpr, polyType );
    990                         // add out-parameter for return value
     338                        Type *concrete = env->lookup( typeName );
     339                        if ( concrete == 0 ) {
     340                                throw SemanticError( "Unbound type variable " + typeName + " in ", appExpr );
     341                        } // if
    991342                        return addRetParam( appExpr, function, concrete, arg );
    992343                }
     
    994345                Expression *Pass1::applyAdapter( ApplicationExpr *appExpr, FunctionType *function, std::list< Expression *>::iterator &arg, const TyVarMap &tyVars ) {
    995346                        Expression *ret = appExpr;
    996                         if ( ! function->get_returnVals().empty() && isPolyType( function->get_returnVals().front()->get_type(), tyVars ) ) {
     347                        if ( ! function->get_returnVals().empty() && isPolyVal( function->get_returnVals().front()->get_type(), tyVars ) ) {
    997348                                ret = addRetParam( appExpr, function, function->get_returnVals().front()->get_type(), arg );
    998349                        } // if
    999                         std::string mangleName = mangleAdapterName( function, tyVars );
     350                        std::string mangleName = SymTab::Mangler::mangle( function );
    1000351                        std::string adapterName = makeAdapterName( mangleName );
    1001352
    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 ) );
     353                        appExpr->get_args().push_front( appExpr->get_function() );
    1005354                        appExpr->set_function( new NameExpr( adapterName ) );
    1006 
     355 
    1007356                        return ret;
    1008357                }
     
    1010359                void Pass1::boxParam( Type *param, Expression *&arg, const TyVarMap &exprTyVars ) {
    1011360                        assert( ! arg->get_results().empty() );
    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!
     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!
    1015366                                        return;
    1016367                                } else if ( arg->get_results().front()->get_isLvalue() ) {
    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                                         }
     368                                        // VariableExpr and MemberExpr are lvalues
     369                                        arg = new AddressExpr( arg );
    1024370                                } else {
    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 );
     371                                        ObjectDecl *newObj = new ObjectDecl( tempNamer.newName(), DeclarationNode::NoStorageClass, LinkageSpec::C, 0, arg->get_results().front()->clone(), 0 );
    1029372                                        newObj->get_type()->get_qualifiers() = Type::Qualifiers(); // TODO: is this right???
    1030373                                        stmtsToAdd.push_back( new DeclStmt( noLabels, newObj ) );
     
    1036379                                } // if
    1037380                        } // if
    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.
     381///   }
     382                }
     383
    1043384                void addCast( Expression *&actual, Type *formal, const TyVarMap &tyVars ) {
    1044                         Type * newType = formal->clone();
    1045                         if ( getFunctionType( newType ) ) {
    1046                                 newType = ScrubTyVars::scrub( newType, 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() ) {
    1047391                                actual = new CastExpr( actual, newType );
     392                        } else {
     393                                delete newType;
    1048394                        } // if
    1049395                }
    1050396
    1051397                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 );
    1052400                        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 );
    1053405                                assert( arg != appExpr->get_args().end() );
    1054406                                addCast( *arg, (*param)->get_type(), exprTyVars );
     
    1062414                                for ( std::list< DeclarationWithType *>::iterator assert = (*tyVar)->get_assertions().begin(); assert != (*tyVar)->get_assertions().end(); ++assert ) {
    1063415                                        InferredParams::const_iterator inferParam = appExpr->get_inferParams().find( (*assert)->get_uniqueId() );
    1064                                         assert( inferParam != appExpr->get_inferParams().end() && "NOTE: Explicit casts of polymorphic functions to compatible monomorphic functions are currently unsupported" );
     416                                        assert( inferParam != appExpr->get_inferParams().end() );
    1065417                                        Expression *newExpr = inferParam->second.expr->clone();
    1066418                                        addCast( newExpr, (*assert)->get_type(), tyVars );
     
    1085437                        // actually make the adapter type
    1086438                        FunctionType *adapter = adaptee->clone();
    1087                         if ( ! adapter->get_returnVals().empty() && isPolyType( adapter->get_returnVals().front()->get_type(), tyVars ) ) {
     439                        if ( ! adapter->get_returnVals().empty() && isPolyVal( adapter->get_returnVals().front()->get_type(), tyVars ) ) {
    1088440                                makeRetParm( adapter );
    1089441                        } // if
     
    1095447                        assert( param );
    1096448                        assert( arg );
    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
     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///     }
    1104464                        } // if
    1105465                        return new VariableExpr( param );
     
    1116476                        } // for
    1117477                }
     478
     479
    1118480
    1119481                FunctionDecl *Pass1::makeAdapter( FunctionType *adaptee, FunctionType *realType, const std::string &mangleName, const TyVarMap &tyVars ) {
     
    1124486                        ApplicationExpr *adapteeApp = new ApplicationExpr( new CastExpr( new VariableExpr( adapteeDecl ), new PointerType( Type::Qualifiers(), realType ) ) );
    1125487                        Statement *bodyStmt;
    1126 
     488 
    1127489                        std::list< TypeDecl *>::iterator tyArg = realType->get_forall().begin();
    1128490                        std::list< TypeDecl *>::iterator tyParam = adapterType->get_forall().begin();
     
    1138500                                } // for
    1139501                        } // for
    1140 
     502 
    1141503                        std::list< DeclarationWithType *>::iterator arg = realType->get_parameters().begin();
    1142504                        std::list< DeclarationWithType *>::iterator param = adapterType->get_parameters().begin();
    1143505                        std::list< DeclarationWithType *>::iterator realParam = adaptee->get_parameters().begin();
    1144                         param++;                // skip adaptee parameter in the adapter type
     506                        param++;                // skip adaptee parameter
    1145507                        if ( realType->get_returnVals().empty() ) {
    1146                                 // void return
    1147508                                addAdapterParams( adapteeApp, arg, param, adapterType->get_parameters().end(), realParam, tyVars );
    1148509                                bodyStmt = new ExprStmt( noLabels, adapteeApp );
    1149                         } else if ( isPolyType( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
    1150                                 // return type T
     510                        } else if ( isPolyVal( adaptee->get_returnVals().front()->get_type(), tyVars ) ) {
    1151511                                if ( (*param)->get_name() == "" ) {
    1152512                                        (*param)->set_name( "_ret" );
     
    1184544                        } // for
    1185545
    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
     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
    1188549                        std::set< std::string > adaptersDone;
    1189550
     
    1193554                                std::string mangleName = SymTab::Mangler::mangle( realFunction );
    1194555
    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.
     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.
    1197558                                if ( adaptersDone.find( mangleName ) == adaptersDone.end() ) {
     559                                        std::string mangleName = SymTab::Mangler::mangle( realFunction );
    1198560                                        adaptersDone.insert( adaptersDone.begin(), mangleName );
    1199 
    1200                                         // apply substitution to type variables to figure out what the adapter's type should look like
     561                                       
     562                                        // apply substitution to type variables to figure out what the
     563                                        // adapter's type should look like
    1201564                                        assert( env );
    1202565                                        env->apply( realFunction );
    1203566                                        mangleName = SymTab::Mangler::mangle( realFunction );
    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 ) );
     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 ) );
    1214595                                        } // 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 ) );
    1219596                                } // if
    1220597                        } // for
    1221                 } // passAdapters
    1222 
    1223                 Expression *makeIncrDecrExpr( ApplicationExpr *appExpr, Type *polyType, bool isIncr ) {
     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 ) {
    1224627                        NameExpr *opExpr;
    1225628                        if ( isIncr ) {
     
    1234637                                addAssign->get_args().push_back( appExpr->get_args().front() );
    1235638                        } // if
    1236                         addAssign->get_args().push_back( new NameExpr( sizeofName( mangleType( polyType ) ) ) );
     639                        addAssign->get_args().push_back( new NameExpr( polyName ) );
    1237640                        addAssign->get_results().front() = appExpr->get_results().front()->clone();
    1238641                        if ( appExpr->get_env() ) {
     
    1251654                                                assert( ! appExpr->get_results().empty() );
    1252655                                                assert( appExpr->get_args().size() == 2 );
    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
     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 );
    1256659                                                UntypedExpr *ret = 0;
    1257                                                 if ( baseType1 || baseType2 ) { // one of the arguments is a polymorphic pointer
     660                                                if ( typeInst1 || typeInst2 ) {
    1258661                                                        ret = new UntypedExpr( new NameExpr( "?+?" ) );
    1259662                                                } // if
    1260                                                 if ( baseType1 ) {
     663                                                if ( typeInst1 ) {
    1261664                                                        UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
    1262665                                                        multiply->get_args().push_back( appExpr->get_args().back() );
    1263                                                         multiply->get_args().push_back( new SizeofExpr( baseType1->clone() ) );
     666                                                        multiply->get_args().push_back( new NameExpr( typeInst1->get_name() ) );
    1264667                                                        ret->get_args().push_back( appExpr->get_args().front() );
    1265668                                                        ret->get_args().push_back( multiply );
    1266                                                 } else if ( baseType2 ) {
     669                                                } else if ( typeInst2 ) {
    1267670                                                        UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
    1268671                                                        multiply->get_args().push_back( appExpr->get_args().front() );
    1269                                                         multiply->get_args().push_back( new SizeofExpr( baseType2->clone() ) );
     672                                                        multiply->get_args().push_back( new NameExpr( typeInst2->get_name() ) );
    1270673                                                        ret->get_args().push_back( multiply );
    1271674                                                        ret->get_args().push_back( appExpr->get_args().back() );
    1272675                                                } // if
    1273                                                 if ( baseType1 || baseType2 ) {
     676                                                if ( typeInst1 || typeInst2 ) {
    1274677                                                        ret->get_results().push_front( appExpr->get_results().front()->clone() );
    1275678                                                        if ( appExpr->get_env() ) {
     
    1284687                                                assert( ! appExpr->get_results().empty() );
    1285688                                                assert( ! appExpr->get_args().empty() );
    1286                                                 if ( isPolyType( appExpr->get_results().front(), scopeTyVars, env ) ) {
     689                                                if ( isPolyType( appExpr->get_results().front(), env, scopeTyVars ) ) {
    1287690                                                        Expression *ret = appExpr->get_args().front();
    1288691                                                        delete ret->get_results().front();
     
    1299702                                                assert( ! appExpr->get_results().empty() );
    1300703                                                assert( appExpr->get_args().size() == 1 );
    1301                                                 if ( Type *baseType = isPolyPtr( appExpr->get_results().front(), scopeTyVars, env ) ) {
     704                                                if ( TypeInstType *typeInst = isPolyPtr( appExpr->get_results().front(), env, scopeTyVars ) ) {
    1302705                                                        Type *tempType = appExpr->get_results().front()->clone();
    1303706                                                        if ( env ) {
     
    1313716                                                                assignExpr->get_args().push_back( appExpr->get_args().front()->clone() );
    1314717                                                        } // if
    1315                                                         CommaExpr *firstComma = new CommaExpr( assignExpr, makeIncrDecrExpr( appExpr, baseType, varExpr->get_var()->get_name() == "?++" ) );
     718                                                        CommaExpr *firstComma = new CommaExpr( assignExpr, makeIncrDecrExpr( appExpr, typeInst->get_name(), varExpr->get_var()->get_name() == "?++" ) );
    1316719                                                        return new CommaExpr( firstComma, tempExpr );
    1317720                                                } // if
     
    1319722                                                assert( ! appExpr->get_results().empty() );
    1320723                                                assert( appExpr->get_args().size() == 1 );
    1321                                                 if ( Type *baseType = isPolyPtr( appExpr->get_results().front(), scopeTyVars, env ) ) {
    1322                                                         return makeIncrDecrExpr( appExpr, baseType, varExpr->get_var()->get_name() == "++?" );
     724                                                if ( TypeInstType *typeInst = isPolyPtr( appExpr->get_results().front(), env, scopeTyVars ) ) {
     725                                                        return makeIncrDecrExpr( appExpr, typeInst->get_name(), varExpr->get_var()->get_name() == "++?" );
    1323726                                                } // if
    1324727                                        } else if ( varExpr->get_var()->get_name() == "?+?" || varExpr->get_var()->get_name() == "?-?" ) {
    1325728                                                assert( ! appExpr->get_results().empty() );
    1326729                                                assert( appExpr->get_args().size() == 2 );
    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 ) {
     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 ) {
    1330733                                                        UntypedExpr *divide = new UntypedExpr( new NameExpr( "?/?" ) );
    1331734                                                        divide->get_args().push_back( appExpr );
    1332                                                         divide->get_args().push_back( new SizeofExpr( baseType1->clone() ) );
     735                                                        divide->get_args().push_back( new NameExpr( typeInst1->get_name() ) );
    1333736                                                        divide->get_results().push_front( appExpr->get_results().front()->clone() );
    1334737                                                        if ( appExpr->get_env() ) {
     
    1337740                                                        } // if
    1338741                                                        return divide;
    1339                                                 } else if ( baseType1 ) {
     742                                                } else if ( typeInst1 ) {
    1340743                                                        UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
    1341744                                                        multiply->get_args().push_back( appExpr->get_args().back() );
    1342                                                         multiply->get_args().push_back( new SizeofExpr( baseType1->clone() ) );
     745                                                        multiply->get_args().push_back( new NameExpr( typeInst1->get_name() ) );
    1343746                                                        appExpr->get_args().back() = multiply;
    1344                                                 } else if ( baseType2 ) {
     747                                                } else if ( typeInst2 ) {
    1345748                                                        UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
    1346749                                                        multiply->get_args().push_back( appExpr->get_args().front() );
    1347                                                         multiply->get_args().push_back( new SizeofExpr( baseType2->clone() ) );
     750                                                        multiply->get_args().push_back( new NameExpr( typeInst2->get_name() ) );
    1348751                                                        appExpr->get_args().front() = multiply;
    1349752                                                } // if
     
    1351754                                                assert( ! appExpr->get_results().empty() );
    1352755                                                assert( appExpr->get_args().size() == 2 );
    1353                                                 Type *baseType = isPolyPtr( appExpr->get_results().front(), scopeTyVars, env );
    1354                                                 if ( baseType ) {
     756                                                TypeInstType *typeInst = isPolyPtr( appExpr->get_results().front(), env, scopeTyVars );
     757                                                if ( typeInst ) {
    1355758                                                        UntypedExpr *multiply = new UntypedExpr( new NameExpr( "?*?" ) );
    1356759                                                        multiply->get_args().push_back( appExpr->get_args().back() );
    1357                                                         multiply->get_args().push_back( new SizeofExpr( baseType->clone() ) );
     760                                                        multiply->get_args().push_back( new NameExpr( typeInst->get_name() ) );
    1358761                                                        appExpr->get_args().back() = multiply;
    1359762                                                } // if
     
    1366769
    1367770                Expression *Pass1::mutate( ApplicationExpr *appExpr ) {
    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";
     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";
    1373776                        bool oldUseRetval = useRetval;
    1374777                        useRetval = false;
     
    1376779                        mutateAll( appExpr->get_args(), *this );
    1377780                        useRetval = oldUseRetval;
    1378 
     781 
    1379782                        assert( ! appExpr->get_function()->get_results().empty() );
    1380783                        PointerType *pointer = dynamic_cast< PointerType *>( appExpr->get_function()->get_results().front() );
     
    1382785                        FunctionType *function = dynamic_cast< FunctionType *>( pointer->get_base() );
    1383786                        assert( function );
    1384 
     787 
    1385788                        if ( Expression *newExpr = handleIntrinsics( appExpr ) ) {
    1386789                                return newExpr;
    1387790                        } // if
    1388 
     791 
    1389792                        Expression *ret = appExpr;
    1390 
     793 
    1391794                        std::list< Expression *>::iterator arg = appExpr->get_args().begin();
    1392795                        std::list< Expression *>::iterator paramBegin = appExpr->get_args().begin();
    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 );
     796 
     797                        std::string typeName;
     798                        if ( isPolyRet( function, typeName ) ) {
     799                                ret = addPolyRetParam( appExpr, function, typeName, arg );
    1400800                        } else if ( needsAdapter( function, scopeTyVars ) ) {
    1401                                 // std::cerr << "needs adapter: ";
    1402                                 // printTyVarMap( std::cerr, scopeTyVars );
    1403                                 // std::cerr << *env << std::endl;
     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";
    1404806                                // change the application so it calls the adapter rather than the passed function
    1405807                                ret = applyAdapter( appExpr, function, arg, scopeTyVars );
    1406808                        } // if
    1407809                        arg = appExpr->get_args().begin();
    1408 
    1409                         passTypeVars( appExpr, polyRetType, arg, exprTyVars );
     810 
     811                        TyVarMap exprTyVars;
     812                        makeTyVarMap( function, exprTyVars );
     813 
     814                        passTypeVars( appExpr, arg, exprTyVars );
    1410815                        addInferredParams( appExpr, function, arg, exprTyVars );
    1411816
    1412817                        arg = paramBegin;
    1413 
     818 
    1414819                        boxParams( appExpr, function, arg, exprTyVars );
     820
    1415821                        passAdapters( appExpr, function, exprTyVars );
    1416822
     
    1419825
    1420826                Expression *Pass1::mutate( UntypedExpr *expr ) {
    1421                         if ( ! expr->get_results().empty() && isPolyType( expr->get_results().front(), scopeTyVars, env ) ) {
     827                        if ( ! expr->get_results().empty() && isPolyType( expr->get_results().front(), env, scopeTyVars ) ) {
    1422828                                if ( NameExpr *name = dynamic_cast< NameExpr *>( expr->get_function() ) ) {
    1423829                                        if ( name->get_name() == "*?" ) {
     
    1434840                Expression *Pass1::mutate( AddressExpr *addrExpr ) {
    1435841                        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 );
    1457842                        addrExpr->set_arg( mutateExpression( addrExpr->get_arg() ) );
    1458                         if ( polytype || needs ) {
     843                        if ( isPolyType( addrExpr->get_arg()->get_results().front(), env, scopeTyVars ) ) {
    1459844                                Expression *ret = addrExpr->get_arg();
    1460845                                delete ret->get_results().front();
     
    1468853                }
    1469854
    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;
     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() );
     871                                        if ( assignIter == assignOps.end() ) {
     872                                                throw SemanticError( "Attempt to return dtype or ftype object in ", retStmt->get_expr() );
     873                                        } // 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 );
    1486886                        } 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() );
    1516                                         if ( assignIter == assignOps.end() ) {
    1517                                                 throw SemanticError( "Attempt to return dtype or ftype object in ", returnStmt->get_expr() );
    1518                                         } // if
    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 );
    1589                         } else {
    1590                                 returnStmt->set_expr( mutateExpression( returnStmt->get_expr() ) );
    1591                         } // if
    1592                         return returnStmt;
     887                                retStmt->set_expr( mutateExpression( retStmt->get_expr() ) );
     888                        } // if
     889                        return retStmt;
    1593890                }
    1594891
    1595892                Type * Pass1::mutate( PointerType *pointerType ) {
    1596                         scopeTyVars.beginScope();
     893                        TyVarMap oldtyVars = scopeTyVars;
    1597894                        makeTyVarMap( pointerType, scopeTyVars );
    1598 
     895 
    1599896                        Type *ret = Mutator::mutate( pointerType );
    1600 
    1601                         scopeTyVars.endScope();
     897 
     898                        scopeTyVars = oldtyVars;
    1602899                        return ret;
    1603900                }
    1604901
    1605902                Type * Pass1::mutate( FunctionType *functionType ) {
    1606                         scopeTyVars.beginScope();
     903                        TyVarMap oldtyVars = scopeTyVars;
    1607904                        makeTyVarMap( functionType, scopeTyVars );
    1608 
     905 
    1609906                        Type *ret = Mutator::mutate( functionType );
    1610 
    1611                         scopeTyVars.endScope();
     907 
     908                        scopeTyVars = oldtyVars;
    1612909                        return ret;
    1613910                }
    1614911
    1615912                void Pass1::doBeginScope() {
    1616                         adapters.beginScope();
    1617                         scopedAssignOps.beginScope();
    1618                         scopedCtorOps.beginScope();
    1619                         scopedCopyOps.beginScope();
    1620                         scopedDtorOps.beginScope();
     913                        // actually, maybe this could (should?) push
     914                        // a copy of the current map
     915                        adapters.push(AdapterMap());
    1621916                }
    1622917
    1623918                void Pass1::doEndScope() {
    1624                         adapters.endScope();
    1625                         scopedAssignOps.endScope();
    1626                         scopedCtorOps.endScope();
    1627                         scopedCopyOps.endScope();
    1628                         scopedDtorOps.endScope();
     919                        adapters.pop();
    1629920                }
    1630921
    1631922////////////////////////////////////////// Pass2 ////////////////////////////////////////////////////
     923
     924                Pass2::Pass2() {}
    1632925
    1633926                void Pass2::addAdapters( FunctionType *functionType ) {
     
    1641934                        std::set< std::string > adaptersDone;
    1642935                        for ( std::list< FunctionType *>::iterator funType = functions.begin(); funType != functions.end(); ++funType ) {
    1643                                 std::string mangleName = mangleAdapterName( *funType, scopeTyVars );
     936                                std::string mangleName = SymTab::Mangler::mangle( *funType );
    1644937                                if ( adaptersDone.find( mangleName ) == adaptersDone.end() ) {
    1645938                                        std::string adapterName = makeAdapterName( mangleName );
     
    1648941                                }
    1649942                        }
    1650 //  deleteAll( functions );
     943///  deleteAll( functions );
    1651944                }
    1652945
     
    1680973
    1681974                Type * Pass2::mutate( PointerType *pointerType ) {
    1682                         scopeTyVars.beginScope();
     975                        TyVarMap oldtyVars = scopeTyVars;
    1683976                        makeTyVarMap( pointerType, scopeTyVars );
    1684 
     977 
    1685978                        Type *ret = Mutator::mutate( pointerType );
    1686 
    1687                         scopeTyVars.endScope();
     979 
     980                        scopeTyVars = oldtyVars;
    1688981                        return ret;
    1689982                }
    1690983
    1691984                Type *Pass2::mutate( FunctionType *funcType ) {
    1692                         scopeTyVars.beginScope();
     985                        TyVarMap oldtyVars = scopeTyVars;
    1693986                        makeTyVarMap( funcType, scopeTyVars );
    1694 
    1695                         // move polymorphic return type to parameter list
    1696                         if ( isPolyRet( funcType ) ) {
     987 
     988                        std::string typeName;
     989                        if ( isPolyRet( funcType, typeName ) ) {
    1697990                                DeclarationWithType *ret = funcType->get_returnVals().front();
    1698991                                ret->set_type( new PointerType( Type::Qualifiers(), ret->get_type() ) );
     
    1700993                                funcType->get_returnVals().pop_front();
    1701994                        }
    1702 
    1703                         // add size/align and assertions for type parameters to parameter list
     995 
    1704996                        std::list< DeclarationWithType *>::iterator last = funcType->get_parameters().begin();
    1705997                        std::list< DeclarationWithType *> inferredParams;
    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 );
     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 );
    17091000                        for ( std::list< TypeDecl *>::const_iterator tyParm = funcType->get_forall().begin(); tyParm != funcType->get_forall().end(); ++tyParm ) {
    1710                                 ObjectDecl *sizeParm, *alignParm;
    1711                                 // add all size and alignment parameters to parameter list
     1001                                ObjectDecl *thisParm;
    17121002                                if ( (*tyParm)->get_kind() == TypeDecl::Any ) {
    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 );
     1003                                        thisParm = newObj->clone();
     1004                                        thisParm->set_name( (*tyParm)->get_name() );
     1005                                        last = funcType->get_parameters().insert( last, thisParm );
    17241006                                        ++last;
    17251007                                }
    1726                                 // move all assertions into parameter list
    17271008                                for ( std::list< DeclarationWithType *>::iterator assert = (*tyParm)->get_assertions().begin(); assert != (*tyParm)->get_assertions().end(); ++assert ) {
    1728 //      *assert = (*assert)->acceptMutator( *this );
     1009///      *assert = (*assert)->acceptMutator( *this );
    17291010                                        inferredParams.push_back( *assert );
    17301011                                }
    17311012                                (*tyParm)->get_assertions().clear();
    17321013                        }
    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
     1014                        delete newObj;
    17681015                        funcType->get_parameters().splice( last, inferredParams );
    17691016                        addAdapters( funcType );
    17701017                        mutateAll( funcType->get_returnVals(), *this );
    17711018                        mutateAll( funcType->get_parameters(), *this );
    1772 
    1773                         scopeTyVars.endScope();
     1019 
     1020                        scopeTyVars = oldtyVars;
    17741021                        return funcType;
    17751022                }
    17761023
    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                 }
     1024////////////////////////////////////////// Pass3 ////////////////////////////////////////////////////
    19761025
    19771026                template< typename DeclClass >
    1978                 DeclClass * PolyGenericCalculator::handleDecl( DeclClass *decl, Type *type ) {
    1979                         beginTypeScope( type );
    1980                         knownLayouts.beginScope();
    1981                         knownOffsets.beginScope();
    1982 
     1027                DeclClass * Pass3::handleDecl( DeclClass *decl, Type *type ) {
     1028                        TyVarMap oldtyVars = scopeTyVars;
     1029                        makeTyVarMap( type, scopeTyVars );
     1030 
    19831031                        DeclClass *ret = static_cast< DeclClass *>( Mutator::mutate( decl ) );
    1984 
    1985                         knownOffsets.endScope();
    1986                         knownLayouts.endScope();
    1987                         endTypeScope();
     1032                        ScrubTyVars::scrub( decl, scopeTyVars );
     1033
     1034                        scopeTyVars = oldtyVars;
    19881035                        return ret;
    19891036                }
    19901037
    1991                 ObjectDecl * PolyGenericCalculator::mutate( ObjectDecl *objectDecl ) {
     1038                ObjectDecl * Pass3::mutate( ObjectDecl *objectDecl ) {
    19921039                        return handleDecl( objectDecl, objectDecl->get_type() );
    19931040                }
    19941041
    1995                 DeclarationWithType * PolyGenericCalculator::mutate( FunctionDecl *functionDecl ) {
     1042                DeclarationWithType * Pass3::mutate( FunctionDecl *functionDecl ) {
    19961043                        return handleDecl( functionDecl, functionDecl->get_functionType() );
    19971044                }
    19981045
    1999                 TypedefDecl * PolyGenericCalculator::mutate( TypedefDecl *typedefDecl ) {
     1046                TypedefDecl * Pass3::mutate( TypedefDecl *typedefDecl ) {
    20001047                        return handleDecl( typedefDecl, typedefDecl->get_base() );
    20011048                }
    20021049
    2003                 TypeDecl * PolyGenericCalculator::mutate( TypeDecl *typeDecl ) {
     1050                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 );
     1058
    20041059                        scopeTyVars[ typeDecl->get_name() ] = typeDecl->get_kind();
    20051060                        return Mutator::mutate( typeDecl );
    20061061                }
    20071062
    2008                 Type * PolyGenericCalculator::mutate( PointerType *pointerType ) {
    2009                         beginTypeScope( pointerType );
    2010 
     1063                Type * Pass3::mutate( PointerType *pointerType ) {
     1064                        TyVarMap oldtyVars = scopeTyVars;
     1065                        makeTyVarMap( pointerType, scopeTyVars );
     1066 
    20111067                        Type *ret = Mutator::mutate( pointerType );
    2012 
    2013                         endTypeScope();
     1068 
     1069                        scopeTyVars = oldtyVars;
    20141070                        return ret;
    20151071                }
    20161072
    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();
     1073                Type * Pass3::mutate( FunctionType *functionType ) {
     1074                        TyVarMap oldtyVars = scopeTyVars;
     1075                        makeTyVarMap( functionType, scopeTyVars );
     1076 
     1077                        Type *ret = Mutator::mutate( functionType );
     1078 
     1079                        scopeTyVars = oldtyVars;
    20321080                        return ret;
    20331081                }
    20341082
    2035                 Statement *PolyGenericCalculator::mutate( DeclStmt *declStmt ) {
     1083                Statement *Pass3::mutate( DeclStmt *declStmt ) {
    20361084                        if ( ObjectDecl *objectDecl = dynamic_cast< ObjectDecl *>( declStmt->get_decl() ) ) {
    2037                                 if ( findGeneric( objectDecl->get_type() ) ) {
     1085                                if ( isPolyVal( objectDecl->get_type(), scopeTyVars ) ) {
    20381086                                        // change initialization of a polymorphic value object
    20391087                                        // to allocate storage with alloca
    2040                                         Type *declType = objectDecl->get_type();
     1088                                        TypeInstType *typeInst = dynamic_cast< TypeInstType *>( objectDecl->get_type() );
     1089                                        assert( typeInst );
    20411090                                        UntypedExpr *alloc = new UntypedExpr( new NameExpr( "__builtin_alloca" ) );
    2042                                         alloc->get_args().push_back( new NameExpr( sizeofName( mangleType( declType ) ) ) );
     1091                                        alloc->get_args().push_back( new NameExpr( typeInst->get_name() ) );
    20431092
    20441093                                        delete objectDecl->get_init();
    20451094
    20461095                                        std::list<Expression*> designators;
    2047                                         objectDecl->set_init( new SingleInit( alloc, designators, false ) ); // not constructed
     1096                                        objectDecl->set_init( new SingleInit( alloc, designators ) );
    20481097                                }
    20491098                        }
    20501099                        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();
    2348                 }
    2349 
    2350 ////////////////////////////////////////// Pass3 ////////////////////////////////////////////////////
    2351 
    2352                 template< typename DeclClass >
    2353                 DeclClass * Pass3::handleDecl( DeclClass *decl, Type *type ) {
    2354                         scopeTyVars.beginScope();
    2355                         makeTyVarMap( type, scopeTyVars );
    2356 
    2357                         DeclClass *ret = static_cast< DeclClass *>( Mutator::mutate( decl ) );
    2358                         ScrubTyVars::scrub( decl, scopeTyVars );
    2359 
    2360                         scopeTyVars.endScope();
    2361                         return ret;
    2362                 }
    2363 
    2364                 ObjectDecl * Pass3::mutate( ObjectDecl *objectDecl ) {
    2365                         return handleDecl( objectDecl, objectDecl->get_type() );
    2366                 }
    2367 
    2368                 DeclarationWithType * Pass3::mutate( FunctionDecl *functionDecl ) {
    2369                         return handleDecl( functionDecl, functionDecl->get_functionType() );
    2370                 }
    2371 
    2372                 TypedefDecl * Pass3::mutate( TypedefDecl *typedefDecl ) {
    2373                         return handleDecl( typedefDecl, typedefDecl->get_base() );
    2374                 }
    2375 
    2376                 TypeDecl * Pass3::mutate( TypeDecl *typeDecl ) {
    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 );
    2384 
    2385                         scopeTyVars[ typeDecl->get_name() ] = typeDecl->get_kind();
    2386                         return Mutator::mutate( typeDecl );
    2387                 }
    2388 
    2389                 Type * Pass3::mutate( PointerType *pointerType ) {
    2390                         scopeTyVars.beginScope();
    2391                         makeTyVarMap( pointerType, scopeTyVars );
    2392 
    2393                         Type *ret = Mutator::mutate( pointerType );
    2394 
    2395                         scopeTyVars.endScope();
    2396                         return ret;
    2397                 }
    2398 
    2399                 Type * Pass3::mutate( FunctionType *functionType ) {
    2400                         scopeTyVars.beginScope();
    2401                         makeTyVarMap( functionType, scopeTyVars );
    2402 
    2403                         Type *ret = Mutator::mutate( functionType );
    2404 
    2405                         scopeTyVars.endScope();
    2406                         return ret;
    24071100                }
    24081101        } // anonymous namespace
  • src/GenPoly/Box.h

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

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // CopyParams.cc --
     7// CopyParams.cc -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
     11// Last Modified By : Peter A. Buhr
    1212// Last Modified On : Tue May 19 07:33:31 2015
    1313// Update Count     : 1
     
    2323#include "SynTree/Statement.h"
    2424#include "SynTree/Visitor.h"
    25 #include "Common/UniqueName.h"
     25#include "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() == "?=?" );
    6059                                                assignOps[ (*tyVar)->get_name() ] = (*tyVar)->get_assertions().front();
    6160                                        } // if
  • src/GenPoly/FindFunction.cc

    r242d458 r679864e1  
    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 : Rob Schluntz
    12 // Last Modified On : Fri Feb 05 12:22:20 2016
    13 // Update Count     : 6
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue May 19 07:35:48 2015
     13// Update Count     : 1
    1414//
    1515
     
    1919#include "SynTree/Visitor.h"
    2020
    21 #include "ScrubTyVars.h"
    22 
    2321namespace GenPoly {
    2422        class FindFunction : public Mutator {
    2523          public:
    2624                FindFunction( std::list< FunctionType* > &functions, const TyVarMap &tyVars, bool replaceMode, FindFunctionPredicate predicate );
    27 
     25 
    2826                virtual Type *mutate( FunctionType *functionType );
    2927                virtual Type *mutate( PointerType *pointerType );
     
    5553                        TyVarMap::iterator var = tyVars.find( (*i)->get_name() );
    5654                        if ( var != tyVars.end() ) {
    57                                 tyVars.erase( var->first );
     55                                tyVars.erase( var );
    5856                        } // if
    5957                } // for
     
    6159
    6260        Type * FindFunction::mutate( FunctionType *functionType ) {
    63                 tyVars.beginScope();
     61                TyVarMap oldTyVars = tyVars;
    6462                handleForall( functionType->get_forall() );
    6563                mutateAll( functionType->get_returnVals(), *this );
     
    6866                        functions.push_back( functionType );
    6967                        if ( replaceMode ) {
    70                                 // replace type parameters in function type with void*
    71                                 ret = ScrubTyVars::scrub( functionType->clone(), tyVars );
     68                                ret = new FunctionType( Type::Qualifiers(), true );
    7269                        } // if
    7370                } // if
    74                 tyVars.endScope();
     71                tyVars = oldTyVars;
    7572                return ret;
    7673        }
    7774
    7875        Type * FindFunction::mutate( PointerType *pointerType ) {
    79                 tyVars.beginScope();
     76                TyVarMap oldTyVars = tyVars;
    8077                handleForall( pointerType->get_forall() );
    8178                Type *ret = Mutator::mutate( pointerType );
    82                 tyVars.endScope();
     79                tyVars = oldTyVars;
    8380                return ret;
    8481        }
  • src/GenPoly/FindFunction.h

    r242d458 r679864e1  
    2323        typedef bool (*FindFunctionPredicate)( FunctionType*, const TyVarMap& );
    2424
    25         /// recursively walk `type`, placing all functions that match `predicate` under `tyVars` into `functions`
    2625        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)
    2826        void findAndReplaceFunction( Type *&type, std::list< FunctionType* > &functions, const TyVarMap &tyVars, FindFunctionPredicate predicate );
    2927} // namespace GenPoly
  • src/GenPoly/GenPoly.cc

    r242d458 r679864e1  
    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 : Wed Jun 29 21:45:53 2016
    13 // Update Count     : 14
     12// Last Modified On : Tue May 19 07:37:46 2015
     13// Update Count     : 1
    1414//
    1515
    1616#include "GenPoly.h"
    17 
    18 #include "SynTree/Expression.h"
    1917#include "SynTree/Type.h"
    2018
     
    2321
    2422namespace GenPoly {
    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 ) ) {
     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() ) {
    3135                                return true;
    3236                        } // if
    33                 } // for
     37                        return considerAllTyVars;
     38                } // if
    3439                return false;
    3540        }
    3641
    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 );
     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;
    4248                } // if
    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                 }
     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;
    20355        }
    20456
     
    20961                os << std::endl;
    21062        }
    211 
    21263} // namespace GenPoly
    21364
  • src/GenPoly/GenPoly.h

    r242d458 r679864e1  
    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 Nov 24 15:24:38 2015
    13 // Update Count     : 6
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue May 19 07:38:34 2015
     13// Update Count     : 1
    1414//
    1515
     
    1717#define GENPOLY_H
    1818
     19#include <map>
    1920#include <string>
    2021#include <iostream>
    21 #include <utility>
    22 
    23 #include "ErasableScopedMap.h"
    24 
    25 #include "SymTab/Mangler.h"
    26 
    2722#include "SynTree/Declaration.h"
    28 #include "SynTree/Type.h"
    29 #include "SynTree/TypeSubstitution.h"
    3023
    3124namespace GenPoly {
    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
     25        typedef std::map< std::string, TypeDecl::Kind > TyVarMap;
     26
     27        // considerAllTyVars allows ignoring the contents of the TyVarMap parameter, for the situations where
     28        // it is important only that a TypeInstType node exists.
     29
    3630        bool needsAdapter( FunctionType *adaptee, const TyVarMap &tyVarr );
    37 
    38         /// true iff function has polymorphic return type
    39         ReferenceToType *isPolyRet( FunctionType *function );
    40 
    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
     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 );
    7535        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        
    9236} // namespace GenPoly
    9337
  • src/GenPoly/Lvalue.cc

    r242d458 r679864e1  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 15 15:33:13 2015
    13 // Update Count     : 3
     12// Last Modified On : Tue May 19 07:41:33 2015
     13// Update Count     : 1
    1414//
    1515
     
    1717
    1818#include "Lvalue.h"
    19 
    20 #include "GenPoly.h"
    2119
    2220#include "SynTree/Declaration.h"
     
    3028#include "ResolvExpr/typeops.h"
    3129
    32 #include "Common/UniqueName.h"
    33 #include "Common/utility.h"
     30#include "UniqueName.h"
     31#include "utility.h"
    3432
    3533namespace GenPoly {
     
    3735                const std::list<Label> noLabels;
    3836
    39                 /// Replace uses of lvalue returns with appropriate pointers
    4037                class Pass1 : public Mutator {
    4138                  public:
     
    4946                };
    5047
    51                 /// Replace declarations of lvalue returns with appropriate pointers
    5248                class Pass2 : public Visitor {
    5349                  public:
     
    6561
    6662        namespace {
    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;
     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
    7169                }
    7270
     
    107105                        assert( function );
    108106
    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                                 }
     107                        std::string typeName;
     108                        if ( isLvalueRet( function ) && ! isIntrinsicApp( appExpr ) ) {
    117109                                UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
    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 );
     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 );
    121113                                return deref;
    122114                        } else {
     
    128120                        if ( retval && retStmt->get_expr() ) {
    129121                                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
    130129                                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
    141130                                        retStmt->set_expr( new AddressExpr( retStmt->get_expr()->acceptMutator( *this ) ) );
    142131                                } else {
  • src/GenPoly/PolyMutator.cc

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 11:26:22 2016
    13 // Update Count     : 16
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri Aug 14 15:28:50 2015
     13// Update Count     : 11
    1414//
    1515
     
    2727        }
    2828
    29         PolyMutator::PolyMutator() : scopeTyVars( (TypeDecl::Kind)-1 ), env( 0 ) {}
     29        PolyMutator::PolyMutator() : env( 0 ) {
     30        }
    3031
    3132        void PolyMutator::mutateStatementList( std::list< Statement* > &statements ) {
     
    6364                                env = expr->get_env();
    6465                        }
    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_statements() );
     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() );
    102108                switchStmt->set_condition( mutateExpression( switchStmt->get_condition() ) );
    103109                return switchStmt;
     
    139145                return untypedExpr;
    140146        }
    141 
    142 
     147 
     148 
    143149        Initializer *PolyMutator::mutate( SingleInit *singleInit ) {
    144150                singleInit->set_value( mutateExpression( singleInit->get_value() ) );
     
    146152        }
    147153
     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        }
    148165} // namespace GenPoly
    149166
  • src/GenPoly/PolyMutator.h

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

    r242d458 r679864e1  
    1414//
    1515
    16 #include <sstream>
    17 #include <string>
    18 
    1916#include "GenPoly.h"
    2017#include "ScrubTyVars.h"
     
    2724        Type * ScrubTyVars::mutate( TypeInstType *typeInst ) {
    2825                TyVarMap::const_iterator tyVar = tyVars.find( typeInst->get_name() );
    29                 if ( tyVar != tyVars.end() ) {
     26                if ( doAll || tyVar != tyVars.end() ) {
    3027                        switch ( tyVar->second ) {
    3128                          case TypeDecl::Any:
     
    4441        }
    4542
    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 
    6343        Expression * ScrubTyVars::mutate( SizeofExpr *szeof ) {
    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 ) ) );
     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() );
    6747                        return expr;
    6848                } else {
     
    7151        }
    7252
    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 );
     53        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
    8062                } // if
    81         }
    82 
    83         Type * ScrubTyVars::mutate( PointerType *pointer ) {
    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                 }
    9163                return Mutator::mutate( pointer );
    9264        }
  • src/GenPoly/ScrubTyVars.h

    r242d458 r679864e1  
    1717#define _SCRUBTYVARS_H
    1818
    19 #include <string>
    20 
    2119#include "GenPoly.h"
    2220
     
    2725        class ScrubTyVars : public Mutator {
    2826          public:
    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
     27                ScrubTyVars( bool doAll, const TyVarMap &tyVars ): doAll( doAll ), tyVars( tyVars ) {}
     28 
    3329                template< typename SynTreeClass >
    3430                static SynTreeClass *scrub( SynTreeClass *target, const TyVarMap &tyVars );
    35 
     31                template< typename SynTreeClass >
     32                static SynTreeClass *scrub( SynTreeClass *target );
     33 
    3634                virtual Type* mutate( TypeInstType *typeInst );
    37                 virtual Type* mutate( StructInstType *structInst );
    38                 virtual Type* mutate( UnionInstType *unionInst );
    39                 virtual Expression* mutate( SizeofExpr *szeof );
    40                 virtual Expression* mutate( AlignofExpr *algnof );
     35                Expression* mutate( SizeofExpr *szeof );
    4136                virtual Type* mutate( PointerType *pointer );
    42 
    4337          private:
    44                 /// Mutates (possibly generic) aggregate types appropriately
    45                 Type* mutateAggregateType( Type *ty );
    46                
     38                bool doAll;
    4739                const TyVarMap &tyVars;
    4840        };
     
    5143        template< typename SynTreeClass >
    5244        SynTreeClass * ScrubTyVars::scrub( SynTreeClass *target, const TyVarMap &tyVars ) {
    53                 ScrubTyVars scrubber( tyVars );
     45                ScrubTyVars scrubber( false, tyVars );
    5446                return static_cast< SynTreeClass * >( target->acceptMutator( scrubber ) );
    5547        }
    5648
     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        }
    5756} // namespace GenPoly
    5857
  • src/GenPoly/Specialize.cc

    r242d458 r679864e1  
    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 : Thu Apr 28 15:17:45 2016
    13 // Update Count     : 24
     12// Last Modified On : Tue Sep 22 14:04:13 2015
     13// Update Count     : 15
    1414//
    1515
     
    1717
    1818#include "Specialize.h"
    19 #include "GenPoly.h"
    2019#include "PolyMutator.h"
    2120
     
    2524#include "SynTree/Statement.h"
    2625#include "SynTree/Type.h"
    27 #include "SynTree/Attribute.h"
    2826#include "SynTree/TypeSubstitution.h"
    2927#include "SynTree/Mutator.h"
    3028#include "ResolvExpr/FindOpenVars.h"
    31 #include "Common/UniqueName.h"
    32 #include "Common/utility.h"
    33 #include "InitTweak/InitTweak.h"
     29#include "UniqueName.h"
     30#include "utility.h"
    3431
    3532namespace GenPoly {
     
    4340                virtual Expression * mutate( AddressExpr *castExpr );
    4441                virtual Expression * mutate( CastExpr *castExpr );
    45                 // virtual Expression * mutate( LogicalExpr *logicalExpr );
    46                 // virtual Expression * mutate( ConditionalExpr *conditionalExpr );
    47                 // virtual Expression * mutate( CommaExpr *commaExpr );
     42                virtual Expression * mutate( LogicalExpr *logicalExpr );
     43                virtual Expression * mutate( ConditionalExpr *conditionalExpr );
     44                virtual Expression * mutate( CommaExpr *commaExpr );
    4845
    4946          private:
    50                 Expression *createThunkFunction( FunctionType *funType, Expression *actual, InferredParams *inferParams = 0 );
    5147                Expression *doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams = 0 );
    5248                void handleExplicitParams( ApplicationExpr *appExpr );
     
    6561        }
    6662
    67         /// Looks up open variables in actual type, returning true if any of them are bound in the environment or formal type.
    6863        bool needsSpecialization( Type *formalType, Type *actualType, TypeSubstitution *env ) {
    6964                if ( env ) {
     
    9085        }
    9186
    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 
    14887        Expression * Specialize::doSpecialization( Type *formalType, Expression *actual, InferredParams *inferParams ) {
    149                 assert( ! actual->get_results().empty() ); // using front, should have this assert
     88                assert( ! actual->get_results().empty() );
    15089                if ( needsSpecialization( formalType, actual->get_results().front(), env ) ) {
     90                        PointerType *ptrType;
    15191                        FunctionType *funType;
    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 );
     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 );
    159127                                } else {
    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                                 }
     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 ) );
    163133                        } else {
    164134                                return actual;
     
    172142                // create thunks for the explicit parameters
    173143                assert( ! appExpr->get_function()->get_results().empty() );
    174                 FunctionType *function = getFunctionType( appExpr->get_function()->get_results().front() );
    175                 assert( function );
     144                PointerType *pointer = dynamic_cast< PointerType* >( appExpr->get_function()->get_results().front() );
     145                assert( pointer );
     146                FunctionType *function = dynamic_cast< FunctionType* >( pointer->get_base() );
    176147                std::list< DeclarationWithType* >::iterator formal;
    177148                std::list< Expression* >::iterator actual;
     
    185156                mutateAll( appExpr->get_args(), *this );
    186157
    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 );
     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() );
    195161                }
     162
     163                handleExplicitParams( appExpr );
    196164
    197165                return appExpr;
     
    207175        Expression * Specialize::mutate( CastExpr *castExpr ) {
    208176                castExpr->get_arg()->acceptMutator( *this );
    209                 if ( castExpr->get_results().empty() ) {
    210                         // can't specialize if we don't have a return value
    211                         return castExpr;
     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() ) );         
    212181                }
    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         // }
     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        }
    237196} // namespace GenPoly
    238197
  • src/GenPoly/module.mk

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

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

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

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

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

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

    r242d458 r679864e1  
    1818
    1919#include "Association.h"
    20 #include "Common/SemanticError.h"
     20#include "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; }
    7874                        void visit( AttrExpr * ) { throw 0; }
    7975                        void visit( LogicalExpr * ) { throw 0; }
  • src/InitTweak/module.mk

    r242d458 r679864e1  
    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 : Rob Schluntz
    13 ## Last Modified On : Fri May 13 11:36:24 2016
    14 ## Update Count     : 3
     12## Last Modified By : Peter A. Buhr
     13## Last Modified On : Mon Jun  1 17:52:49 2015
     14## Update Count     : 1
    1515###############################################################################
    1616
    17 SRC += InitTweak/GenInit.cc \
    18         InitTweak/FixInit.cc \
    19         InitTweak/FixGlobalInit.cc \
    20         InitTweak/InitTweak.cc
     17SRC += InitTweak/InitModel.cc \
     18       InitTweak/InitExpander.cc \
     19       InitTweak/Mutate.cc \
     20       InitTweak/Association.cc \
     21       InitTweak/RemoveInit.cc
    2122
  • src/MakeLibCfa.cc

    r242d458 r679864e1  
    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 Apr 22 13:54:15 2016
    13 // Update Count     : 40
    14 //
     12// Last Modified On : Fri Jul 03 18:11:37 2015
     13// Update Count     : 18
     14// 
    1515
    1616#include "MakeLibCfa.h"
     
    2222#include "SynTree/Initializer.h"
    2323#include "CodeGen/OperatorTable.h"
    24 #include "Common/UniqueName.h"
     24#include "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                 if ( origFuncDecl->get_statements() ) return;
    46 
     45 
    4746                FunctionDecl *funcDecl = origFuncDecl->clone();
    4847                CodeGen::OperatorInfo opInfo;
     
    5554                assert( param != funcDecl->get_functionType()->get_parameters().end() );
    5655
    57                 for ( ; param != funcDecl->get_functionType()->get_parameters().end(); ++param ) {
    58                         if ( (*param)->get_name() == "" ) {
    59                                 (*param)->set_name( paramNamer.newName() );
    60                                 (*param)->set_linkage( LinkageSpec::C );
    61                         }
    62                         newExpr->get_args().push_back( new VariableExpr( *param ) );
    63                 } // for
    64 
    65                 funcDecl->set_statements( new CompoundStmt( std::list< Label >() ) );
    66                 newDecls.push_back( funcDecl );
     56                if ( (*param)->get_name() == "" ) {
     57                        (*param)->set_name( paramNamer.newName() );
     58                        (*param)->set_linkage( LinkageSpec::C );
     59                } // if
    6760
    6861                switch ( opInfo.type ) {
     
    7265                  case CodeGen::OT_POSTFIX:
    7366                  case CodeGen::OT_INFIX:
     67                        newExpr->get_args().push_back( new VariableExpr( *param ) );
     68                        break;
    7469                  case CodeGen::OT_PREFIXASSIGN:
    7570                  case CodeGen::OT_POSTFIXASSIGN:
    7671                  case CodeGen::OT_INFIXASSIGN:
    77                                 funcDecl->get_statements()->get_kids().push_back( new ReturnStmt( std::list< Label >(), newExpr ) );
     72                        {
     73                                newExpr->get_args().push_back( new VariableExpr( *param ) );
     74                                // UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
     75                                // deref->get_args().push_back( new VariableExpr( *param ) );
     76                                // newExpr->get_args().push_back( deref );
    7877                                break;
     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;
    9480                  case CodeGen::OT_DTOR:
    95                         // intrinsic destructors should do nothing
    96                         // delete newExpr;
    97                         break;
    9881                  case CodeGen::OT_CONSTANT:
    9982                  case CodeGen::OT_LABELADDRESS:
     
    10184                        assert( false );
    10285                } // 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 );
    10397        }
    10498
    10599        void MakeLibCfa::visit( ObjectDecl* origObjDecl ) {
    106100                if ( origObjDecl->get_linkage() != LinkageSpec::Intrinsic ) return;
    107 
     101 
    108102                ObjectDecl *objDecl = origObjDecl->clone();
    109103                assert( ! objDecl->get_init() );
    110104                std::list< Expression* > noDesignators;
    111                 objDecl->set_init( new SingleInit( new NameExpr( objDecl->get_name() ), noDesignators, false ) ); // cannot be constructed
     105                objDecl->set_init( new SingleInit( new NameExpr( objDecl->get_name() ), noDesignators ) );
    112106                newDecls.push_back( objDecl );
    113107        }
    114108} // namespace LibCfa
     109
     110// Local Variables: //
     111// tab-width: 4 //
     112// mode: c++ //
     113// compile-command: "make install" //
     114// End: //
  • src/Makefile.am

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

    r242d458 r679864e1  
    8383        $(srcdir)/SynTree/module.mk $(srcdir)/Tuples/module.mk \
    8484        Parser/lex.cc Parser/parser.cc Parser/parser.h
    85 cfa_cpplib_PROGRAMS = driver/cfa-cpp$(EXEEXT)
     85cfa_cpplib_PROGRAMS = 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 = 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)
    203 am_driver_cfa_cpp_OBJECTS = $(am__objects_1)
    204 driver_cfa_cpp_OBJECTS = $(am_driver_cfa_cpp_OBJECTS)
     98am__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)
     201am_cfa_cpp_OBJECTS = $(am__objects_1)
     202cfa_cpp_OBJECTS = $(am_cfa_cpp_OBJECTS)
    205203am__DEPENDENCIES_1 =
    206 driver_cfa_cpp_DEPENDENCIES = $(am__DEPENDENCIES_1)
    207 driver_cfa_cpp_LINK = $(CXXLD) $(driver_cfa_cpp_CXXFLAGS) $(CXXFLAGS) \
    208         $(AM_LDFLAGS) $(LDFLAGS) -o $@
     204cfa_cpp_DEPENDENCIES = $(am__DEPENDENCIES_1)
     205cfa_cpp_LINK = $(CXXLD) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
     206        $(LDFLAGS) -o $@
    209207DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
    210208depcomp = $(SHELL) $(top_srcdir)/automake/depcomp
    211209am__depfiles_maybe = depfiles
    212210am__mv = mv -f
    213 AM_V_lt = $(am__v_lt_@AM_V@)
    214 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
    215 am__v_lt_0 = --silent
    216211CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    217212        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
    218 AM_V_CXX = $(am__v_CXX_@AM_V@)
    219 am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
    220 am__v_CXX_0 = @echo "  CXX   " $@;
    221 AM_V_at = $(am__v_at_@AM_V@)
    222 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    223 am__v_at_0 = @
    224213CXXLD = $(CXX)
    225214CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    226215        -o $@
    227 AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
    228 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
    229 am__v_CXXLD_0 = @echo "  CXXLD " $@;
    230216@MAINTAINER_MODE_FALSE@am__skiplex = test -f $@ ||
    231217LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS)
    232 AM_V_LEX = $(am__v_LEX_@AM_V@)
    233 am__v_LEX_ = $(am__v_LEX_@AM_DEFAULT_V@)
    234 am__v_LEX_0 = @echo "  LEX   " $@;
    235218YLWRAP = $(top_srcdir)/automake/ylwrap
    236219@MAINTAINER_MODE_FALSE@am__skipyacc = test -f $@ ||
    237220YACCCOMPILE = $(YACC) $(AM_YFLAGS) $(YFLAGS)
    238 AM_V_YACC = $(am__v_YACC_@AM_V@)
    239 am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@)
    240 am__v_YACC_0 = @echo "  YACC  " $@;
    241221COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    242222        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    243 AM_V_CC = $(am__v_CC_@AM_V@)
    244 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    245 am__v_CC_0 = @echo "  CC    " $@;
    246223CCLD = $(CC)
    247224LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    248 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    249 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    250 am__v_CCLD_0 = @echo "  CCLD  " $@;
    251 AM_V_GEN = $(am__v_GEN_@AM_V@)
    252 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    253 am__v_GEN_0 = @echo "  GEN   " $@;
    254 SOURCES = $(driver_cfa_cpp_SOURCES)
    255 DIST_SOURCES = $(driver_cfa_cpp_SOURCES)
     225SOURCES = $(cfa_cpp_SOURCES)
     226DIST_SOURCES = $(cfa_cpp_SOURCES)
    256227ETAGS = etags
    257228CTAGS = ctags
     
    260231ALLOCA = @ALLOCA@
    261232AMTAR = @AMTAR@
    262 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    263233AUTOCONF = @AUTOCONF@
    264234AUTOHEADER = @AUTOHEADER@
     
    268238CC = @CC@
    269239CCDEPMODE = @CCDEPMODE@
    270 CFA_BACKEND_CC = @CFA_BACKEND_CC@
    271240CFA_BINDIR = @CFA_BINDIR@
    272 CFA_FLAGS = @CFA_FLAGS@
    273241CFA_INCDIR = @CFA_INCDIR@
    274242CFA_LIBDIR = @CFA_LIBDIR@
     
    279247CXX = @CXX@
    280248CXXDEPMODE = @CXXDEPMODE@
    281 CXXFLAGS = @CXXFLAGS@
     249CXXFLAGS = -g   # remove default -O2 to allow better debugging
    282250CYGPATH_W = @CYGPATH_W@
    283251DEFS = @DEFS@
     
    288256EGREP = @EGREP@
    289257EXEEXT = @EXEEXT@
     258GCC_PATH = @GCC_PATH@
    290259GREP = @GREP@
    291260INSTALL = @INSTALL@
     
    371340        Common/SemanticError.cc Common/UniqueName.cc \
    372341        ControlStruct/LabelGenerator.cc ControlStruct/LabelFixer.cc \
    373         ControlStruct/MLEMutator.cc ControlStruct/Mutate.cc \
     342        ControlStruct/MLEMutator.cc ControlStruct/CaseRangeMutator.cc \
     343        ControlStruct/Mutate.cc ControlStruct/ChooseMutator.cc \
    374344        ControlStruct/ForExprMutator.cc \
    375345        ControlStruct/LabelTypeChecker.cc Designators/Processor.cc \
     
    377347        GenPoly/ScrubTyVars.cc GenPoly/Lvalue.cc GenPoly/Specialize.cc \
    378348        GenPoly/CopyParams.cc GenPoly/FindFunction.cc \
    379         GenPoly/DeclMutator.cc InitTweak/GenInit.cc \
    380         InitTweak/FixInit.cc InitTweak/FixGlobalInit.cc \
    381         InitTweak/InitTweak.cc Parser/parser.yy Parser/lex.ll \
     349        InitTweak/InitModel.cc InitTweak/InitExpander.cc \
     350        InitTweak/Mutate.cc InitTweak/Association.cc \
     351        InitTweak/RemoveInit.cc Parser/parser.yy Parser/lex.ll \
    382352        Parser/TypedefTable.cc Parser/ParseNode.cc \
    383353        Parser/DeclarationNode.cc Parser/ExpressionNode.cc \
     
    393363        ResolvExpr/RenameVars.cc ResolvExpr/FindOpenVars.cc \
    394364        ResolvExpr/PolyCost.cc ResolvExpr/Occurs.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 \
     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 \
    399369        SynTree/BasicType.cc SynTree/PointerType.cc \
    400370        SynTree/ArrayType.cc SynTree/FunctionType.cc \
    401371        SynTree/ReferenceToType.cc SynTree/TupleType.cc \
    402         SynTree/TypeofType.cc SynTree/AttrType.cc \
    403         SynTree/VarArgsType.cc SynTree/Constant.cc \
     372        SynTree/TypeofType.cc SynTree/AttrType.cc SynTree/Constant.cc \
    404373        SynTree/Expression.cc SynTree/TupleExpr.cc \
    405374        SynTree/CommaExpr.cc SynTree/TypeExpr.cc \
     
    411380        SynTree/NamedTypeDecl.cc SynTree/TypeDecl.cc \
    412381        SynTree/Initializer.cc SynTree/Visitor.cc SynTree/Mutator.cc \
    413         SynTree/AddStmtVisitor.cc SynTree/TypeSubstitution.cc \
    414         SynTree/Attribute.cc Tuples/Mutate.cc Tuples/AssignExpand.cc \
     382        SynTree/CodeGenVisitor.cc SynTree/TypeSubstitution.cc \
     383        Tuples/Mutate.cc Tuples/AssignExpand.cc \
    415384        Tuples/FunctionFixer.cc Tuples/TupleAssignment.cc \
    416385        Tuples/FunctionChecker.cc Tuples/NameMatcher.cc
    417 MAINTAINERCLEANFILES = Parser/parser.output ${libdir}/${notdir \
    418         ${cfa_cpplib_PROGRAMS}}
    419386BUILT_SOURCES = Parser/parser.h
    420387AM_YFLAGS = -d -t -v
     388cfa_cpp_LDADD = ${LEXLIB}       # yywrap
     389MAINTAINERCLEANFILES = Parser/parser.output
    421390
    422391# Is there a way to use a variable for the directory names?
     
    424393# put into lib for now
    425394cfa_cpplibdir = ${libdir}
    426 driver_cfa_cpp_SOURCES = ${SRC}
    427 driver_cfa_cpp_LDADD = ${LEXLIB}        # yywrap
     395cfa_cpp_SOURCES = ${SRC}
    428396# need files Common/utility.h
    429 driver_cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL
    430 AM_CXXFLAGS = -g -std=c++11
     397cfa_cpp_CXXFLAGS = -Wno-deprecated -Wall -DDEBUG_ALL -I${srcdir}/Common
    431398all: $(BUILT_SOURCES)
    432399        $(MAKE) $(AM_MAKEFLAGS) all-am
     
    443410          esac; \
    444411        done; \
    445         echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
     412        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
    446413        $(am__cd) $(top_srcdir) && \
    447           $(AUTOMAKE) --foreign src/Makefile
     414          $(AUTOMAKE) --gnu src/Makefile
    448415.PRECIOUS: Makefile
    449416Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
     
    508475        @$(MKDIR_P) CodeGen/$(DEPDIR)
    509476        @: > CodeGen/$(DEPDIR)/$(am__dirstamp)
    510 CodeGen/driver_cfa_cpp-Generate.$(OBJEXT): CodeGen/$(am__dirstamp) \
     477CodeGen/cfa_cpp-Generate.$(OBJEXT): CodeGen/$(am__dirstamp) \
    511478        CodeGen/$(DEPDIR)/$(am__dirstamp)
    512 CodeGen/driver_cfa_cpp-CodeGenerator.$(OBJEXT):  \
    513         CodeGen/$(am__dirstamp) CodeGen/$(DEPDIR)/$(am__dirstamp)
    514 CodeGen/driver_cfa_cpp-GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \
     479CodeGen/cfa_cpp-CodeGenerator.$(OBJEXT): CodeGen/$(am__dirstamp) \
    515480        CodeGen/$(DEPDIR)/$(am__dirstamp)
    516 CodeGen/driver_cfa_cpp-FixNames.$(OBJEXT): CodeGen/$(am__dirstamp) \
     481CodeGen/cfa_cpp-GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \
    517482        CodeGen/$(DEPDIR)/$(am__dirstamp)
    518 CodeGen/driver_cfa_cpp-OperatorTable.$(OBJEXT):  \
    519         CodeGen/$(am__dirstamp) CodeGen/$(DEPDIR)/$(am__dirstamp)
     483CodeGen/cfa_cpp-FixNames.$(OBJEXT): CodeGen/$(am__dirstamp) \
     484        CodeGen/$(DEPDIR)/$(am__dirstamp)
     485CodeGen/cfa_cpp-OperatorTable.$(OBJEXT): CodeGen/$(am__dirstamp) \
     486        CodeGen/$(DEPDIR)/$(am__dirstamp)
    520487Common/$(am__dirstamp):
    521488        @$(MKDIR_P) Common
     
    524491        @$(MKDIR_P) Common/$(DEPDIR)
    525492        @: > Common/$(DEPDIR)/$(am__dirstamp)
    526 Common/driver_cfa_cpp-SemanticError.$(OBJEXT): Common/$(am__dirstamp) \
     493Common/cfa_cpp-SemanticError.$(OBJEXT): Common/$(am__dirstamp) \
    527494        Common/$(DEPDIR)/$(am__dirstamp)
    528 Common/driver_cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
     495Common/cfa_cpp-UniqueName.$(OBJEXT): Common/$(am__dirstamp) \
    529496        Common/$(DEPDIR)/$(am__dirstamp)
    530497ControlStruct/$(am__dirstamp):
     
    534501        @$(MKDIR_P) ControlStruct/$(DEPDIR)
    535502        @: > ControlStruct/$(DEPDIR)/$(am__dirstamp)
    536 ControlStruct/driver_cfa_cpp-LabelGenerator.$(OBJEXT):  \
     503ControlStruct/cfa_cpp-LabelGenerator.$(OBJEXT):  \
    537504        ControlStruct/$(am__dirstamp) \
    538505        ControlStruct/$(DEPDIR)/$(am__dirstamp)
    539 ControlStruct/driver_cfa_cpp-LabelFixer.$(OBJEXT):  \
     506ControlStruct/cfa_cpp-LabelFixer.$(OBJEXT):  \
    540507        ControlStruct/$(am__dirstamp) \
    541508        ControlStruct/$(DEPDIR)/$(am__dirstamp)
    542 ControlStruct/driver_cfa_cpp-MLEMutator.$(OBJEXT):  \
     509ControlStruct/cfa_cpp-MLEMutator.$(OBJEXT):  \
    543510        ControlStruct/$(am__dirstamp) \
    544511        ControlStruct/$(DEPDIR)/$(am__dirstamp)
    545 ControlStruct/driver_cfa_cpp-Mutate.$(OBJEXT):  \
     512ControlStruct/cfa_cpp-CaseRangeMutator.$(OBJEXT):  \
    546513        ControlStruct/$(am__dirstamp) \
    547514        ControlStruct/$(DEPDIR)/$(am__dirstamp)
    548 ControlStruct/driver_cfa_cpp-ForExprMutator.$(OBJEXT):  \
     515ControlStruct/cfa_cpp-Mutate.$(OBJEXT): ControlStruct/$(am__dirstamp) \
     516        ControlStruct/$(DEPDIR)/$(am__dirstamp)
     517ControlStruct/cfa_cpp-ChooseMutator.$(OBJEXT):  \
    549518        ControlStruct/$(am__dirstamp) \
    550519        ControlStruct/$(DEPDIR)/$(am__dirstamp)
    551 ControlStruct/driver_cfa_cpp-LabelTypeChecker.$(OBJEXT):  \
     520ControlStruct/cfa_cpp-ForExprMutator.$(OBJEXT):  \
     521        ControlStruct/$(am__dirstamp) \
     522        ControlStruct/$(DEPDIR)/$(am__dirstamp)
     523ControlStruct/cfa_cpp-LabelTypeChecker.$(OBJEXT):  \
    552524        ControlStruct/$(am__dirstamp) \
    553525        ControlStruct/$(DEPDIR)/$(am__dirstamp)
     
    558530        @$(MKDIR_P) Designators/$(DEPDIR)
    559531        @: > Designators/$(DEPDIR)/$(am__dirstamp)
    560 Designators/driver_cfa_cpp-Processor.$(OBJEXT):  \
    561         Designators/$(am__dirstamp) \
     532Designators/cfa_cpp-Processor.$(OBJEXT): Designators/$(am__dirstamp) \
    562533        Designators/$(DEPDIR)/$(am__dirstamp)
    563534GenPoly/$(am__dirstamp):
     
    567538        @$(MKDIR_P) GenPoly/$(DEPDIR)
    568539        @: > GenPoly/$(DEPDIR)/$(am__dirstamp)
    569 GenPoly/driver_cfa_cpp-Box.$(OBJEXT): GenPoly/$(am__dirstamp) \
     540GenPoly/cfa_cpp-Box.$(OBJEXT): GenPoly/$(am__dirstamp) \
    570541        GenPoly/$(DEPDIR)/$(am__dirstamp)
    571 GenPoly/driver_cfa_cpp-GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \
     542GenPoly/cfa_cpp-GenPoly.$(OBJEXT): GenPoly/$(am__dirstamp) \
    572543        GenPoly/$(DEPDIR)/$(am__dirstamp)
    573 GenPoly/driver_cfa_cpp-PolyMutator.$(OBJEXT): GenPoly/$(am__dirstamp) \
     544GenPoly/cfa_cpp-PolyMutator.$(OBJEXT): GenPoly/$(am__dirstamp) \
    574545        GenPoly/$(DEPDIR)/$(am__dirstamp)
    575 GenPoly/driver_cfa_cpp-ScrubTyVars.$(OBJEXT): GenPoly/$(am__dirstamp) \
     546GenPoly/cfa_cpp-ScrubTyVars.$(OBJEXT): GenPoly/$(am__dirstamp) \
    576547        GenPoly/$(DEPDIR)/$(am__dirstamp)
    577 GenPoly/driver_cfa_cpp-Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \
     548GenPoly/cfa_cpp-Lvalue.$(OBJEXT): GenPoly/$(am__dirstamp) \
    578549        GenPoly/$(DEPDIR)/$(am__dirstamp)
    579 GenPoly/driver_cfa_cpp-Specialize.$(OBJEXT): GenPoly/$(am__dirstamp) \
     550GenPoly/cfa_cpp-Specialize.$(OBJEXT): GenPoly/$(am__dirstamp) \
    580551        GenPoly/$(DEPDIR)/$(am__dirstamp)
    581 GenPoly/driver_cfa_cpp-CopyParams.$(OBJEXT): GenPoly/$(am__dirstamp) \
     552GenPoly/cfa_cpp-CopyParams.$(OBJEXT): GenPoly/$(am__dirstamp) \
    582553        GenPoly/$(DEPDIR)/$(am__dirstamp)
    583 GenPoly/driver_cfa_cpp-FindFunction.$(OBJEXT):  \
    584         GenPoly/$(am__dirstamp) GenPoly/$(DEPDIR)/$(am__dirstamp)
    585 GenPoly/driver_cfa_cpp-DeclMutator.$(OBJEXT): GenPoly/$(am__dirstamp) \
     554GenPoly/cfa_cpp-FindFunction.$(OBJEXT): GenPoly/$(am__dirstamp) \
    586555        GenPoly/$(DEPDIR)/$(am__dirstamp)
    587556InitTweak/$(am__dirstamp):
     
    591560        @$(MKDIR_P) InitTweak/$(DEPDIR)
    592561        @: > InitTweak/$(DEPDIR)/$(am__dirstamp)
    593 InitTweak/driver_cfa_cpp-GenInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
     562InitTweak/cfa_cpp-InitModel.$(OBJEXT): InitTweak/$(am__dirstamp) \
    594563        InitTweak/$(DEPDIR)/$(am__dirstamp)
    595 InitTweak/driver_cfa_cpp-FixInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
     564InitTweak/cfa_cpp-InitExpander.$(OBJEXT): InitTweak/$(am__dirstamp) \
    596565        InitTweak/$(DEPDIR)/$(am__dirstamp)
    597 InitTweak/driver_cfa_cpp-FixGlobalInit.$(OBJEXT):  \
    598         InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
    599 InitTweak/driver_cfa_cpp-InitTweak.$(OBJEXT):  \
    600         InitTweak/$(am__dirstamp) InitTweak/$(DEPDIR)/$(am__dirstamp)
     566InitTweak/cfa_cpp-Mutate.$(OBJEXT): InitTweak/$(am__dirstamp) \
     567        InitTweak/$(DEPDIR)/$(am__dirstamp)
     568InitTweak/cfa_cpp-Association.$(OBJEXT): InitTweak/$(am__dirstamp) \
     569        InitTweak/$(DEPDIR)/$(am__dirstamp)
     570InitTweak/cfa_cpp-RemoveInit.$(OBJEXT): InitTweak/$(am__dirstamp) \
     571        InitTweak/$(DEPDIR)/$(am__dirstamp)
    601572Parser/parser.h: Parser/parser.cc
    602573        @if test ! -f $@; then rm -f Parser/parser.cc; else :; fi
     
    608579        @$(MKDIR_P) Parser/$(DEPDIR)
    609580        @: > Parser/$(DEPDIR)/$(am__dirstamp)
    610 Parser/driver_cfa_cpp-parser.$(OBJEXT): Parser/$(am__dirstamp) \
     581Parser/cfa_cpp-parser.$(OBJEXT): Parser/$(am__dirstamp) \
    611582        Parser/$(DEPDIR)/$(am__dirstamp)
    612 Parser/driver_cfa_cpp-lex.$(OBJEXT): Parser/$(am__dirstamp) \
     583Parser/cfa_cpp-lex.$(OBJEXT): Parser/$(am__dirstamp) \
    613584        Parser/$(DEPDIR)/$(am__dirstamp)
    614 Parser/driver_cfa_cpp-TypedefTable.$(OBJEXT): Parser/$(am__dirstamp) \
     585Parser/cfa_cpp-TypedefTable.$(OBJEXT): Parser/$(am__dirstamp) \
    615586        Parser/$(DEPDIR)/$(am__dirstamp)
    616 Parser/driver_cfa_cpp-ParseNode.$(OBJEXT): Parser/$(am__dirstamp) \
     587Parser/cfa_cpp-ParseNode.$(OBJEXT): Parser/$(am__dirstamp) \
    617588        Parser/$(DEPDIR)/$(am__dirstamp)
    618 Parser/driver_cfa_cpp-DeclarationNode.$(OBJEXT):  \
    619         Parser/$(am__dirstamp) Parser/$(DEPDIR)/$(am__dirstamp)
    620 Parser/driver_cfa_cpp-ExpressionNode.$(OBJEXT):  \
    621         Parser/$(am__dirstamp) Parser/$(DEPDIR)/$(am__dirstamp)
    622 Parser/driver_cfa_cpp-StatementNode.$(OBJEXT): Parser/$(am__dirstamp) \
     589Parser/cfa_cpp-DeclarationNode.$(OBJEXT): Parser/$(am__dirstamp) \
    623590        Parser/$(DEPDIR)/$(am__dirstamp)
    624 Parser/driver_cfa_cpp-InitializerNode.$(OBJEXT):  \
    625         Parser/$(am__dirstamp) Parser/$(DEPDIR)/$(am__dirstamp)
    626 Parser/driver_cfa_cpp-TypeData.$(OBJEXT): Parser/$(am__dirstamp) \
     591Parser/cfa_cpp-ExpressionNode.$(OBJEXT): Parser/$(am__dirstamp) \
    627592        Parser/$(DEPDIR)/$(am__dirstamp)
    628 Parser/driver_cfa_cpp-LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \
     593Parser/cfa_cpp-StatementNode.$(OBJEXT): Parser/$(am__dirstamp) \
    629594        Parser/$(DEPDIR)/$(am__dirstamp)
    630 Parser/driver_cfa_cpp-parseutility.$(OBJEXT): Parser/$(am__dirstamp) \
     595Parser/cfa_cpp-InitializerNode.$(OBJEXT): Parser/$(am__dirstamp) \
    631596        Parser/$(DEPDIR)/$(am__dirstamp)
    632 Parser/driver_cfa_cpp-Parser.$(OBJEXT): Parser/$(am__dirstamp) \
     597Parser/cfa_cpp-TypeData.$(OBJEXT): Parser/$(am__dirstamp) \
     598        Parser/$(DEPDIR)/$(am__dirstamp)
     599Parser/cfa_cpp-LinkageSpec.$(OBJEXT): Parser/$(am__dirstamp) \
     600        Parser/$(DEPDIR)/$(am__dirstamp)
     601Parser/cfa_cpp-parseutility.$(OBJEXT): Parser/$(am__dirstamp) \
     602        Parser/$(DEPDIR)/$(am__dirstamp)
     603Parser/cfa_cpp-Parser.$(OBJEXT): Parser/$(am__dirstamp) \
    633604        Parser/$(DEPDIR)/$(am__dirstamp)
    634605ResolvExpr/$(am__dirstamp):
     
    638609        @$(MKDIR_P) ResolvExpr/$(DEPDIR)
    639610        @: > ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    640 ResolvExpr/driver_cfa_cpp-AlternativeFinder.$(OBJEXT):  \
     611ResolvExpr/cfa_cpp-AlternativeFinder.$(OBJEXT):  \
    641612        ResolvExpr/$(am__dirstamp) \
    642613        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    643 ResolvExpr/driver_cfa_cpp-Alternative.$(OBJEXT):  \
     614ResolvExpr/cfa_cpp-Alternative.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     615        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     616ResolvExpr/cfa_cpp-Unify.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     617        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     618ResolvExpr/cfa_cpp-PtrsAssignable.$(OBJEXT):  \
    644619        ResolvExpr/$(am__dirstamp) \
    645620        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    646 ResolvExpr/driver_cfa_cpp-Unify.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     621ResolvExpr/cfa_cpp-CommonType.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    647622        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    648 ResolvExpr/driver_cfa_cpp-PtrsAssignable.$(OBJEXT):  \
     623ResolvExpr/cfa_cpp-ConversionCost.$(OBJEXT):  \
    649624        ResolvExpr/$(am__dirstamp) \
    650625        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    651 ResolvExpr/driver_cfa_cpp-CommonType.$(OBJEXT):  \
     626ResolvExpr/cfa_cpp-CastCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     627        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     628ResolvExpr/cfa_cpp-PtrsCastable.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     629        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     630ResolvExpr/cfa_cpp-AdjustExprType.$(OBJEXT):  \
    652631        ResolvExpr/$(am__dirstamp) \
    653632        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    654 ResolvExpr/driver_cfa_cpp-ConversionCost.$(OBJEXT):  \
     633ResolvExpr/cfa_cpp-AlternativePrinter.$(OBJEXT):  \
    655634        ResolvExpr/$(am__dirstamp) \
    656635        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    657 ResolvExpr/driver_cfa_cpp-CastCost.$(OBJEXT):  \
     636ResolvExpr/cfa_cpp-Resolver.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
     637        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     638ResolvExpr/cfa_cpp-ResolveTypeof.$(OBJEXT):  \
    658639        ResolvExpr/$(am__dirstamp) \
    659640        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    660 ResolvExpr/driver_cfa_cpp-PtrsCastable.$(OBJEXT):  \
    661         ResolvExpr/$(am__dirstamp) \
     641ResolvExpr/cfa_cpp-RenameVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    662642        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    663 ResolvExpr/driver_cfa_cpp-AdjustExprType.$(OBJEXT):  \
    664         ResolvExpr/$(am__dirstamp) \
     643ResolvExpr/cfa_cpp-FindOpenVars.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    665644        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    666 ResolvExpr/driver_cfa_cpp-AlternativePrinter.$(OBJEXT):  \
    667         ResolvExpr/$(am__dirstamp) \
     645ResolvExpr/cfa_cpp-PolyCost.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    668646        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    669 ResolvExpr/driver_cfa_cpp-Resolver.$(OBJEXT):  \
    670         ResolvExpr/$(am__dirstamp) \
     647ResolvExpr/cfa_cpp-Occurs.$(OBJEXT): ResolvExpr/$(am__dirstamp) \
    671648        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    672 ResolvExpr/driver_cfa_cpp-ResolveTypeof.$(OBJEXT):  \
    673         ResolvExpr/$(am__dirstamp) \
    674         ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    675 ResolvExpr/driver_cfa_cpp-RenameVars.$(OBJEXT):  \
    676         ResolvExpr/$(am__dirstamp) \
    677         ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    678 ResolvExpr/driver_cfa_cpp-FindOpenVars.$(OBJEXT):  \
    679         ResolvExpr/$(am__dirstamp) \
    680         ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    681 ResolvExpr/driver_cfa_cpp-PolyCost.$(OBJEXT):  \
    682         ResolvExpr/$(am__dirstamp) \
    683         ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    684 ResolvExpr/driver_cfa_cpp-Occurs.$(OBJEXT):  \
    685         ResolvExpr/$(am__dirstamp) \
    686         ResolvExpr/$(DEPDIR)/$(am__dirstamp)
    687 ResolvExpr/driver_cfa_cpp-TypeEnvironment.$(OBJEXT):  \
     649ResolvExpr/cfa_cpp-TypeEnvironment.$(OBJEXT):  \
    688650        ResolvExpr/$(am__dirstamp) \
    689651        ResolvExpr/$(DEPDIR)/$(am__dirstamp)
     
    694656        @$(MKDIR_P) SymTab/$(DEPDIR)
    695657        @: > SymTab/$(DEPDIR)/$(am__dirstamp)
    696 SymTab/driver_cfa_cpp-Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \
     658SymTab/cfa_cpp-IdTable.$(OBJEXT): SymTab/$(am__dirstamp) \
    697659        SymTab/$(DEPDIR)/$(am__dirstamp)
    698 SymTab/driver_cfa_cpp-Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \
     660SymTab/cfa_cpp-Indexer.$(OBJEXT): SymTab/$(am__dirstamp) \
    699661        SymTab/$(DEPDIR)/$(am__dirstamp)
    700 SymTab/driver_cfa_cpp-Validate.$(OBJEXT): SymTab/$(am__dirstamp) \
     662SymTab/cfa_cpp-Mangler.$(OBJEXT): SymTab/$(am__dirstamp) \
    701663        SymTab/$(DEPDIR)/$(am__dirstamp)
    702 SymTab/driver_cfa_cpp-FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \
     664SymTab/cfa_cpp-Validate.$(OBJEXT): SymTab/$(am__dirstamp) \
    703665        SymTab/$(DEPDIR)/$(am__dirstamp)
    704 SymTab/driver_cfa_cpp-ImplementationType.$(OBJEXT):  \
    705         SymTab/$(am__dirstamp) SymTab/$(DEPDIR)/$(am__dirstamp)
    706 SymTab/driver_cfa_cpp-TypeEquality.$(OBJEXT): SymTab/$(am__dirstamp) \
     666SymTab/cfa_cpp-FixFunction.$(OBJEXT): SymTab/$(am__dirstamp) \
    707667        SymTab/$(DEPDIR)/$(am__dirstamp)
    708 SymTab/driver_cfa_cpp-Autogen.$(OBJEXT): SymTab/$(am__dirstamp) \
     668SymTab/cfa_cpp-ImplementationType.$(OBJEXT): SymTab/$(am__dirstamp) \
     669        SymTab/$(DEPDIR)/$(am__dirstamp)
     670SymTab/cfa_cpp-TypeEquality.$(OBJEXT): SymTab/$(am__dirstamp) \
    709671        SymTab/$(DEPDIR)/$(am__dirstamp)
    710672SynTree/$(am__dirstamp):
     
    714676        @$(MKDIR_P) SynTree/$(DEPDIR)
    715677        @: > SynTree/$(DEPDIR)/$(am__dirstamp)
    716 SynTree/driver_cfa_cpp-Type.$(OBJEXT): SynTree/$(am__dirstamp) \
    717         SynTree/$(DEPDIR)/$(am__dirstamp)
    718 SynTree/driver_cfa_cpp-VoidType.$(OBJEXT): SynTree/$(am__dirstamp) \
    719         SynTree/$(DEPDIR)/$(am__dirstamp)
    720 SynTree/driver_cfa_cpp-BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \
    721         SynTree/$(DEPDIR)/$(am__dirstamp)
    722 SynTree/driver_cfa_cpp-PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \
    723         SynTree/$(DEPDIR)/$(am__dirstamp)
    724 SynTree/driver_cfa_cpp-ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \
    725         SynTree/$(DEPDIR)/$(am__dirstamp)
    726 SynTree/driver_cfa_cpp-FunctionType.$(OBJEXT):  \
     678SynTree/cfa_cpp-Type.$(OBJEXT): SynTree/$(am__dirstamp) \
     679        SynTree/$(DEPDIR)/$(am__dirstamp)
     680SynTree/cfa_cpp-VoidType.$(OBJEXT): SynTree/$(am__dirstamp) \
     681        SynTree/$(DEPDIR)/$(am__dirstamp)
     682SynTree/cfa_cpp-BasicType.$(OBJEXT): SynTree/$(am__dirstamp) \
     683        SynTree/$(DEPDIR)/$(am__dirstamp)
     684SynTree/cfa_cpp-PointerType.$(OBJEXT): SynTree/$(am__dirstamp) \
     685        SynTree/$(DEPDIR)/$(am__dirstamp)
     686SynTree/cfa_cpp-ArrayType.$(OBJEXT): SynTree/$(am__dirstamp) \
     687        SynTree/$(DEPDIR)/$(am__dirstamp)
     688SynTree/cfa_cpp-FunctionType.$(OBJEXT): SynTree/$(am__dirstamp) \
     689        SynTree/$(DEPDIR)/$(am__dirstamp)
     690SynTree/cfa_cpp-ReferenceToType.$(OBJEXT): SynTree/$(am__dirstamp) \
     691        SynTree/$(DEPDIR)/$(am__dirstamp)
     692SynTree/cfa_cpp-TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \
     693        SynTree/$(DEPDIR)/$(am__dirstamp)
     694SynTree/cfa_cpp-TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \
     695        SynTree/$(DEPDIR)/$(am__dirstamp)
     696SynTree/cfa_cpp-AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \
     697        SynTree/$(DEPDIR)/$(am__dirstamp)
     698SynTree/cfa_cpp-Constant.$(OBJEXT): SynTree/$(am__dirstamp) \
     699        SynTree/$(DEPDIR)/$(am__dirstamp)
     700SynTree/cfa_cpp-Expression.$(OBJEXT): SynTree/$(am__dirstamp) \
     701        SynTree/$(DEPDIR)/$(am__dirstamp)
     702SynTree/cfa_cpp-TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
     703        SynTree/$(DEPDIR)/$(am__dirstamp)
     704SynTree/cfa_cpp-CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
     705        SynTree/$(DEPDIR)/$(am__dirstamp)
     706SynTree/cfa_cpp-TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
     707        SynTree/$(DEPDIR)/$(am__dirstamp)
     708SynTree/cfa_cpp-ApplicationExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
     709        SynTree/$(DEPDIR)/$(am__dirstamp)
     710SynTree/cfa_cpp-AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
     711        SynTree/$(DEPDIR)/$(am__dirstamp)
     712SynTree/cfa_cpp-Statement.$(OBJEXT): SynTree/$(am__dirstamp) \
     713        SynTree/$(DEPDIR)/$(am__dirstamp)
     714SynTree/cfa_cpp-CompoundStmt.$(OBJEXT): SynTree/$(am__dirstamp) \
     715        SynTree/$(DEPDIR)/$(am__dirstamp)
     716SynTree/cfa_cpp-DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \
     717        SynTree/$(DEPDIR)/$(am__dirstamp)
     718SynTree/cfa_cpp-Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \
     719        SynTree/$(DEPDIR)/$(am__dirstamp)
     720SynTree/cfa_cpp-DeclarationWithType.$(OBJEXT):  \
    727721        SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    728 SynTree/driver_cfa_cpp-ReferenceToType.$(OBJEXT):  \
    729         SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    730 SynTree/driver_cfa_cpp-TupleType.$(OBJEXT): SynTree/$(am__dirstamp) \
    731         SynTree/$(DEPDIR)/$(am__dirstamp)
    732 SynTree/driver_cfa_cpp-TypeofType.$(OBJEXT): SynTree/$(am__dirstamp) \
    733         SynTree/$(DEPDIR)/$(am__dirstamp)
    734 SynTree/driver_cfa_cpp-AttrType.$(OBJEXT): SynTree/$(am__dirstamp) \
    735         SynTree/$(DEPDIR)/$(am__dirstamp)
    736 SynTree/driver_cfa_cpp-VarArgsType.$(OBJEXT): SynTree/$(am__dirstamp) \
    737         SynTree/$(DEPDIR)/$(am__dirstamp)
    738 SynTree/driver_cfa_cpp-Constant.$(OBJEXT): SynTree/$(am__dirstamp) \
    739         SynTree/$(DEPDIR)/$(am__dirstamp)
    740 SynTree/driver_cfa_cpp-Expression.$(OBJEXT): SynTree/$(am__dirstamp) \
    741         SynTree/$(DEPDIR)/$(am__dirstamp)
    742 SynTree/driver_cfa_cpp-TupleExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
    743         SynTree/$(DEPDIR)/$(am__dirstamp)
    744 SynTree/driver_cfa_cpp-CommaExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
    745         SynTree/$(DEPDIR)/$(am__dirstamp)
    746 SynTree/driver_cfa_cpp-TypeExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
    747         SynTree/$(DEPDIR)/$(am__dirstamp)
    748 SynTree/driver_cfa_cpp-ApplicationExpr.$(OBJEXT):  \
    749         SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    750 SynTree/driver_cfa_cpp-AddressExpr.$(OBJEXT): SynTree/$(am__dirstamp) \
    751         SynTree/$(DEPDIR)/$(am__dirstamp)
    752 SynTree/driver_cfa_cpp-Statement.$(OBJEXT): SynTree/$(am__dirstamp) \
    753         SynTree/$(DEPDIR)/$(am__dirstamp)
    754 SynTree/driver_cfa_cpp-CompoundStmt.$(OBJEXT):  \
    755         SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    756 SynTree/driver_cfa_cpp-DeclStmt.$(OBJEXT): SynTree/$(am__dirstamp) \
    757         SynTree/$(DEPDIR)/$(am__dirstamp)
    758 SynTree/driver_cfa_cpp-Declaration.$(OBJEXT): SynTree/$(am__dirstamp) \
    759         SynTree/$(DEPDIR)/$(am__dirstamp)
    760 SynTree/driver_cfa_cpp-DeclarationWithType.$(OBJEXT):  \
    761         SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    762 SynTree/driver_cfa_cpp-ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
    763         SynTree/$(DEPDIR)/$(am__dirstamp)
    764 SynTree/driver_cfa_cpp-FunctionDecl.$(OBJEXT):  \
    765         SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    766 SynTree/driver_cfa_cpp-AggregateDecl.$(OBJEXT):  \
    767         SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    768 SynTree/driver_cfa_cpp-NamedTypeDecl.$(OBJEXT):  \
    769         SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    770 SynTree/driver_cfa_cpp-TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
    771         SynTree/$(DEPDIR)/$(am__dirstamp)
    772 SynTree/driver_cfa_cpp-Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \
    773         SynTree/$(DEPDIR)/$(am__dirstamp)
    774 SynTree/driver_cfa_cpp-Visitor.$(OBJEXT): SynTree/$(am__dirstamp) \
    775         SynTree/$(DEPDIR)/$(am__dirstamp)
    776 SynTree/driver_cfa_cpp-Mutator.$(OBJEXT): SynTree/$(am__dirstamp) \
    777         SynTree/$(DEPDIR)/$(am__dirstamp)
    778 SynTree/driver_cfa_cpp-AddStmtVisitor.$(OBJEXT):  \
    779         SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    780 SynTree/driver_cfa_cpp-TypeSubstitution.$(OBJEXT):  \
    781         SynTree/$(am__dirstamp) SynTree/$(DEPDIR)/$(am__dirstamp)
    782 SynTree/driver_cfa_cpp-Attribute.$(OBJEXT): SynTree/$(am__dirstamp) \
     722SynTree/cfa_cpp-ObjectDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
     723        SynTree/$(DEPDIR)/$(am__dirstamp)
     724SynTree/cfa_cpp-FunctionDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
     725        SynTree/$(DEPDIR)/$(am__dirstamp)
     726SynTree/cfa_cpp-AggregateDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
     727        SynTree/$(DEPDIR)/$(am__dirstamp)
     728SynTree/cfa_cpp-NamedTypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
     729        SynTree/$(DEPDIR)/$(am__dirstamp)
     730SynTree/cfa_cpp-TypeDecl.$(OBJEXT): SynTree/$(am__dirstamp) \
     731        SynTree/$(DEPDIR)/$(am__dirstamp)
     732SynTree/cfa_cpp-Initializer.$(OBJEXT): SynTree/$(am__dirstamp) \
     733        SynTree/$(DEPDIR)/$(am__dirstamp)
     734SynTree/cfa_cpp-Visitor.$(OBJEXT): SynTree/$(am__dirstamp) \
     735        SynTree/$(DEPDIR)/$(am__dirstamp)
     736SynTree/cfa_cpp-Mutator.$(OBJEXT): SynTree/$(am__dirstamp) \
     737        SynTree/$(DEPDIR)/$(am__dirstamp)
     738SynTree/cfa_cpp-CodeGenVisitor.$(OBJEXT): SynTree/$(am__dirstamp) \
     739        SynTree/$(DEPDIR)/$(am__dirstamp)
     740SynTree/cfa_cpp-TypeSubstitution.$(OBJEXT): SynTree/$(am__dirstamp) \
    783741        SynTree/$(DEPDIR)/$(am__dirstamp)
    784742Tuples/$(am__dirstamp):
     
    788746        @$(MKDIR_P) Tuples/$(DEPDIR)
    789747        @: > Tuples/$(DEPDIR)/$(am__dirstamp)
    790 Tuples/driver_cfa_cpp-Mutate.$(OBJEXT): Tuples/$(am__dirstamp) \
     748Tuples/cfa_cpp-Mutate.$(OBJEXT): Tuples/$(am__dirstamp) \
    791749        Tuples/$(DEPDIR)/$(am__dirstamp)
    792 Tuples/driver_cfa_cpp-AssignExpand.$(OBJEXT): Tuples/$(am__dirstamp) \
     750Tuples/cfa_cpp-AssignExpand.$(OBJEXT): Tuples/$(am__dirstamp) \
    793751        Tuples/$(DEPDIR)/$(am__dirstamp)
    794 Tuples/driver_cfa_cpp-FunctionFixer.$(OBJEXT): Tuples/$(am__dirstamp) \
     752Tuples/cfa_cpp-FunctionFixer.$(OBJEXT): Tuples/$(am__dirstamp) \
    795753        Tuples/$(DEPDIR)/$(am__dirstamp)
    796 Tuples/driver_cfa_cpp-TupleAssignment.$(OBJEXT):  \
    797         Tuples/$(am__dirstamp) Tuples/$(DEPDIR)/$(am__dirstamp)
    798 Tuples/driver_cfa_cpp-FunctionChecker.$(OBJEXT):  \
    799         Tuples/$(am__dirstamp) Tuples/$(DEPDIR)/$(am__dirstamp)
    800 Tuples/driver_cfa_cpp-NameMatcher.$(OBJEXT): Tuples/$(am__dirstamp) \
     754Tuples/cfa_cpp-TupleAssignment.$(OBJEXT): Tuples/$(am__dirstamp) \
    801755        Tuples/$(DEPDIR)/$(am__dirstamp)
    802 driver/$(am__dirstamp):
    803         @$(MKDIR_P) driver
    804         @: > driver/$(am__dirstamp)
    805 driver/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)
     756Tuples/cfa_cpp-FunctionChecker.$(OBJEXT): Tuples/$(am__dirstamp) \
     757        Tuples/$(DEPDIR)/$(am__dirstamp)
     758Tuples/cfa_cpp-NameMatcher.$(OBJEXT): Tuples/$(am__dirstamp) \
     759        Tuples/$(DEPDIR)/$(am__dirstamp)
     760cfa-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)
    808763
    809764mostlyclean-compile:
    810765        -rm -f *.$(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)
     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)
    914869
    915870distclean-compile:
    916871        -rm -f *.tab.c
    917872
    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@
     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@
    1023978
    1024979.cc.o:
    1025 @am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
     980@am__fastdepCXX_TRUE@   depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
    1026981@am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
    1027982@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
    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 $@ $<
     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 $@ $<
    1031986
    1032987.cc.obj:
    1033 @am__fastdepCXX_TRUE@   $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
     988@am__fastdepCXX_TRUE@   depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
    1034989@am__fastdepCXX_TRUE@   $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
    1035990@am__fastdepCXX_TRUE@   $(am__mv) $$depbase.Tpo $$depbase.Po
    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 
    1040 driver_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 
    1047 driver_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 
    1054 driver_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 
    1061 driver_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 
    1068 CodeGen/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 
    1075 CodeGen/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 
    1082 CodeGen/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 
    1089 CodeGen/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 
    1096 CodeGen/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 
    1103 CodeGen/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 
    1110 CodeGen/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 
    1117 CodeGen/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 
    1124 CodeGen/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 
    1131 CodeGen/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 
    1138 Common/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 
    1145 Common/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 
    1152 Common/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 
    1159 Common/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 
    1166 ControlStruct/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 
    1173 ControlStruct/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 
    1180 ControlStruct/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 
    1187 ControlStruct/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 
    1194 ControlStruct/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 
    1201 ControlStruct/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 
    1208 ControlStruct/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 
    1215 ControlStruct/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 
    1222 ControlStruct/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 
    1229 ControlStruct/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 
    1236 ControlStruct/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 
    1243 ControlStruct/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 
    1250 Designators/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 
    1257 Designators/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 
    1264 GenPoly/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 
    1271 GenPoly/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 
    1278 GenPoly/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 
    1285 GenPoly/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 
    1292 GenPoly/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 
    1299 GenPoly/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 
    1306 GenPoly/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 
    1313 GenPoly/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 
    1320 GenPoly/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 
    1327 GenPoly/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 
    1334 GenPoly/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 
    1341 GenPoly/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 
    1348 GenPoly/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 
    1355 GenPoly/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 
    1362 GenPoly/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 
    1369 GenPoly/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 
    1376 GenPoly/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 
    1383 GenPoly/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 
    1390 InitTweak/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 
    1397 InitTweak/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 
    1404 InitTweak/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 
    1411 InitTweak/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 
    1418 InitTweak/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 
    1425 InitTweak/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 
    1432 InitTweak/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 
    1439 InitTweak/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 
    1446 Parser/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 
    1453 Parser/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 
    1460 Parser/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 
    1467 Parser/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 
    1474 Parser/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 
    1481 Parser/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 
    1488 Parser/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 
    1495 Parser/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 
    1502 Parser/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 
    1509 Parser/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 
    1516 Parser/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 
    1523 Parser/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 
    1530 Parser/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 
    1537 Parser/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 
    1544 Parser/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 
    1551 Parser/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 
    1558 Parser/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 
    1565 Parser/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 
    1572 Parser/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 
    1579 Parser/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 
    1586 Parser/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 
    1593 Parser/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 
    1600 Parser/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 
    1607 Parser/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 
    1614 ResolvExpr/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 
    1621 ResolvExpr/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 
    1628 ResolvExpr/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 
    1635 ResolvExpr/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 
    1642 ResolvExpr/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 
    1649 ResolvExpr/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 
    1656 ResolvExpr/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 
    1663 ResolvExpr/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 
    1670 ResolvExpr/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 
    1677 ResolvExpr/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 
    1684 ResolvExpr/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 
    1691 ResolvExpr/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 
    1698 ResolvExpr/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 
    1705 ResolvExpr/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 
    1712 ResolvExpr/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 
    1719 ResolvExpr/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 
    1726 ResolvExpr/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 
    1733 ResolvExpr/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 
    1740 ResolvExpr/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 
    1747 ResolvExpr/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 
    1754 ResolvExpr/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 
    1761 ResolvExpr/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 
    1768 ResolvExpr/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 
    1775 ResolvExpr/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 
    1782 ResolvExpr/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 
    1789 ResolvExpr/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 
    1796 ResolvExpr/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 
    1803 ResolvExpr/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 
    1810 ResolvExpr/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 
    1817 ResolvExpr/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 
    1824 ResolvExpr/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 
    1831 ResolvExpr/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 
    1838 ResolvExpr/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 
    1845 ResolvExpr/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 
    1852 SymTab/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 
    1859 SymTab/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 
    1866 SymTab/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 
    1873 SymTab/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 
    1880 SymTab/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 
    1887 SymTab/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 
    1894 SymTab/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 
    1901 SymTab/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 
    1908 SymTab/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 
    1915 SymTab/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 
    1922 SymTab/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 
    1929 SymTab/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 
    1936 SymTab/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 
    1943 SymTab/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 
    1950 SynTree/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 
    1957 SynTree/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 
    1964 SynTree/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 
    1971 SynTree/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 
    1978 SynTree/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 
    1985 SynTree/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 
    1992 SynTree/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 
    1999 SynTree/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 
    2006 SynTree/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 
    2013 SynTree/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 
    2020 SynTree/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 
    2027 SynTree/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 
    2034 SynTree/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 
    2041 SynTree/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 
    2048 SynTree/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 
    2055 SynTree/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 
    2062 SynTree/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 
    2069 SynTree/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 
    2076 SynTree/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 
    2083 SynTree/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 
    2090 SynTree/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 
    2097 SynTree/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 
    2104 SynTree/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 
    2111 SynTree/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 
    2118 SynTree/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 
    2125 SynTree/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 
    2132 SynTree/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 
    2139 SynTree/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 
    2146 SynTree/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 
    2153 SynTree/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 
    2160 SynTree/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 
    2167 SynTree/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 
    2174 SynTree/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 
    2181 SynTree/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 
    2188 SynTree/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 
    2195 SynTree/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 
    2202 SynTree/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 
    2209 SynTree/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 
    2216 SynTree/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 
    2223 SynTree/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 
    2230 SynTree/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 
    2237 SynTree/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 
    2244 SynTree/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 
    2251 SynTree/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 
    2258 SynTree/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 
    2265 SynTree/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 
    2272 SynTree/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 
    2279 SynTree/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 
    2286 SynTree/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 
    2293 SynTree/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 
    2300 SynTree/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 
    2307 SynTree/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 
    2314 SynTree/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 
    2321 SynTree/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 
    2328 SynTree/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 
    2335 SynTree/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 
    2342 SynTree/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 
    2349 SynTree/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 
    2356 SynTree/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 
    2363 SynTree/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 
    2370 SynTree/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 
    2377 SynTree/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 
    2384 SynTree/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 
    2391 SynTree/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 
    2398 SynTree/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 
    2405 SynTree/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 
    2412 SynTree/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 
    2419 SynTree/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 
    2426 Tuples/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 
    2433 Tuples/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 
    2440 Tuples/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 
    2447 Tuples/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 
    2454 Tuples/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 
    2461 Tuples/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 
    2468 Tuples/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 
    2475 Tuples/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 
    2482 Tuples/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 
    2489 Tuples/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 
    2496 Tuples/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 
    2503 Tuples/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`
     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
     995cfa_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
     1002cfa_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
     1009cfa_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
     1016cfa_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
     1023CodeGen/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
     1030CodeGen/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
     1037CodeGen/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
     1044CodeGen/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
     1051CodeGen/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
     1058CodeGen/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
     1065CodeGen/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
     1072CodeGen/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
     1079CodeGen/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
     1086CodeGen/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
     1093Common/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
     1100Common/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
     1107Common/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
     1114Common/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
     1121ControlStruct/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
     1128ControlStruct/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
     1135ControlStruct/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
     1142ControlStruct/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
     1149ControlStruct/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
     1156ControlStruct/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
     1163ControlStruct/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
     1170ControlStruct/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
     1177ControlStruct/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
     1184ControlStruct/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
     1191ControlStruct/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
     1198ControlStruct/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
     1205ControlStruct/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
     1212ControlStruct/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
     1219ControlStruct/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
     1226ControlStruct/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
     1233Designators/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
     1240Designators/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
     1247GenPoly/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
     1254GenPoly/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
     1261GenPoly/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
     1268GenPoly/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
     1275GenPoly/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
     1282GenPoly/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
     1289GenPoly/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
     1296GenPoly/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
     1303GenPoly/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
     1310GenPoly/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
     1317GenPoly/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
     1324GenPoly/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
     1331GenPoly/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
     1338GenPoly/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
     1345GenPoly/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
     1352GenPoly/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
     1359InitTweak/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
     1366InitTweak/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
     1373InitTweak/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
     1380InitTweak/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
     1387InitTweak/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
     1394InitTweak/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
     1401InitTweak/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
     1408InitTweak/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
     1415InitTweak/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
     1422InitTweak/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
     1429Parser/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
     1436Parser/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
     1443Parser/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
     1450Parser/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
     1457Parser/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
     1464Parser/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
     1471Parser/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
     1478Parser/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
     1485Parser/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
     1492Parser/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
     1499Parser/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
     1506Parser/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
     1513Parser/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
     1520Parser/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
     1527Parser/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
     1534Parser/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
     1541Parser/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
     1548Parser/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
     1555Parser/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
     1562Parser/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
     1569Parser/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
     1576Parser/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
     1583Parser/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
     1590Parser/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
     1597ResolvExpr/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
     1604ResolvExpr/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
     1611ResolvExpr/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
     1618ResolvExpr/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
     1625ResolvExpr/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
     1632ResolvExpr/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
     1639ResolvExpr/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
     1646ResolvExpr/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
     1653ResolvExpr/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
     1660ResolvExpr/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
     1667ResolvExpr/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
     1674ResolvExpr/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
     1681ResolvExpr/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
     1688ResolvExpr/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
     1695ResolvExpr/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
     1702ResolvExpr/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
     1709ResolvExpr/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
     1716ResolvExpr/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
     1723ResolvExpr/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
     1730ResolvExpr/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
     1737ResolvExpr/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
     1744ResolvExpr/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
     1751ResolvExpr/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
     1758ResolvExpr/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
     1765ResolvExpr/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
     1772ResolvExpr/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
     1779ResolvExpr/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
     1786ResolvExpr/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
     1793ResolvExpr/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
     1800ResolvExpr/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
     1807ResolvExpr/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
     1814ResolvExpr/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
     1821ResolvExpr/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
     1828ResolvExpr/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
     1835SymTab/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
     1842SymTab/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
     1849SymTab/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
     1856SymTab/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
     1863SymTab/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
     1870SymTab/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
     1877SymTab/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
     1884SymTab/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
     1891SymTab/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
     1898SymTab/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
     1905SymTab/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
     1912SymTab/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
     1919SymTab/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
     1926SymTab/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
     1933SynTree/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
     1940SynTree/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
     1947SynTree/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
     1954SynTree/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
     1961SynTree/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
     1968SynTree/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
     1975SynTree/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
     1982SynTree/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
     1989SynTree/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
     1996SynTree/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
     2003SynTree/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
     2010SynTree/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
     2017SynTree/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
     2024SynTree/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
     2031SynTree/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
     2038SynTree/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
     2045SynTree/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
     2052SynTree/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
     2059SynTree/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
     2066SynTree/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
     2073SynTree/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
     2080SynTree/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
     2087SynTree/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
     2094SynTree/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
     2101SynTree/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
     2108SynTree/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
     2115SynTree/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
     2122SynTree/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
     2129SynTree/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
     2136SynTree/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
     2143SynTree/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
     2150SynTree/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
     2157SynTree/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
     2164SynTree/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
     2171SynTree/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
     2178SynTree/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
     2185SynTree/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
     2192SynTree/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
     2199SynTree/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
     2206SynTree/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
     2213SynTree/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
     2220SynTree/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
     2227SynTree/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
     2234SynTree/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
     2241SynTree/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
     2248SynTree/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
     2255SynTree/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
     2262SynTree/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
     2269SynTree/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
     2276SynTree/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
     2283SynTree/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
     2290SynTree/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
     2297SynTree/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
     2304SynTree/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
     2311SynTree/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
     2318SynTree/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
     2325SynTree/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
     2332SynTree/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
     2339SynTree/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
     2346SynTree/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
     2353SynTree/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
     2360SynTree/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
     2367SynTree/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
     2374SynTree/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
     2381Tuples/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
     2388Tuples/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
     2395Tuples/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
     2402Tuples/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
     2409Tuples/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
     2416Tuples/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
     2423Tuples/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
     2430Tuples/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
     2437Tuples/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
     2444Tuples/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
     2451Tuples/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
     2458Tuples/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`
    25092464
    25102465.ll.cc:
    2511         $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
     2466        $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE)
    25122467
    25132468.yy.cc:
    2514         $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
     2469        $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE)
    25152470
    25162471ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     
    26532608        -rm -f Tuples/$(DEPDIR)/$(am__dirstamp)
    26542609        -rm -f Tuples/$(am__dirstamp)
    2655         -rm -f driver/$(am__dirstamp)
    26562610
    26572611maintainer-clean-generic:
  • src/Parser/DeclarationNode.cc

    r242d458 r679864e1  
    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 12 20:49:31 2016
    13 // Update Count     : 164
     12// Last Modified On : Tue Jul 14 14:46:32 2015
     13// Update Count     : 126
    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" };
    40 const char *DeclarationNode::builtinTypeName[] = { "__builtin_va_list" };
    4140
    4241UniqueName DeclarationNode::anonymous( "__anonymous" );
    4342
    44 extern LinkageSpec::Type linkage;                                               // defined in parser.yy
     43extern LinkageSpec::Type linkage;               /* defined in cfa.y */
    4544
    4645DeclarationNode *DeclarationNode::clone() const {
     
    5554        newnode->linkage = linkage;
    5655        return newnode;
    57 } // DeclarationNode::clone
     56}
    5857
    5958DeclarationNode::DeclarationNode() : type( 0 ), bitfieldWidth( 0 ), initializer( 0 ), hasEllipsis( false ), linkage( ::linkage ) {
     
    9796                os << endl << string( indent + 2, ' ' ) << "with initializer ";
    9897                initializer->printOneLine( os );
    99                 os << " maybe constructed? " << initializer->get_maybeConstructed();
    100 
    10198        } // if
    10299
     
    119116        newnode->type->function->newStyle = newStyle;
    120117        newnode->type->function->body = body;
    121         typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
    122118
    123119        if ( body ) {
     
    132128
    133129        return newnode;
    134 } // DeclarationNode::newFunction
     130}
    135131
    136132DeclarationNode *DeclarationNode::newQualifier( Qualifier q ) {
     
    139135        newnode->type->qualifiers.push_back( q );
    140136        return newnode;
    141 } // DeclarationNode::newQualifier
     137}
    142138
    143139DeclarationNode *DeclarationNode::newStorageClass( DeclarationNode::StorageClass sc ) {
     
    145141        newnode->storageClasses.push_back( sc );
    146142        return newnode;
    147 } // DeclarationNode::newStorageClass
     143}
    148144
    149145DeclarationNode *DeclarationNode::newBasicType( BasicType bt ) {
     
    152148        newnode->type->basic->typeSpec.push_back( bt );
    153149        return newnode;
    154 } // DeclarationNode::newBasicType
    155 
    156 DeclarationNode *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
     150}
    162151
    163152DeclarationNode *DeclarationNode::newModifier( Modifier mod ) {
     
    166155        newnode->type->basic->modifiers.push_back( mod );
    167156        return newnode;
    168 } // DeclarationNode::newModifier
     157}
    169158
    170159DeclarationNode *DeclarationNode::newForall( DeclarationNode *forall ) {
     
    173162        newnode->type->forall = forall;
    174163        return newnode;
    175 } // DeclarationNode::newForall
     164}
    176165
    177166DeclarationNode *DeclarationNode::newFromTypedef( std::string *name ) {
     
    182171        newnode->type->symbolic->params = 0;
    183172        return newnode;
    184 } // DeclarationNode::newFromTypedef
    185 
    186 DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body ) {
     173}
     174
     175DeclarationNode *DeclarationNode::newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields ) {
    187176        DeclarationNode *newnode = new DeclarationNode;
    188177        newnode->type = new TypeData( TypeData::Aggregate );
     
    190179        newnode->type->aggregate->name = assign_strptr( name );
    191180        if ( newnode->type->aggregate->name == "" ) {           // anonymous aggregate ?
    192                 newnode->type->aggregate->name = anonymous.newName();
     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() );
    193189        } // if
    194190        newnode->type->aggregate->actuals = actuals;
    195191        newnode->type->aggregate->fields = fields;
    196         newnode->type->aggregate->body = body;
    197         return newnode;
    198 } // DeclarationNode::newAggregate
     192        return newnode;
     193}
    199194
    200195DeclarationNode *DeclarationNode::newEnum( std::string *name, DeclarationNode *constants ) {
     
    205200        if ( newnode->type->enumeration->name == "" ) {         // anonymous enumeration ?
    206201                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() );
    207209        } // if
    208210        newnode->type->enumeration->constants = constants;
    209211        return newnode;
    210 } // DeclarationNode::newEnum
     212}
    211213
    212214DeclarationNode *DeclarationNode::newEnumConstant( std::string *name, ExpressionNode *constant ) {
    213215        DeclarationNode *newnode = new DeclarationNode;
    214216        newnode->name = assign_strptr( name );
    215         newnode->enumeratorValue = constant;
    216         typedefTable.addToEnclosingScope( newnode->name, TypedefTable::ID );
    217         return newnode;
    218 } // DeclarationNode::newEnumConstant
     217        // do something with the constant
     218        return newnode;
     219}
    219220
    220221DeclarationNode *DeclarationNode::newName( std::string *name ) {
     
    222223        newnode->name = assign_strptr( name );
    223224        return newnode;
    224 } // DeclarationNode::newName
     225}
    225226
    226227DeclarationNode *DeclarationNode::newFromTypeGen( std::string *name, ExpressionNode *params ) {
     
    231232        newnode->type->symbolic->actuals = params;
    232233        return newnode;
    233 } // DeclarationNode::newFromTypeGen
     234}
    234235
    235236DeclarationNode *DeclarationNode::newTypeParam( TypeClass tc, std::string *name ) {
     
    240241        newnode->type->variable->name = newnode->name;
    241242        return newnode;
    242 } // DeclarationNode::newTypeParam
    243 
    244 DeclarationNode *DeclarationNode::newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {
     243}
     244
     245DeclarationNode *DeclarationNode::newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {
    245246        DeclarationNode *newnode = new DeclarationNode;
    246247        newnode->type = new TypeData( TypeData::Aggregate );
    247         newnode->type->aggregate->kind = Trait;
     248        newnode->type->aggregate->kind = Context;
    248249        newnode->type->aggregate->params = params;
    249250        newnode->type->aggregate->fields = asserts;
    250251        newnode->type->aggregate->name = assign_strptr( name );
    251252        return newnode;
    252 } // DeclarationNode::newTrait
    253 
    254 DeclarationNode *DeclarationNode::newTraitUse( std::string *name, ExpressionNode *params ) {
     253}
     254
     255DeclarationNode *DeclarationNode::newContextUse( std::string *name, ExpressionNode *params ) {
    255256        DeclarationNode *newnode = new DeclarationNode;
    256257        newnode->type = new TypeData( TypeData::AggregateInst );
    257258        newnode->type->aggInst->aggregate = new TypeData( TypeData::Aggregate );
    258         newnode->type->aggInst->aggregate->aggregate->kind = Trait;
     259        newnode->type->aggInst->aggregate->aggregate->kind = Context;
    259260        newnode->type->aggInst->aggregate->aggregate->name = assign_strptr( name );
    260261        newnode->type->aggInst->params = params;
    261262        return newnode;
    262 } // DeclarationNode::newTraitUse
     263}
    263264
    264265DeclarationNode *DeclarationNode::newTypeDecl( std::string *name, DeclarationNode *typeParams ) {
     
    270271        newnode->type->symbolic->name = newnode->name;
    271272        return newnode;
    272 } // DeclarationNode::newTypeDecl
     273}
    273274
    274275DeclarationNode *DeclarationNode::newPointer( DeclarationNode *qualifiers ) {
     
    276277        newnode->type = new TypeData( TypeData::Pointer );
    277278        return newnode->addQualifiers( qualifiers );
    278 } // DeclarationNode::newPointer
     279}
    279280
    280281DeclarationNode *DeclarationNode::newArray( ExpressionNode *size, DeclarationNode *qualifiers, bool isStatic ) {
     
    289290        } // if
    290291        return newnode->addQualifiers( qualifiers );
    291 } // DeclarationNode::newArray
     292}
    292293
    293294DeclarationNode *DeclarationNode::newVarArray( DeclarationNode *qualifiers ) {
     
    356357        } // if
    357358}
    358 
     359         
    359360DeclarationNode *DeclarationNode::addQualifiers( DeclarationNode *q ) {
    360361        if ( q ) {
     
    507508                assert( false );
    508509        } // switch
    509 
     510       
    510511        return this;
    511512}
     
    618619                assert( a->type->kind == TypeData::Array );
    619620                TypeData *lastArray = findLast( a->type );
    620                 if ( type ) {
     621                if ( type ) { 
    621622                        switch ( type->kind ) {
    622623                          case TypeData::Aggregate:
     
    662663        } // if
    663664}
    664 
     665       
    665666DeclarationNode *DeclarationNode::addIdList( DeclarationNode *ids ) {
    666667        type = addIdListToType( type, ids );
     
    793794                        errors.append( e );
    794795                } // try
    795                 cur = dynamic_cast<DeclarationNode *>( cur->get_link() );
     796                cur = dynamic_cast< DeclarationNode *>( cur->get_link() );
    796797        } // while
    797798        if ( ! errors.isEmpty() ) {
     
    856857Declaration *DeclarationNode::build() const {
    857858        if ( type ) {
    858                 return type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) )->set_extension( extension );
     859                Declaration *newDecl = type->buildDecl( name, buildStorageClass(), maybeBuild< Expression >( bitfieldWidth ), buildFuncSpecifier( Inline ), buildFuncSpecifier( Noreturn ), linkage, maybeBuild< Initializer >(initializer) );
     860                return newDecl;
    859861        } // if
    860862        if ( ! buildFuncSpecifier( Inline ) && ! buildFuncSpecifier( Noreturn ) ) {
    861                 return (new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) ))->set_extension( extension );
     863                return new ObjectDecl( name, buildStorageClass(), linkage, maybeBuild< Expression >( bitfieldWidth ), 0, maybeBuild< Initializer >( initializer ) );
    862864        } // if
    863865        throw SemanticError( "invalid function specifier in declaration of ", this );
     
    866868Type *DeclarationNode::buildType() const {
    867869        assert( type );
    868 
     870 
    869871        switch ( type->kind ) {
    870872          case TypeData::Enum:
     
    879881                          ret = new UnionInstType( type->buildQualifiers(), type->aggregate->name );
    880882                          break;
    881                         case DeclarationNode::Trait:
    882                           ret = new TraitInstType( type->buildQualifiers(), type->aggregate->name );
     883                        case DeclarationNode::Context:
     884                          ret = new ContextInstType( type->buildQualifiers(), type->aggregate->name );
    883885                          break;
    884886                        default:
  • src/Parser/ExpressionNode.cc

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Fri Aug  5 07:56:23 2016
    13 // Update Count     : 375
    14 //
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 13:51:11 2015
     13// Update Count     : 254
     14// 
    1515
    1616#include <cassert>
     
    1919#include <sstream>
    2020#include <cstdio>
     21#include <climits>
    2122
    2223#include "ParseNode.h"
    23 #include "TypeData.h"
    2424#include "SynTree/Constant.h"
    2525#include "SynTree/Expression.h"
    26 #include "SynTree/Declaration.h"
    27 #include "Common/UnimplementedError.h"
     26#include "UnimplementedError.h"
    2827#include "parseutility.h"
    29 #include "Common/utility.h"
     28#include "utility.h"
    3029
    3130using namespace std;
    3231
    33 ExpressionNode::ExpressionNode() : ParseNode() {}
    34 
    35 ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ) {}
    36 
    37 ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ), extension( other.extension ) {
     32ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {}
     33
     34ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ), argName( 0 ) {}
     35
     36ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) {
    3837        if ( other.argName ) {
    3938                argName = other.argName->clone();
     
    8382}
    8483
    85 // CommaExprNode *ExpressionNode::add_to_list( ExpressionNode *exp ) {
    86 //      return new CommaExprNode( this, exp );
    87 // }
    88 
    89 //##############################################################################
    90 
    91 ConstantNode::ConstantNode( ConstantExpr *expr ) : expr( expr ) {
     84CommaExprNode *ExpressionNode::add_to_list( ExpressionNode *exp ) {
     85        return new CommaExprNode( this, exp );
     86}
     87
     88//##############################################################################
     89
     90static inline bool checkU( char c ) { return c == 'u' || c == 'U'; }
     91static inline bool checkL( char c ) { return c == 'l' || c == 'L'; }
     92static inline bool checkF( char c ) { return c == 'f' || c == 'F'; }
     93static 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
     107ConstantNode::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
    92206} // ConstantNode::ConstantNode
    93207
    94208ConstantNode *ConstantNode::appendstr( const std::string *newValue ) {
    95209        assert( newValue != 0 );
    96 
    97         string value = expr->get_constant()->get_value();
     210        assert( type == String );
    98211
    99212        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    100213        value.insert( value.length() - 1, newValue->substr( 1, newValue->length() - 2 ) );
    101         expr->get_constant()->set_value( value );
    102 
     214       
    103215        delete newValue;                                                                        // allocated by lexer
    104216        return this;
     
    106218
    107219void ConstantNode::printOneLine( std::ostream &os, int indent ) const {
    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 << ' ';
     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 << ' ';
    125237}
    126238
     
    131243
    132244Expression *ConstantNode::build() const {
    133         return expr->clone();
     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        }
    134261}
    135262
     
    198325
    199326Expression *DesignatorNode::build() const {
    200         Expression * ret = maybeBuild<Expression>(get_argName());
     327        Expression * ret = get_argName()->build();
    201328
    202329        if ( isArrayIndex ) {
    203                 // need to traverse entire structure and change any instances of 0 or 1 to
     330                // need to traverse entire structure and change any instances of 0 or 1 to 
    204331                // ConstantExpr
    205332                DesignatorFixer fixer;
     
    238365//##############################################################################
    239366
    240 static const char *opName[] = {
    241         "TupleC", "Comma", "TupleFieldSel", // "TuplePFieldSel", // n-adic
     367OperatorNode::OperatorNode( Type t ) : type( t ) {}
     368
     369OperatorNode::OperatorNode( const OperatorNode &other ) : ExpressionNode( other ), type( other.type ) {
     370}
     371
     372OperatorNode::~OperatorNode() {}
     373
     374OperatorNode::Type OperatorNode::get_type( void ) const{
     375        return type;
     376}
     377
     378void OperatorNode::printOneLine( std::ostream &os, int indent ) const {
     379        printDesignation( os );
     380        os << OpName[ type ] << ' ';
     381}
     382
     383void OperatorNode::print( std::ostream &os, int indent ) const{
     384        printDesignation( os );
     385        os << string( indent, ' ' ) << "Operator: " << OpName[type] << endl;
     386        return;
     387}
     388
     389const char *OperatorNode::get_typename( void ) const{
     390        return OpName[ type ];
     391}
     392
     393const char *OperatorNode::OpName[] = {
     394        "TupleC",  "Comma", "TupleFieldSel",// "TuplePFieldSel", //n-adic
    242395        // triadic
    243         "Cond", "NCond",
     396        "Cond",   "NCond",
    244397        // diadic
    245         "SizeOf", "AlignOf", "OffsetOf", "Attr", "?+?", "?-?", "?*?", "?/?", "?%?", "||", "&&",
    246         "?|?", "?&?", "?^?", "Cast", "?<<?", "?>>?", "?<?", "?>?", "?<=?", "?>=?", "?==?", "?!=?",
    247         "?=?", "?*=?", "?/=?", "?%=?", "?+=?", "?-=?", "?<<=?", "?>>=?", "?&=?", "?^=?", "?|=?",
    248         "?[?]", "FieldSel", "PFieldSel", "...",
     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",
    249403        // monadic
    250         "+?", "-?", "AddressOf", "*?", "!?", "~?", "++?", "?++", "--?", "?--", "&&"
     404        "UnPlus", "UnMinus", "AddressOf", "PointTo", "Neg", "BitNeg", "Incr", "IncrPost", "Decr", "DecrPost", "LabelAddress"
    251405};
    252 
    253 OperatorNode::OperatorNode( Type t ) : type( t ) {}
    254 
    255 OperatorNode::OperatorNode( const OperatorNode &other ) : ExpressionNode( other ), type( other.type ) {
    256 }
    257 
    258 OperatorNode::~OperatorNode() {}
    259 
    260 OperatorNode::Type OperatorNode::get_type( void ) const {
    261         return type;
    262 }
    263 
    264 void OperatorNode::printOneLine( std::ostream &os, int indent ) const {
    265         printDesignation( os );
    266         os << opName[ type ] << ' ';
    267 }
    268 
    269 void OperatorNode::print( std::ostream &os, int indent ) const{
    270         printDesignation( os );
    271         os << string( indent, ' ' ) << "Operator: " << opName[type] << endl;
    272         return;
    273 }
    274 
    275 const char *OperatorNode::get_typename( void ) const{
    276         return opName[ type ];
    277 }
    278406
    279407//##############################################################################
     
    290418
    291419CompositeExprNode::CompositeExprNode( ExpressionNode *f, ExpressionNode *arg1, ExpressionNode *arg2):
    292         function( f ), arguments( arg1 ) {
    293         arguments->set_link( arg2 );
    294 }
    295 
    296 CompositeExprNode::CompositeExprNode( const CompositeExprNode &other ) : ExpressionNode( other ), function( maybeClone( other.function ) ), arguments( 0 ) {
     420        function( f ), arguments( arg1) {
     421        arguments->set_link( arg2);
     422}
     423
     424CompositeExprNode::CompositeExprNode( const CompositeExprNode &other ) : ExpressionNode( other ), function( maybeClone( other.function ) ) {
    297425        ParseNode *cur = other.arguments;
    298426        while ( cur ) {
     
    311439}
    312440
    313 
    314 Expression *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 
    326 Expression *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 
    334 Expression *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 
    344 Expression *build_addressOf( ExpressionNode *expr_node ) {
    345                 return new AddressExpr( maybeBuild<Expression>(expr_node) );
    346 }
    347 Expression *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 }
    354 Expression *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 }
    361 Expression *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 
    367 Expression *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 
    371 Expression *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 }
    376 Expression *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 
    383 Expression *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 
    387 Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
    388         return new CommaExpr( maybeBuild<Expression>(expr_node1), maybeBuild<Expression>(expr_node2) );
    389 }
    390 
    391 CompositeExprNode2::CompositeExprNode2( Expression *expr ) : expr( expr ) {}
    392 CompositeExprNode2::CompositeExprNode2( const CompositeExprNode2 &other ) : expr( other.expr->clone() ) {}
    393 CompositeExprNode2::~CompositeExprNode2() { delete expr; }
    394 void CompositeExprNode2::print( std::ostream &, int indent ) const { assert( false ); }
    395 void CompositeExprNode2::printOneLine( std::ostream &, int indent ) const { assert( false ); }
    396 
     441// the names that users use to define operator functions
     442static const char *opFuncName[] = {
     443        "",             "",             "",
     444        "",             "",
     445        //diadic
     446        "",             "",             "",             "",             "?+?",          "?-?",  "?*?",  "?/?",  "?%?",  "",              "",
     447        "?|?",          "?&?",          "?^?",  "",             "?<<?", "?>>?", "?<?",  "?>?",  "?<=?",
     448        "?>=?",         "?==?",         "?!=?", "?=?",  "?*=?", "?/=?", "?%=?", "?+=?", "?-=?",
     449        "?<<=?",        "?>>=?",        "?&=?", "?^=?", "?|=?", "?[?]", "",             "",             "Range",
     450        //monadic
     451        "+?",           "-?",           "",             "*?",   "!?",   "~?",   "++?",  "?++",  "--?",  "?--",  "&&"
     452};
     453
     454#include "utility.h"
    397455
    398456Expression *CompositeExprNode::build() const {
     
    403461
    404462        if ( ! ( op = dynamic_cast<OperatorNode *>( function ) ) ) { // function as opposed to operator
    405                 return new UntypedExpr( maybeBuild<Expression>(function), args, maybeBuild< Expression >( get_argName() ));
    406         } // if
    407 
    408         switch ( op->get_type() ) {
     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:
    409471          case OperatorNode::Assign:
    410472          case OperatorNode::MulAssn:
     
    418480          case OperatorNode::ERAssn:
    419481          case OperatorNode::OrAssn:
     482                // the rewrite rules for these expressions specify that the first argument has its address taken
    420483                assert( ! args.empty() );
    421484                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:
    422525          case OperatorNode::UnPlus:
    423526          case OperatorNode::UnMinus:
     
    426529          case OperatorNode::BitNeg:
    427530          case OperatorNode::LabelAddress:
    428                 return new UntypedExpr( new NameExpr( opName[ op->get_type() ] ), args );
    429 
     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:
     538                {
     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() ) );
     549                        } else {
     550                                return new CastExpr( expr_node->build(),targetType, maybeBuild< Expression >( get_argName() ) );
     551                        } // if
     552                }
     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                }
    430598          case OperatorNode::Attr:
    431599                {
    432                         VarRefNode *var = dynamic_cast<VarRefNode *>( get_args() );
     600                        VarRefNode *var = dynamic_cast<VarRefNode *>( get_args());
    433601                        assert( var );
    434602                        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() );
     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());
    438606                        } else {
    439                                 return new AttrExpr( maybeBuild<Expression>(var), args.back() );
    440                         } // if
    441                 }
     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 ) );
    442617          case OperatorNode::Cond:
    443618                {
     
    451626          case OperatorNode::NCond:
    452627                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                }
    453638                // Tuples
    454639          case OperatorNode::TupleC:
     
    459644                }
    460645          default:
    461                 assert( ((void)"CompositeExprNode::build", false) );
     646                // shouldn't happen
    462647                return 0;
    463648        } // switch
     
    470655        for ( ExpressionNode *cur = arguments; cur != 0; cur = dynamic_cast< ExpressionNode* >( cur->get_link() ) ) {
    471656                cur->printOneLine( os, indent );
    472         } // for
     657        }
    473658        os << ") ";
    474659}
     
    513698
    514699Expression *AsmExprNode::build() const {
    515         return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)maybeBuild<Expression>(constraint), maybeBuild<Expression>(operand) );
     700        return new AsmExpr( maybeBuild< Expression >( inout ), (ConstantExpr *)constraint->build(), operand->build() );
    516701}
    517702
     
    551736//##############################################################################
    552737
     738CommaExprNode::CommaExprNode(): CompositeExprNode( new OperatorNode( OperatorNode::Comma )) {}
     739
     740CommaExprNode::CommaExprNode( ExpressionNode *exp ) : CompositeExprNode( new OperatorNode( OperatorNode::Comma ), exp ) {
     741}
     742
     743CommaExprNode::CommaExprNode( ExpressionNode *exp1, ExpressionNode *exp2) : CompositeExprNode( new OperatorNode( OperatorNode::Comma ), exp1, exp2) {
     744}
     745
     746CommaExprNode *CommaExprNode::add_to_list( ExpressionNode *exp ) {
     747        add_arg( exp );
     748
     749        return this;
     750}
     751
     752CommaExprNode::CommaExprNode( const CommaExprNode &other ) : CompositeExprNode( other ) {
     753}
     754
     755//##############################################################################
     756
    553757ValofExprNode::ValofExprNode( StatementNode *s ): body( s ) {}
    554758
     
    571775
    572776Expression *ValofExprNode::build() const {
    573         return new UntypedValofExpr ( maybeBuild<Statement>(get_body()), maybeBuild< Expression >( get_argName() ) );
     777        return new UntypedValofExpr ( get_body()->build(), maybeBuild< Expression >( get_argName() ) );
    574778}
    575779
     
    647851        os << "Type:";
    648852        get_decl()->print( os, indent + 2);
    649 }
    650 
    651 
    652 CompoundLiteralNode::CompoundLiteralNode( DeclarationNode *type, InitializerNode *kids ) : type( type ), kids( kids ) {}
    653 CompoundLiteralNode::CompoundLiteralNode( const CompoundLiteralNode &other ) : ExpressionNode( other ), type( other.type ), kids( other.kids ) {}
    654 
    655 CompoundLiteralNode::~CompoundLiteralNode() {
    656         delete kids;
    657         delete type;
    658 }
    659 
    660 CompoundLiteralNode *CompoundLiteralNode::clone() const {
    661         return new CompoundLiteralNode( *this );
    662 }
    663 
    664 void 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 
    676 void 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 
    684 Expression *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
    698853}
    699854
  • src/Parser/InitializerNode.cc

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

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

    r242d458 r679864e1  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:26:29 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jul 24 02:17:01 2016
    13 // Update Count     : 90
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 13:26:00 2015
     13// Update Count     : 36
    1414//
    1515
    16 #include <climits>
    1716#include "ParseNode.h"
    1817using 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 
    32 static Type::Qualifiers emptyQualifiers;                                // no qualifiers on constants
    33 
    34 static inline bool checkU( char c ) { return c == 'u' || c == 'U'; }
    35 static inline bool checkL( char c ) { return c == 'l' || c == 'L'; }
    36 static inline bool checkF( char c ) { return c == 'f' || c == 'F'; }
    37 static inline bool checkD( char c ) { return c == 'd' || c == 'D'; }
    38 static inline bool checkI( char c ) { return c == 'i' || c == 'I'; }
    39 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
    40 
    41 ConstantNode *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 
    107 ConstantNode *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 
    137 ConstantNode *makeConstantChar( std::string & str ) {
    138         return new ConstantNode( new ConstantExpr( Constant( new BasicType( emptyQualifiers, BasicType::Char ), str ), nullptr ) );
    139 } // makeConstantChar
    140 
    141 ConstantNode *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 
    15118
    15219// Builder
     
    16128};
    16229
     30ParseNode *ParseNode::get_link() const {
     31        return next;
     32}
     33
    16334ParseNode *ParseNode::get_last() {
    16435        ParseNode *current = this;
     
    17142
    17243ParseNode *ParseNode::set_link( ParseNode *next_ ) {
    173         if ( next_ != 0 ) get_last()->next = next_;
     44        if ( next_ == 0 ) return this;
     45
     46        get_last()->next = next_;
     47
    17448        return this;
    17549}
  • src/Parser/ParseNode.h

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Fri Aug  5 07:49:32 2016
    13 // Update Count     : 288
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 19 15:59:27 2015
     13// Update Count     : 174
    1414//
    1515
     
    2020#include <list>
    2121#include <iterator>
    22 #include <memory>
    23 
    24 #include "Common/utility.h"
     22
     23#include "utility.h"
    2524#include "Parser/LinkageSpec.h"
    2625#include "SynTree/Type.h"
    27 #include "SynTree/Expression.h"
    2826//#include "SynTree/Declaration.h"
    29 #include "Common/UniqueName.h"
    30 #include "SynTree/Label.h"
     27#include "UniqueName.h"
    3128
    3229class ExpressionNode;
     
    4340        ParseNode();
    4441        ParseNode( const std::string * );
    45         ParseNode( const std::string & );                                       // for copy constructing subclasses
     42        ParseNode( const std::string & );  // for copy constructing subclasses
    4643        virtual ~ParseNode();
    4744
    48         ParseNode *get_link() const { return next; }
     45        ParseNode *get_link() const;
    4946        ParseNode *get_last();
    5047        ParseNode *set_link( ParseNode * );
     
    6259  protected:
    6360        std::string name;
     61        ParseNode *next;
    6462        static int indent_by;
    65         ParseNode *next;
    6663};
    6764
     
    7774        virtual ExpressionNode *clone() const = 0;
    7875
    79         // virtual CommaExprNode *add_to_list( ExpressionNode * );
     76        virtual CommaExprNode *add_to_list( ExpressionNode * );
    8077
    8178        ExpressionNode *get_argName() const { return argName; }
    8279        ExpressionNode *set_argName( const std::string *aName );
    8380        ExpressionNode *set_argName( ExpressionNode *aDesignator );
    84         bool get_extension() const { return extension; }
    85         ExpressionNode *set_extension( bool exten ) { extension = exten; return this; }
    8681
    8782        virtual void print( std::ostream &, int indent = 0) const = 0;
     
    9287        void printDesignation ( std::ostream &, int indent = 0) const;
    9388  private:
    94         ExpressionNode *argName = 0;
    95         bool extension = false;
    96 };
    97 
    98 template< typename T >
    99 struct maybeBuild_t<Expression, T> {
    100         static inline Expression * doit( const T *orig ) {
    101                 if ( orig ) {
    102                         Expression *p = orig->build();
    103                         p->set_extension( orig->get_extension() );
    104                         return p;
    105                 } else {
    106                         return 0;
    107                 } // if
    108         }
     89        ExpressionNode *argName;
    10990};
    11091
     
    126107        enum Type { Integer, Float, Character, String };
    127108
    128         ConstantNode( ConstantExpr * );
    129         ConstantNode( const ConstantNode &other ) : expr( other.expr->clone() ) {};
    130         ~ConstantNode() { delete expr; }
     109        ConstantNode( Type, std::string * );
     110        ~ConstantNode() { delete &value; }
    131111
    132112        virtual ConstantNode *clone() const { return new ConstantNode( *this ); }
    133         virtual void print( std::ostream &, int indent = 0) const;
    134         virtual void printOneLine( std::ostream &, int indent = 0) const;
    135 
     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; }
    136118        ConstantNode *appendstr( const std::string *newValue );
    137119
    138120        Expression *build() const;
    139121  private:
    140         ConstantExpr *expr;
    141 };
    142 
    143 ConstantNode *makeConstantInteger( std::string & );
    144 ConstantNode *makeConstantFloat( std::string & );
    145 ConstantNode *makeConstantChar( std::string & );
    146 ConstantNode *makeConstantStr( std::string & );
     122        Type type;
     123        BasicType::Kind btype;
     124        std::string &value;
     125};
    147126
    148127class VarRefNode : public ExpressionNode {
     
    195174class OperatorNode : public ExpressionNode {
    196175  public:
    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
     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,
    206182                                UnPlus, UnMinus, AddressOf, PointTo, Neg, BitNeg, Incr, IncrPost, Decr, DecrPost, LabelAddress,
    207183                                Ctor, Dtor,
     
    223199  private:
    224200        Type type;
    225 };
    226 
    227 Expression *build_cast( TypeValueNode * arg, ExpressionNode *expr_node );
    228 Expression *build_fieldSel( ExpressionNode *expr_node, VarRefNode *member );
    229 Expression *build_pfieldSel( ExpressionNode *expr_node, VarRefNode *member );
    230 Expression *build_addressOf( ExpressionNode *expr_node );
    231 Expression *build_sizeOf( ExpressionNode *expr_node );
    232 Expression *build_alignOf( ExpressionNode *expr_node );
    233 Expression *build_offsetOf( TypeValueNode * arg, VarRefNode *member );
    234 Expression *build_and( ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
    235 Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind );
    236 Expression *build_opr1( OperatorNode::Type op, ExpressionNode *expr_node );
    237 Expression *build_opr2( OperatorNode::Type op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
    238 Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 );
    239 Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 );
    240 
    241 class 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;
     201        static const char *OpName[];
    254202};
    255203
     
    315263        virtual void printOneLine( std::ostream &, int indent = 0) const;
    316264
    317         const std::list< Label > &get_labels() const { return labels; };
     265        const std::list< std::string > &get_labels() const { return labels; };
    318266        void append_label( std::string *label ) { labels.push_back( *label ); delete label; }
    319267  private:
    320         std::list< Label > labels;
     268        std::list< std::string > labels;
     269};
     270
     271class 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 ); }
    321280};
    322281
     
    348307        ValofExprNode( const ValofExprNode &other );
    349308        ~ValofExprNode();
    350 
     309 
    351310        virtual ValofExprNode *clone() const { return new ValofExprNode( *this ); }
    352311
     
    368327        enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary };
    369328        enum Modifier  { Signed, Unsigned, Short, Long };
    370         enum Aggregate { Struct, Union, Trait };
     329        enum Aggregate { Struct, Union, Context };
    371330        enum TypeClass { Type, Dtype, Ftype };
    372         enum BuiltinType { Valist };
    373 
    374         static const char *storageName[];
     331
     332        static const char *storageName[]; 
    375333        static const char *qualifierName[];
    376334        static const char *basicTypeName[];
     
    378336        static const char *aggregateName[];
    379337        static const char *typeClassName[];
    380         static const char *builtinTypeName[];
    381338
    382339        static DeclarationNode *newFunction( std::string *name, DeclarationNode *ret, DeclarationNode *param, StatementNode *body, bool newStyle = false );
     
    387344        static DeclarationNode *newForall( DeclarationNode *);
    388345        static DeclarationNode *newFromTypedef( std::string *);
    389         static DeclarationNode *newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields, bool body );
     346        static DeclarationNode *newAggregate( Aggregate kind, const std::string *name, ExpressionNode *actuals, DeclarationNode *fields );
    390347        static DeclarationNode *newEnum( std::string *name, DeclarationNode *constants );
    391348        static DeclarationNode *newEnumConstant( std::string *name, ExpressionNode *constant );
     
    393350        static DeclarationNode *newFromTypeGen( std::string *, ExpressionNode *params );
    394351        static DeclarationNode *newTypeParam( TypeClass, std::string *);
    395         static DeclarationNode *newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
    396         static DeclarationNode *newTraitUse( std::string *name, ExpressionNode *params );
     352        static DeclarationNode *newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
     353        static DeclarationNode *newContextUse( std::string *name, ExpressionNode *params );
    397354        static DeclarationNode *newTypeDecl( std::string *name, DeclarationNode *typeParams );
    398355        static DeclarationNode *newPointer( DeclarationNode *qualifiers );
     
    404361        static DeclarationNode *newAttr( std::string *, ExpressionNode *expr );
    405362        static DeclarationNode *newAttr( std::string *, DeclarationNode *type );
    406         static DeclarationNode *newBuiltinType( BuiltinType );
    407363
    408364        DeclarationNode *addQualifiers( DeclarationNode *);
     
    443399        LinkageSpec::Type get_linkage() const { return linkage; }
    444400        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; }
    449401
    450402        DeclarationNode();
     
    459411        std::list< std::string > attributes;
    460412        ExpressionNode *bitfieldWidth;
    461         ExpressionNode *enumeratorValue;
    462413        InitializerNode *initializer;
    463414        bool hasEllipsis;
    464415        LinkageSpec::Type linkage;
    465         bool extension = false;
    466416
    467417        static UniqueName anonymous;
     
    470420class StatementNode : public ParseNode {
    471421  public:
    472         enum Type { Exp,   If,        Switch,  Case,    Default,  Choose,   Fallthru,
     422        enum Type { Exp,   If,        Switch,  Case,    Default,  Choose,   Fallthru, 
    473423                                While, Do,        For,
    474424                                Goto,  Continue,  Break,   Return,  Throw,
     
    503453        std::string get_target() const;
    504454
    505         // StatementNode *add_controlexp( ExpressionNode * );
     455        StatementNode *add_controlexp( ExpressionNode * );
    506456        StatementNode *append_block( StatementNode * );
    507457        StatementNode *append_last_case( StatementNode * );
     
    548498        ExpressionNode *output, *input;
    549499        ConstantNode *clobber;
    550         std::list< Label > gotolabels;
     500        std::list<std::string> gotolabels;
     501};
     502
     503class NullStmtNode : public CompoundStmtNode {
     504  public:
     505        Statement *build() const;
     506        void print( std::ostream &, int indent = 0 ) const;
    551507};
    552508
     
    562518        ExpressionNode *get_designators() const { return designator; }
    563519
    564         InitializerNode *set_maybeConstructed( bool value ) { maybeConstructed = value; return this; }
    565         bool get_maybeConstructed() const { return maybeConstructed; }
    566 
    567520        InitializerNode *next_init() const { return kids; }
    568521
     
    575528        bool aggregate;
    576529        ExpressionNode *designator; // may be list
    577         InitializerNode *kids;
    578         bool maybeConstructed;
    579 };
    580 
    581 class 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;
    601530        InitializerNode *kids;
    602531};
     
    610539        while ( cur ) {
    611540                try {
    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 ) );
     541                        SynTreeType *result = dynamic_cast< SynTreeType *>( cur->build() );
    614542                        if ( result ) {
    615543                                *out++ = result;
  • src/Parser/Parser.cc

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

    r242d458 r679864e1  
    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 : Tue Jul 12 17:21:02 2016
    13 // Update Count     : 133
     12// Last Modified On : Thu Jul 30 14:39:39 2015
     13// Update Count     : 130
    1414//
    1515
     
    2222#include "SynTree/Expression.h"
    2323#include "parseutility.h"
    24 #include "Common/utility.h"
     24#include "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 // }
     109StatementNode *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( maybeBuild<Expression>(get_control()) ), thenb, elseb );
     224                        return new IfStmt( labs, notZeroExpr( get_control()->build() ), thenb, elseb );
    225225                }
    226226          case While:
    227227                assert( branches.size() == 1 );
    228                 return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front() );
     228                return new WhileStmt( labs, notZeroExpr( get_control()->build() ), branches.front() );
    229229          case Do:
    230230                assert( branches.size() == 1 );
    231                 return new WhileStmt( labs, notZeroExpr( maybeBuild<Expression>(get_control()) ), branches.front(), true );
     231                return new WhileStmt( labs, notZeroExpr( get_control()->build() ), branches.front(), true );
    232232          case For:
    233233                {
     
    244244                        Expression *cond = 0;
    245245                        if ( ctl->get_condition() != 0 )
    246                                 cond = notZeroExpr( maybeBuild<Expression>(ctl->get_condition()) );
     246                                cond = notZeroExpr( ctl->get_condition()->build() );
    247247
    248248                        Expression *incr = 0;
    249249                        if ( ctl->get_change() != 0 )
    250                                 incr = maybeBuild<Expression>(ctl->get_change());
     250                                incr = ctl->get_change()->build();
    251251
    252252                        return new ForStmt( labs, init, cond, incr, branches.front() );
    253253                }
    254254          case Switch:
    255                 return new SwitchStmt( labs, maybeBuild<Expression>(get_control()), branches );
    256           case Case:
    257                 return new CaseStmt( labs, maybeBuild<Expression>(get_control()), branches );
     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 );
    258262          case Default:
    259263                return new CaseStmt( labs, 0, branches, true );
     
    262266                        if ( get_target() == "" ) {                                     // computed goto
    263267                                assert( get_control() != 0 );
    264                                 return new BranchStmt( labs, maybeBuild<Expression>(get_control()), BranchStmt::Goto );
     268                                return new BranchStmt( labs, get_control()->build(), BranchStmt::Goto );
    265269                        } // if
    266270
     
    390394                os << string( indent + ParseNode::indent_by, ' ' ) << "Goto Labels:" << endl;
    391395                os << string( indent + 2 * ParseNode::indent_by, ' ' );
    392                 for ( std::list<Label>::const_iterator i = gotolabels.begin();; ) {
     396                for ( std::list<std::string>::const_iterator i = gotolabels.begin();; ) {
    393397                        os << *i;
    394398                        i++;
     
    417421}
    418422
     423
     424void NullStmtNode::print( ostream &os, int indent ) const {
     425        os << string( indent, ' ' ) << "Null Statement:" << endl;
     426}
     427
     428Statement *NullStmtNode::build() const {
     429        return new NullStmt;
     430}
     431
    419432// Local Variables: //
    420433// tab-width: 4 //
  • src/Parser/TypeData.cc

    r242d458 r679864e1  
    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 : Wed Jul 13 18:03:29 2016
    13 // Update Count     : 56
     12// Last Modified On : Tue Jul 14 14:57:23 2015
     13// Update Count     : 32
    1414//
    1515
     
    1717#include <algorithm>
    1818#include <iterator>
    19 #include "Common/utility.h"
     19#include "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"
    2625
    2726TypeData::TypeData( Kind k ) : kind( k ), base( 0 ), forall( 0 ) {
     
    8584                typeexpr->expr = 0;
    8685                break;
    87           case Builtin:
    88                 builtin = new Builtin_t;
    89                 break;
    9086          case Attr:
    9187                attr = new Attr_t;
     
    153149                delete typeexpr->expr;
    154150                delete typeexpr;
    155                 break;
    156           case Builtin:
    157                 delete builtin;
    158151                break;
    159152          case Attr:
     
    200193                newtype->aggregate->name = aggregate->name;
    201194                newtype->aggregate->kind = aggregate->kind;
    202                 newtype->aggregate->body = aggregate->body;
    203195                break;
    204196          case AggregateInst:
     
    229221                newtype->typeexpr->expr = maybeClone( typeexpr->expr );
    230222                break;
    231           case Builtin:
    232                 newtype->builtin->type = builtin->type;
    233                 break;
    234223          case Attr:
    235224                newtype->attr->expr = maybeClone( attr->expr );
     
    328317                        os << string( indent + 2, ' ' ) << "with members " << endl;
    329318                        aggregate->fields->printList( os, indent + 4 );
    330                 } // if
    331                 if ( aggregate->body ) {
    332                         os << string( indent + 2, ' ' ) << " with body " << endl;
     319///     } else {
     320///       os << string( indent + 2, ' ' ) << "with no members " << endl;
    333321                } // if
    334322                break;
     
    409397                } // if
    410398                break;
    411           case Builtin:
    412                 os << "gcc builtin type";
    413                 break;
    414399          default:
    415400                os << "internal error: TypeData::print " << kind  << endl;
     
    451436        for ( std::list< TypeDecl* >::iterator i = outputList.begin(); i != outputList.end(); ++i ) {
    452437                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)
    471438                        FunctionType *assignType = new FunctionType( Type::Qualifiers(), false );
    472439                        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 ) );
     
    510477                return buildVariable();
    511478        } else {
    512                 return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init, std::list< Attribute * >(),  isInline, isNoreturn );
     479                return new ObjectDecl( name, sc, linkage, bitfieldWidth, build(), init, isInline, isNoreturn );
    513480        } // if
    514481        return 0;
     
    539506          case Typeof:
    540507                return buildTypeof();
    541           case Builtin:
    542                 return new VarArgsType( buildQualifiers() );
    543508          case Attr:
    544509                return buildAttr();
     
    834799          case DeclarationNode::Struct:
    835800                at = new StructDecl( aggregate->name );
    836                 buildForall( aggregate->params, at->get_parameters() );
    837801                break;
    838802          case DeclarationNode::Union:
    839803                at = new UnionDecl( 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() );
     804                break;
     805          case DeclarationNode::Context:
     806                at = new ContextDecl( aggregate->name );
    845807                break;
    846808          default:
    847809                assert( false );
    848810        } // switch
    849 
     811        buildList( aggregate->params, at->get_parameters() );
    850812        buildList( aggregate->fields, at->get_members() );
    851         at->set_body( aggregate->body );
    852813
    853814        return at;
    854815}
     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/// }
    855828
    856829ReferenceToType *TypeData::buildAggInst() const {
     
    869842                        ret = new UnionInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    870843                        break;
    871                   case DeclarationNode::Trait:
    872                         ret = new TraitInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
     844                  case DeclarationNode::Context:
     845                        ret = new ContextInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    873846                        break;
    874847                  default:
     
    907880        EnumDecl *ret = new EnumDecl( enumeration->name );
    908881        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
    916882        return ret;
    917883}
  • src/Parser/TypeData.h

    r242d458 r679864e1  
    1010// Created On       : Sat May 16 15:18:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 20:52:02 2016
    13 // Update Count     : 20
     12// Last Modified On : Fri Jun 26 23:39:03 2015
     13// Update Count     : 16
    1414//
    1515
     
    2424struct TypeData {
    2525        enum Kind { Unknown, Basic, Pointer, Array, Function, Aggregate, AggregateInst,
    26                                 Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, Builtin, Attr } kind;
     26                                Enum, EnumConstant, Symbolic, SymbolicInst, Variable, Tuple, Typeof, 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;
    51                 bool body;
     48                DeclarationNode *params;
     49                ExpressionNode  *actuals;                                               // holds actual parameters later applied to AggInst
     50                DeclarationNode *fields;
    5251        };
    5352
    5453        struct AggInst_t {
    55                 TypeData * aggregate;
    56                 ExpressionNode * params;
     54                TypeData *aggregate;
     55                ExpressionNode *params;
    5756        };
    5857
    5958        struct Array_t {
    60                 ExpressionNode * dimension;
     59                ExpressionNode *dimension;
    6160                bool isVarLen;
    6261                bool isStatic;
     
    6564        struct Enumeration_t {
    6665                std::string name;
    67                 DeclarationNode * constants;
     66                DeclarationNode *constants;
    6867        };
    6968
    7069        struct Function_t {
    71                 DeclarationNode * params;
    72                 DeclarationNode * idList;                                               // old-style
    73                 DeclarationNode * oldDeclList;
    74                 StatementNode * body;
     70                DeclarationNode *params;
     71                DeclarationNode *idList;                                                // old-style
     72                DeclarationNode *oldDeclList;
     73                StatementNode *body;
    7574                bool hasBody;
    7675                bool newStyle;
     
    8079                std::string name;
    8180                bool isTypedef;                                                                 // false => TYPEGENname, true => TYPEDEFname
    82                 DeclarationNode * params;
    83                 ExpressionNode * actuals;
    84                 DeclarationNode * assertions;
     81                DeclarationNode *params;
     82                ExpressionNode *actuals;
     83                DeclarationNode *assertions;
    8584        };
    8685
     
    8887                DeclarationNode::TypeClass tyClass;
    8988                std::string name;
    90                 DeclarationNode * assertions;
     89                DeclarationNode *assertions;
    9190        };
    9291
    9392        struct Tuple_t {
    94                 DeclarationNode * members;
     93                DeclarationNode *members;
    9594        };
    9695 
    9796        struct Typeof_t {
    98                 ExpressionNode * expr;
    99         };
    100 
    101         struct Builtin_t {
    102                 DeclarationNode::BuiltinType type;
     97                ExpressionNode *expr;
    10398        };
    10499
    105100        struct Attr_t {
    106101                std::string name;
    107                 ExpressionNode * expr;
    108                 DeclarationNode * type;
     102                ExpressionNode *expr;
     103                DeclarationNode *type;
    109104        };
    110105
    111106        union {
    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;
     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;
    124118        };
    125119
    126         TypeData * extractAggregate( bool toplevel = true ) const;
     120        TypeData *extractAggregate( bool toplevel = true ) const;
    127121        // helper function for DeclNodeImpl::build
    128         Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression * bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer * init = 0 ) const;
     122        Declaration * buildDecl( std::string name, DeclarationNode::StorageClass sc, Expression *bitfieldWidth, bool isInline, bool isNoreturn, LinkageSpec::Type linkage, Initializer *init = 0 ) const;
    129123        // helper functions for build()
    130124        Type::Qualifiers buildQualifiers() const;
  • src/Parser/TypedefTable.cc

    r242d458 r679864e1  
    1010// Created On       : Sat May 16 15:20:13 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 16:57:30 2016
    13 // Update Count     : 24
     12// Last Modified On : Fri Jun 26 07:30:16 2015
     13// Update Count     : 19
    1414//
    1515
    1616#include <map>
    1717#include <list>
     18#include "TypedefTable.h"
    1819#include <cassert>
    19 #include "TypedefTable.h"
    2020using namespace std;
    2121
     
    2929TypedefTable::TypedefTable() : currentScope( 0 ) {}
    3030
    31 bool TypedefTable::exists( const string &identifier ) {
    32         return table.count( identifier ) > 0;
    33 }
    34 
    35 int 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 
    4231void TypedefTable::changeKind( const string &identifier, kind_t kind ) {
    4332        tableType::iterator id_pos = table.find( identifier );
    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.
    51 void TypedefTable::makeTypedef( const string &name ) {
    52         if ( ! typedefTable.exists( name ) ) {
    53                 typedefTable.addToEnclosingScope( name, TypedefTable::TD );
     33        if ( id_pos == table.end() ) {
     34                return;
     35        } else {
     36                (*((*id_pos ).second.begin())).kind = kind;
     37                return;
    5438        } // if
    5539}
    5640
     41bool 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
     50bool TypedefTable::isIdentifier( const string &identifier ) const {
     51        return isKind( identifier, ID );
     52}
     53
     54bool TypedefTable::isTypedef( const string &identifier ) const {
     55        return isKind( identifier, TD );
     56}
     57
     58bool TypedefTable::isTypegen( const string &identifier ) const {
     59        return isKind( identifier, TG );
     60}
     61
    5762void TypedefTable::addToScope( const std::string &identifier, kind_t kind, int scope ) {
    58         if ( currentTrait != "" && scope == contextScope ) {
     63        if ( currentContext != "" && scope == contextScope ) {
    5964                DeferredEntry entry = { identifier, kind };
    60                 contexts[currentTrait].push_back( entry );
     65                contexts[currentContext].push_back( entry );
    6166        } else {
    6267                debugPrint( "Adding " << identifier << " as kind " << kind << " scope " << scope << " from scope " << currentScope << endl );
     
    107112}
    108113
    109 void TypedefTable::openTrait( const std::string &contextName ) {
     114void TypedefTable::openContext( const std::string &contextName ) {
    110115        map< string, deferListType >::iterator i = contexts.find( contextName );
    111116        if ( i != contexts.end() ) {
     
    145150}
    146151
    147 void TypedefTable::enterTrait( const std::string &contextName ) {
    148         currentTrait = contextName;
     152void TypedefTable::enterContext( const std::string &contextName ) {
     153        currentContext = contextName;
    149154        contextScope = currentScope;
    150155}
    151156
    152 void TypedefTable::leaveTrait() {
    153         currentTrait = "";
     157void TypedefTable::leaveContext() {
     158        currentContext = "";
    154159}
    155160
  • src/Parser/TypedefTable.h

    r242d458 r679864e1  
    1010// Created On       : Sat May 16 15:24:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr 13 16:59:56 2016
    13 // Update Count     : 27
     12// Last Modified On : Thu Jun 25 22:52:15 2015
     13// Update Count     : 11
    1414//
    1515
     
    2222#include <stack>
    2323
    24 #include "lex.h"
    25 #include "parser.h"
    26 
    2724class TypedefTable {
    2825  public:
    29         enum kind_t { ID = IDENTIFIER, TD = TYPEDEFname, TG = TYPEGENname };
     26        enum kind_t { ID, TD, TG };
    3027  private:
    3128        struct Entry {
     
    4340
    4441        int currentScope;
    45         std::string currentTrait;
     42        std::string currentContext;
    4643        int contextScope;
    4744       
     
    5249        std::stack< std::string > nextIdentifiers;
    5350
     51        bool isKind( const std::string &identifier, kind_t kind ) const;
    5452        void addToScope( const std::string &identifier, kind_t kind, int scope );
    5553  public:
    5654        TypedefTable();
    5755
    58         bool exists( const std::string &identifier );
    59         int isKind( const std::string &identifier ) const;
     56        bool isIdentifier( const std::string &identifier ) const;
     57        bool isTypedef( const std::string &identifier ) const;
     58        bool isTypegen( const std::string &identifier ) const;
     59
    6060        void changeKind( const std::string &identifier, kind_t kind );
    61 
    62         void makeTypedef( const std::string &name );
    63 
     61       
    6462        // "addToCurrentScope" adds the identifier/type pair to the current scope. This does less than you think it does,
    6563        // since each declaration is within its own scope.  Mostly useful for type parameters.
     
    8179       
    8280        // dump the definitions from a pre-defined context into the current scope
    83         void openTrait( const std::string &contextName );
     81        void openContext( const std::string &contextName );
    8482       
    8583        void enterScope();
    8684        void leaveScope();
    87         void enterTrait( const std::string &contextName );
    88         void leaveTrait();
     85        void enterContext( const std::string &contextName );
     86        void leaveContext();
    8987
    9088        void print() const;
  • src/Parser/lex.cc

    r242d458 r679864e1  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 181
    385 #define YY_END_OF_BUFFER 182
     384#define YY_NUM_RULES 171
     385#define YY_END_OF_BUFFER 172
    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[892] =
     393static yyconst flex_int16_t yy_accept[826] =
    394394    {   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,
     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,
    419444        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    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,
     445      113,    0,    0,    0,    0,    0,  105,    0,    0,    0,
     446        0,    0,    0,  104,  104,    0,  106,    0,  104,  104,
    446447        0,    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,
     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,
    458456        0,    0,    0,    0,    0,    0,    0,    0,    0,    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 
     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
    494486    } ;
    495487
     
    504496       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
    505497       42,   11,   43,   11,   11,   44,   11,   45,   11,   46,
    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,
     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,
    512504        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    513505        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    526518    } ;
    527519
    528 static yyconst flex_int32_t yy_meta[86] =
     520static yyconst flex_int32_t yy_meta[85] =
    529521    {   0,
    530522        1,    1,    2,    1,    1,    1,    1,    1,    3,    1,
    531523        4,    1,    1,    5,    1,    1,    1,    1,    1,    1,
    532524        6,    1,    7,    7,    7,    7,    7,    7,    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
     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
    539531    } ;
    540532
    541 static yyconst flex_int16_t yy_base[1066] =
     533static yyconst flex_int16_t yy_base[999] =
    542534    {   0,
    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
     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
    660645    } ;
    661646
    662 static yyconst flex_int16_t yy_def[1066] =
     647static yyconst flex_int16_t yy_def[999] =
    663648    {   0,
    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
     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
    781759    } ;
    782760
    783 static yyconst flex_int16_t yy_nxt[2911] =
     761static yyconst flex_int16_t yy_nxt[2653] =
    784762    {   0,
    785763       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    787765       28,   29,   30,   31,   32,   32,   32,   32,   33,   34,
    788766       35,   36,   37,   38,   39,   18,   18,   18,   18,   18,
    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,
     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,
    797777       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    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
     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
    11051055    } ;
    11061056
    1107 static yyconst flex_int16_t yy_chk[2911] =
     1057static yyconst flex_int16_t yy_chk[2653] =
    11081058    {   0,
    11091059        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11151065        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    11161066        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1117         1,    1,    1,    1,    1,    2,   16,   24,   16,   24,
    1118         2,   19,   19,    2,    5,    5,    5,    5,    5,    5,
     1067        1,    1,    1,    1,    2,   16,   24,   16,   24,    2,
     1068       19,   19,    2,    5,    5,    5,    5,    5,    5,    5,
    11191069
    11201070        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
     
    11251075        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11261076        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    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
     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
    14291351    } ;
    14301352
    14311353/* Table of booleans, true if rule could match eol. */
    1432 static yyconst flex_int32_t yy_rule_can_match_eol[182] =
     1354static yyconst flex_int32_t yy_rule_can_match_eol[172] =
    14331355    {   0,
    143413561, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    14371359    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14381360    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
     1361    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
    14411362    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    14421363    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1443     0, 0,     };
     1364    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
    14441365
    14451366static yy_state_type yy_last_accepting_state;
     
    14681389 * Author           : Peter A. Buhr
    14691390 * Created On       : Sat Sep 22 08:58:10 2001
    1470  * Last Modified By :
    1471  * Last Modified On : Sun Jul 31 07:19:36 2016
    1472  * Update Count     : 459
     1391 * Last Modified By : Peter A. Buhr
     1392 * Last Modified On : Fri Jun 19 11:10:14 2015
     1393 * Update Count     : 392
    14731394 */
    14741395#line 20 "lex.ll"
     
    14821403
    14831404#include "lex.h"
     1405#include "ParseNode.h"
    14841406#include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
    1485 #include "ParseNode.h"
    1486 #include "TypedefTable.h"
    14871407
    14881408char *yyfilename;
     
    15001420#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    15011421#define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
    1502 #define IDENTIFIER_RETURN()     RETURN_VAL( typedefTable.isKind( yytext ) )
     1422#define IDENTIFIER_RETURN()     RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) )
    15031423#define ATTRIBUTE_RETURN()      RETURN_VAL( ATTR_IDENTIFIER )
    15041424
    15051425void rm_underscore() {
    1506         // Remove underscores in numeric constant by copying the non-underscore characters to the front of the string.
    1507         yyleng = 0;
     1426        // remove underscores in numeric constant
     1427        int j = 0;
    15081428        for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
    15091429                if ( yytext[i] != '_' ) {
    1510                         yytext[yyleng] = yytext[i];
    1511                         yyleng += 1;
     1430                        yytext[j] = yytext[i];
     1431                        j += 1;
    15121432                } // if
    15131433        } // for
     1434        yyleng = j;
    15141435        yytext[yyleng] = '\0';
    15151436}
     
    15191440// attribute identifier, GCC: $ in identifier
    15201441// 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]))
    15231442// character escape sequence, GCC: \e => esc character
    15241443// ' stop highlighting
    15251444// display/white-space characters
    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"
     1445// operators
     1446
     1447
     1448
     1449
     1450#line 1451 "Parser/lex.cc"
    15341451
    15351452#define INITIAL 0
     
    17231640        register int yy_act;
    17241641   
    1725 #line 138 "lex.ll"
     1642#line 136 "lex.ll"
    17261643
    17271644                                   /* line directives */
    1728 #line 1729 "Parser/lex.cc"
     1645#line 1646 "Parser/lex.cc"
    17291646
    17301647        if ( !(yy_init) )
     
    17801697                                {
    17811698                                yy_current_state = (int) yy_def[yy_current_state];
    1782                                 if ( yy_current_state >= 892 )
     1699                                if ( yy_current_state >= 826 )
    17831700                                        yy_c = yy_meta[(unsigned int) yy_c];
    17841701                                }
     
    17861703                        ++yy_cp;
    17871704                        }
    1788                 while ( yy_base[yy_current_state] != 2825 );
     1705                while ( yy_base[yy_current_state] != 2568 );
    17891706
    17901707yy_find_action:
     
    18231740/* rule 1 can match eol */
    18241741YY_RULE_SETUP
    1825 #line 140 "lex.ll"
     1742#line 138 "lex.ll"
    18261743{
    18271744        /* " stop highlighting */
     
    18501767/* rule 2 can match eol */
    18511768YY_RULE_SETUP
    1852 #line 163 "lex.ll"
     1769#line 161 "lex.ll"
    18531770;
    18541771        YY_BREAK
     
    18561773case 3:
    18571774YY_RULE_SETUP
    1858 #line 166 "lex.ll"
     1775#line 164 "lex.ll"
    18591776{ BEGIN COMMENT; }
    18601777        YY_BREAK
     
    18621779/* rule 4 can match eol */
    18631780YY_RULE_SETUP
    1864 #line 167 "lex.ll"
     1781#line 165 "lex.ll"
    18651782;
    18661783        YY_BREAK
    18671784case 5:
    18681785YY_RULE_SETUP
    1869 #line 168 "lex.ll"
     1786#line 166 "lex.ll"
    18701787{ BEGIN 0; }
    18711788        YY_BREAK
     
    18741791/* rule 6 can match eol */
    18751792YY_RULE_SETUP
    1876 #line 171 "lex.ll"
     1793#line 169 "lex.ll"
    18771794;
    18781795        YY_BREAK
     
    18801797case 7:
    18811798YY_RULE_SETUP
    1882 #line 174 "lex.ll"
     1799#line 172 "lex.ll"
    18831800{ WHITE_RETURN(' '); }
    18841801        YY_BREAK
    18851802case 8:
    18861803YY_RULE_SETUP
    1887 #line 175 "lex.ll"
     1804#line 173 "lex.ll"
    18881805{ WHITE_RETURN(' '); }
    18891806        YY_BREAK
     
    18911808/* rule 9 can match eol */
    18921809YY_RULE_SETUP
    1893 #line 176 "lex.ll"
     1810#line 174 "lex.ll"
    18941811{ NEWLINE_RETURN(); }
    18951812        YY_BREAK
     
    18971814case 10:
    18981815YY_RULE_SETUP
     1816#line 177 "lex.ll"
     1817{ KEYWORD_RETURN(ALIGNAS); }                    // C11
     1818        YY_BREAK
     1819case 11:
     1820YY_RULE_SETUP
     1821#line 178 "lex.ll"
     1822{ KEYWORD_RETURN(ALIGNOF); }                    // C11
     1823        YY_BREAK
     1824case 12:
     1825YY_RULE_SETUP
    18991826#line 179 "lex.ll"
    1900 { KEYWORD_RETURN(ALIGNAS); }                    // C11
    1901         YY_BREAK
    1902 case 11:
     1827{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
     1828        YY_BREAK
     1829case 13:
    19031830YY_RULE_SETUP
    19041831#line 180 "lex.ll"
    1905 { KEYWORD_RETURN(ALIGNOF); }                    // C11
    1906         YY_BREAK
    1907 case 12:
     1832{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
     1833        YY_BREAK
     1834case 14:
    19081835YY_RULE_SETUP
    19091836#line 181 "lex.ll"
    1910 { KEYWORD_RETURN(ALIGNOF); }                    // GCC
    1911         YY_BREAK
    1912 case 13:
     1837{ KEYWORD_RETURN(ASM); }
     1838        YY_BREAK
     1839case 15:
    19131840YY_RULE_SETUP
    19141841#line 182 "lex.ll"
    1915 { KEYWORD_RETURN(ALIGNOF); }                    // GCC
    1916         YY_BREAK
    1917 case 14:
     1842{ KEYWORD_RETURN(ASM); }                                // GCC
     1843        YY_BREAK
     1844case 16:
    19181845YY_RULE_SETUP
    19191846#line 183 "lex.ll"
    1920 { KEYWORD_RETURN(ASM); }
    1921         YY_BREAK
    1922 case 15:
     1847{ KEYWORD_RETURN(ASM); }                                // GCC
     1848        YY_BREAK
     1849case 17:
    19231850YY_RULE_SETUP
    19241851#line 184 "lex.ll"
    1925 { KEYWORD_RETURN(ASM); }                                // GCC
    1926         YY_BREAK
    1927 case 16:
     1852{ KEYWORD_RETURN(ATOMIC); }                             // C11
     1853        YY_BREAK
     1854case 18:
    19281855YY_RULE_SETUP
    19291856#line 185 "lex.ll"
    1930 { KEYWORD_RETURN(ASM); }                                // GCC
    1931         YY_BREAK
    1932 case 17:
     1857{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1858        YY_BREAK
     1859case 19:
    19331860YY_RULE_SETUP
    19341861#line 186 "lex.ll"
    1935 { KEYWORD_RETURN(AT); }                                 // CFA
    1936         YY_BREAK
    1937 case 18:
     1862{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1863        YY_BREAK
     1864case 20:
    19381865YY_RULE_SETUP
    19391866#line 187 "lex.ll"
    1940 { KEYWORD_RETURN(ATOMIC); }                             // C11
    1941         YY_BREAK
    1942 case 19:
     1867{ KEYWORD_RETURN(AUTO); }
     1868        YY_BREAK
     1869case 21:
    19431870YY_RULE_SETUP
    19441871#line 188 "lex.ll"
    1945 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    1946         YY_BREAK
    1947 case 20:
     1872{ KEYWORD_RETURN(BOOL); }                               // C99
     1873        YY_BREAK
     1874case 22:
    19481875YY_RULE_SETUP
    19491876#line 189 "lex.ll"
    1950 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    1951         YY_BREAK
    1952 case 21:
     1877{ KEYWORD_RETURN(BREAK); }
     1878        YY_BREAK
     1879case 23:
    19531880YY_RULE_SETUP
    19541881#line 190 "lex.ll"
    1955 { KEYWORD_RETURN(AUTO); }
    1956         YY_BREAK
    1957 case 22:
     1882{ KEYWORD_RETURN(CASE); }
     1883        YY_BREAK
     1884case 24:
    19581885YY_RULE_SETUP
    19591886#line 191 "lex.ll"
    1960 { KEYWORD_RETURN(BOOL); }                               // C99
    1961         YY_BREAK
    1962 case 23:
     1887{ KEYWORD_RETURN(CATCH); }                              // CFA
     1888        YY_BREAK
     1889case 25:
    19631890YY_RULE_SETUP
    19641891#line 192 "lex.ll"
    1965 { KEYWORD_RETURN(BREAK); }
    1966         YY_BREAK
    1967 case 24:
     1892{ KEYWORD_RETURN(CHAR); }
     1893        YY_BREAK
     1894case 26:
    19681895YY_RULE_SETUP
    19691896#line 193 "lex.ll"
    1970 { KEYWORD_RETURN(CASE); }
    1971         YY_BREAK
    1972 case 25:
     1897{ KEYWORD_RETURN(CHOOSE); }                             // CFA
     1898        YY_BREAK
     1899case 27:
    19731900YY_RULE_SETUP
    19741901#line 194 "lex.ll"
    1975 { KEYWORD_RETURN(CATCH); }                              // CFA
    1976         YY_BREAK
    1977 case 26:
     1902{ KEYWORD_RETURN(COMPLEX); }                    // C99
     1903        YY_BREAK
     1904case 28:
    19781905YY_RULE_SETUP
    19791906#line 195 "lex.ll"
    1980 { KEYWORD_RETURN(CATCHRESUME); }                // CFA
    1981         YY_BREAK
    1982 case 27:
     1907{ KEYWORD_RETURN(COMPLEX); }                    // GCC
     1908        YY_BREAK
     1909case 29:
    19831910YY_RULE_SETUP
    19841911#line 196 "lex.ll"
    1985 { KEYWORD_RETURN(CHAR); }
    1986         YY_BREAK
    1987 case 28:
     1912{ KEYWORD_RETURN(COMPLEX); }                    // GCC
     1913        YY_BREAK
     1914case 30:
    19881915YY_RULE_SETUP
    19891916#line 197 "lex.ll"
    1990 { KEYWORD_RETURN(CHOOSE); }                             // CFA
    1991         YY_BREAK
    1992 case 29:
     1917{ KEYWORD_RETURN(CONST); }
     1918        YY_BREAK
     1919case 31:
    19931920YY_RULE_SETUP
    19941921#line 198 "lex.ll"
    1995 { KEYWORD_RETURN(COMPLEX); }                    // C99
    1996         YY_BREAK
    1997 case 30:
     1922{ KEYWORD_RETURN(CONST); }                              // GCC
     1923        YY_BREAK
     1924case 32:
    19981925YY_RULE_SETUP
    19991926#line 199 "lex.ll"
    2000 { KEYWORD_RETURN(COMPLEX); }                    // GCC
    2001         YY_BREAK
    2002 case 31:
     1927{ KEYWORD_RETURN(CONST); }                              // GCC
     1928        YY_BREAK
     1929case 33:
    20031930YY_RULE_SETUP
    20041931#line 200 "lex.ll"
    2005 { KEYWORD_RETURN(COMPLEX); }                    // GCC
    2006         YY_BREAK
    2007 case 32:
     1932{ KEYWORD_RETURN(CONTEXT); }                    // CFA
     1933        YY_BREAK
     1934case 34:
    20081935YY_RULE_SETUP
    20091936#line 201 "lex.ll"
    2010 { KEYWORD_RETURN(CONST); }
    2011         YY_BREAK
    2012 case 33:
     1937{ KEYWORD_RETURN(CONTINUE); }
     1938        YY_BREAK
     1939case 35:
    20131940YY_RULE_SETUP
    20141941#line 202 "lex.ll"
    2015 { KEYWORD_RETURN(CONST); }                              // GCC
    2016         YY_BREAK
    2017 case 34:
     1942{ KEYWORD_RETURN(DEFAULT); }
     1943        YY_BREAK
     1944case 36:
    20181945YY_RULE_SETUP
    20191946#line 203 "lex.ll"
    2020 { KEYWORD_RETURN(CONST); }                              // GCC
    2021         YY_BREAK
    2022 case 35:
     1947{ KEYWORD_RETURN(DO); }
     1948        YY_BREAK
     1949case 37:
    20231950YY_RULE_SETUP
    20241951#line 204 "lex.ll"
    2025 { KEYWORD_RETURN(CONTINUE); }
    2026         YY_BREAK
    2027 case 36:
     1952{ KEYWORD_RETURN(DOUBLE); }
     1953        YY_BREAK
     1954case 38:
    20281955YY_RULE_SETUP
    20291956#line 205 "lex.ll"
    2030 { KEYWORD_RETURN(DEFAULT); }
    2031         YY_BREAK
    2032 case 37:
     1957{ KEYWORD_RETURN(DTYPE); }                              // CFA
     1958        YY_BREAK
     1959case 39:
    20331960YY_RULE_SETUP
    20341961#line 206 "lex.ll"
    2035 { KEYWORD_RETURN(DISABLE); }                    // CFA
    2036         YY_BREAK
    2037 case 38:
     1962{ KEYWORD_RETURN(ELSE); }
     1963        YY_BREAK
     1964case 40:
    20381965YY_RULE_SETUP
    20391966#line 207 "lex.ll"
    2040 { KEYWORD_RETURN(DO); }
    2041         YY_BREAK
    2042 case 39:
     1967{ KEYWORD_RETURN(ENUM); }
     1968        YY_BREAK
     1969case 41:
    20431970YY_RULE_SETUP
    20441971#line 208 "lex.ll"
    2045 { KEYWORD_RETURN(DOUBLE); }
    2046         YY_BREAK
    2047 case 40:
     1972{ KEYWORD_RETURN(EXTENSION); }                  // GCC
     1973        YY_BREAK
     1974case 42:
    20481975YY_RULE_SETUP
    20491976#line 209 "lex.ll"
    2050 { KEYWORD_RETURN(DTYPE); }                              // CFA
    2051         YY_BREAK
    2052 case 41:
     1977{ KEYWORD_RETURN(EXTERN); }
     1978        YY_BREAK
     1979case 43:
    20531980YY_RULE_SETUP
    20541981#line 210 "lex.ll"
    2055 { KEYWORD_RETURN(ELSE); }
    2056         YY_BREAK
    2057 case 42:
     1982{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
     1983        YY_BREAK
     1984case 44:
    20581985YY_RULE_SETUP
    20591986#line 211 "lex.ll"
    2060 { KEYWORD_RETURN(ENABLE); }                             // CFA
    2061         YY_BREAK
    2062 case 43:
     1987{ KEYWORD_RETURN(FINALLY); }                    // CFA
     1988        YY_BREAK
     1989case 45:
    20631990YY_RULE_SETUP
    20641991#line 212 "lex.ll"
    2065 { KEYWORD_RETURN(ENUM); }
    2066         YY_BREAK
    2067 case 44:
     1992{ KEYWORD_RETURN(FLOAT); }
     1993        YY_BREAK
     1994case 46:
    20681995YY_RULE_SETUP
    20691996#line 213 "lex.ll"
    2070 { KEYWORD_RETURN(EXTENSION); }                  // GCC
    2071         YY_BREAK
    2072 case 45:
     1997{ KEYWORD_RETURN(FLOAT); }                              // GCC
     1998        YY_BREAK
     1999case 47:
    20732000YY_RULE_SETUP
    20742001#line 214 "lex.ll"
    2075 { KEYWORD_RETURN(EXTERN); }
    2076         YY_BREAK
    2077 case 46:
     2002{ KEYWORD_RETURN(FOR); }
     2003        YY_BREAK
     2004case 48:
    20782005YY_RULE_SETUP
    20792006#line 215 "lex.ll"
    2080 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    2081         YY_BREAK
    2082 case 47:
     2007{ KEYWORD_RETURN(FORALL); }                             // CFA
     2008        YY_BREAK
     2009case 49:
    20832010YY_RULE_SETUP
    20842011#line 216 "lex.ll"
    2085 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    2086         YY_BREAK
    2087 case 48:
     2012{ KEYWORD_RETURN(FORTRAN); }
     2013        YY_BREAK
     2014case 50:
    20882015YY_RULE_SETUP
    20892016#line 217 "lex.ll"
    2090 { KEYWORD_RETURN(FINALLY); }                    // CFA
    2091         YY_BREAK
    2092 case 49:
     2017{ KEYWORD_RETURN(FTYPE); }                              // CFA
     2018        YY_BREAK
     2019case 51:
    20932020YY_RULE_SETUP
    20942021#line 218 "lex.ll"
    2095 { KEYWORD_RETURN(FLOAT); }
    2096         YY_BREAK
    2097 case 50:
     2022{ KEYWORD_RETURN(GENERIC); }                    // C11
     2023        YY_BREAK
     2024case 52:
    20982025YY_RULE_SETUP
    20992026#line 219 "lex.ll"
    2100 { KEYWORD_RETURN(FLOAT); }                              // GCC
    2101         YY_BREAK
    2102 case 51:
     2027{ KEYWORD_RETURN(GOTO); }
     2028        YY_BREAK
     2029case 53:
    21032030YY_RULE_SETUP
    21042031#line 220 "lex.ll"
    2105 { KEYWORD_RETURN(FOR); }
    2106         YY_BREAK
    2107 case 52:
     2032{ KEYWORD_RETURN(IF); }
     2033        YY_BREAK
     2034case 54:
    21082035YY_RULE_SETUP
    21092036#line 221 "lex.ll"
    2110 { KEYWORD_RETURN(FORALL); }                             // CFA
    2111         YY_BREAK
    2112 case 53:
     2037{ KEYWORD_RETURN(IMAGINARY); }                  // C99
     2038        YY_BREAK
     2039case 55:
    21132040YY_RULE_SETUP
    21142041#line 222 "lex.ll"
    2115 { KEYWORD_RETURN(FORTRAN); }
    2116         YY_BREAK
    2117 case 54:
     2042{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2043        YY_BREAK
     2044case 56:
    21182045YY_RULE_SETUP
    21192046#line 223 "lex.ll"
    2120 { KEYWORD_RETURN(FTYPE); }                              // CFA
    2121         YY_BREAK
    2122 case 55:
     2047{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2048        YY_BREAK
     2049case 57:
    21232050YY_RULE_SETUP
    21242051#line 224 "lex.ll"
    2125 { KEYWORD_RETURN(GENERIC); }                    // C11
    2126         YY_BREAK
    2127 case 56:
     2052{ KEYWORD_RETURN(INLINE); }                             // C99
     2053        YY_BREAK
     2054case 58:
    21282055YY_RULE_SETUP
    21292056#line 225 "lex.ll"
    2130 { KEYWORD_RETURN(GOTO); }
    2131         YY_BREAK
    2132 case 57:
     2057{ KEYWORD_RETURN(INLINE); }                             // GCC
     2058        YY_BREAK
     2059case 59:
    21332060YY_RULE_SETUP
    21342061#line 226 "lex.ll"
    2135 { KEYWORD_RETURN(IF); }
    2136         YY_BREAK
    2137 case 58:
     2062{ KEYWORD_RETURN(INLINE); }                             // GCC
     2063        YY_BREAK
     2064case 60:
    21382065YY_RULE_SETUP
    21392066#line 227 "lex.ll"
    2140 { KEYWORD_RETURN(IMAGINARY); }                  // C99
    2141         YY_BREAK
    2142 case 59:
     2067{ KEYWORD_RETURN(INT); }
     2068        YY_BREAK
     2069case 61:
    21432070YY_RULE_SETUP
    21442071#line 228 "lex.ll"
    2145 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
    2146         YY_BREAK
    2147 case 60:
     2072{ KEYWORD_RETURN(INT); }                                // GCC
     2073        YY_BREAK
     2074case 62:
    21482075YY_RULE_SETUP
    21492076#line 229 "lex.ll"
    2150 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
    2151         YY_BREAK
    2152 case 61:
     2077{ KEYWORD_RETURN(LABEL); }                              // GCC
     2078        YY_BREAK
     2079case 63:
    21532080YY_RULE_SETUP
    21542081#line 230 "lex.ll"
    2155 { KEYWORD_RETURN(INLINE); }                             // C99
    2156         YY_BREAK
    2157 case 62:
     2082{ KEYWORD_RETURN(LONG); }
     2083        YY_BREAK
     2084case 64:
    21582085YY_RULE_SETUP
    21592086#line 231 "lex.ll"
    2160 { KEYWORD_RETURN(INLINE); }                             // GCC
    2161         YY_BREAK
    2162 case 63:
     2087{ KEYWORD_RETURN(LVALUE); }                             // CFA
     2088        YY_BREAK
     2089case 65:
    21632090YY_RULE_SETUP
    21642091#line 232 "lex.ll"
    2165 { KEYWORD_RETURN(INLINE); }                             // GCC
    2166         YY_BREAK
    2167 case 64:
     2092{ KEYWORD_RETURN(NORETURN); }                   // C11
     2093        YY_BREAK
     2094case 66:
    21682095YY_RULE_SETUP
    21692096#line 233 "lex.ll"
    2170 { KEYWORD_RETURN(INT); }
    2171         YY_BREAK
    2172 case 65:
     2097{ KEYWORD_RETURN(REGISTER); }
     2098        YY_BREAK
     2099case 67:
    21732100YY_RULE_SETUP
    21742101#line 234 "lex.ll"
    2175 { KEYWORD_RETURN(INT); }                                // GCC
    2176         YY_BREAK
    2177 case 66:
     2102{ KEYWORD_RETURN(RESTRICT); }                   // C99
     2103        YY_BREAK
     2104case 68:
    21782105YY_RULE_SETUP
    21792106#line 235 "lex.ll"
    2180 { KEYWORD_RETURN(LABEL); }                              // GCC
    2181         YY_BREAK
    2182 case 67:
     2107{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2108        YY_BREAK
     2109case 69:
    21832110YY_RULE_SETUP
    21842111#line 236 "lex.ll"
    2185 { KEYWORD_RETURN(LONG); }
    2186         YY_BREAK
    2187 case 68:
     2112{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2113        YY_BREAK
     2114case 70:
    21882115YY_RULE_SETUP
    21892116#line 237 "lex.ll"
    2190 { KEYWORD_RETURN(LVALUE); }                             // CFA
    2191         YY_BREAK
    2192 case 69:
     2117{ KEYWORD_RETURN(RETURN); }
     2118        YY_BREAK
     2119case 71:
    21932120YY_RULE_SETUP
    21942121#line 238 "lex.ll"
    2195 { KEYWORD_RETURN(NORETURN); }                   // C11
    2196         YY_BREAK
    2197 case 70:
     2122{ KEYWORD_RETURN(SHORT); }
     2123        YY_BREAK
     2124case 72:
    21982125YY_RULE_SETUP
    21992126#line 239 "lex.ll"
    2200 { KEYWORD_RETURN(OFFSETOF); }           // GCC
    2201         YY_BREAK
    2202 case 71:
     2127{ KEYWORD_RETURN(SIGNED); }
     2128        YY_BREAK
     2129case 73:
    22032130YY_RULE_SETUP
    22042131#line 240 "lex.ll"
    2205 { KEYWORD_RETURN(OTYPE); }                              // CFA
    2206         YY_BREAK
    2207 case 72:
     2132{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2133        YY_BREAK
     2134case 74:
    22082135YY_RULE_SETUP
    22092136#line 241 "lex.ll"
    2210 { KEYWORD_RETURN(REGISTER); }
    2211         YY_BREAK
    2212 case 73:
     2137{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2138        YY_BREAK
     2139case 75:
    22132140YY_RULE_SETUP
    22142141#line 242 "lex.ll"
    2215 { KEYWORD_RETURN(RESTRICT); }                   // C99
    2216         YY_BREAK
    2217 case 74:
     2142{ KEYWORD_RETURN(SIZEOF); }
     2143        YY_BREAK
     2144case 76:
    22182145YY_RULE_SETUP
    22192146#line 243 "lex.ll"
    2220 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    2221         YY_BREAK
    2222 case 75:
     2147{ KEYWORD_RETURN(STATIC); }
     2148        YY_BREAK
     2149case 77:
    22232150YY_RULE_SETUP
    22242151#line 244 "lex.ll"
    2225 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    2226         YY_BREAK
    2227 case 76:
     2152{ KEYWORD_RETURN(STATICASSERT); }               // C11
     2153        YY_BREAK
     2154case 78:
    22282155YY_RULE_SETUP
    22292156#line 245 "lex.ll"
    2230 { KEYWORD_RETURN(RETURN); }
    2231         YY_BREAK
    2232 case 77:
     2157{ KEYWORD_RETURN(STRUCT); }
     2158        YY_BREAK
     2159case 79:
    22332160YY_RULE_SETUP
    22342161#line 246 "lex.ll"
    2235 { KEYWORD_RETURN(SHORT); }
    2236         YY_BREAK
    2237 case 78:
     2162{ KEYWORD_RETURN(SWITCH); }
     2163        YY_BREAK
     2164case 80:
    22382165YY_RULE_SETUP
    22392166#line 247 "lex.ll"
    2240 { KEYWORD_RETURN(SIGNED); }
    2241         YY_BREAK
    2242 case 79:
     2167{ KEYWORD_RETURN(THREADLOCAL); }                // C11
     2168        YY_BREAK
     2169case 81:
    22432170YY_RULE_SETUP
    22442171#line 248 "lex.ll"
    2245 { KEYWORD_RETURN(SIGNED); }                             // GCC
    2246         YY_BREAK
    2247 case 80:
     2172{ KEYWORD_RETURN(THROW); }                              // CFA
     2173        YY_BREAK
     2174case 82:
    22482175YY_RULE_SETUP
    22492176#line 249 "lex.ll"
    2250 { KEYWORD_RETURN(SIGNED); }                             // GCC
    2251         YY_BREAK
    2252 case 81:
     2177{ KEYWORD_RETURN(TRY); }                                // CFA
     2178        YY_BREAK
     2179case 83:
    22532180YY_RULE_SETUP
    22542181#line 250 "lex.ll"
    2255 { KEYWORD_RETURN(SIZEOF); }
    2256         YY_BREAK
    2257 case 82:
     2182{ KEYWORD_RETURN(TYPE); }                               // CFA
     2183        YY_BREAK
     2184case 84:
    22582185YY_RULE_SETUP
    22592186#line 251 "lex.ll"
    2260 { KEYWORD_RETURN(STATIC); }
    2261         YY_BREAK
    2262 case 83:
     2187{ KEYWORD_RETURN(TYPEDEF); }
     2188        YY_BREAK
     2189case 85:
    22632190YY_RULE_SETUP
    22642191#line 252 "lex.ll"
    2265 { KEYWORD_RETURN(STATICASSERT); }               // C11
    2266         YY_BREAK
    2267 case 84:
     2192{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2193        YY_BREAK
     2194case 86:
    22682195YY_RULE_SETUP
    22692196#line 253 "lex.ll"
    2270 { KEYWORD_RETURN(STRUCT); }
    2271         YY_BREAK
    2272 case 85:
     2197{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2198        YY_BREAK
     2199case 87:
    22732200YY_RULE_SETUP
    22742201#line 254 "lex.ll"
    2275 { KEYWORD_RETURN(SWITCH); }
    2276         YY_BREAK
    2277 case 86:
     2202{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2203        YY_BREAK
     2204case 88:
    22782205YY_RULE_SETUP
    22792206#line 255 "lex.ll"
    2280 { KEYWORD_RETURN(THREADLOCAL); }                // C11
    2281         YY_BREAK
    2282 case 87:
     2207{ KEYWORD_RETURN(UNION); }
     2208        YY_BREAK
     2209case 89:
    22832210YY_RULE_SETUP
    22842211#line 256 "lex.ll"
    2285 { KEYWORD_RETURN(THROW); }                              // CFA
    2286         YY_BREAK
    2287 case 88:
     2212{ KEYWORD_RETURN(UNSIGNED); }
     2213        YY_BREAK
     2214case 90:
    22882215YY_RULE_SETUP
    22892216#line 257 "lex.ll"
    2290 { KEYWORD_RETURN(THROWRESUME); }                // CFA
    2291         YY_BREAK
    2292 case 89:
     2217{ KEYWORD_RETURN(VOID); }
     2218        YY_BREAK
     2219case 91:
    22932220YY_RULE_SETUP
    22942221#line 258 "lex.ll"
    2295 { KEYWORD_RETURN(TRAIT); }                              // CFA
    2296         YY_BREAK
    2297 case 90:
     2222{ KEYWORD_RETURN(VOLATILE); }
     2223        YY_BREAK
     2224case 92:
    22982225YY_RULE_SETUP
    22992226#line 259 "lex.ll"
    2300 { KEYWORD_RETURN(TRY); }                                // CFA
    2301         YY_BREAK
    2302 case 91:
     2227{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2228        YY_BREAK
     2229case 93:
    23032230YY_RULE_SETUP
    23042231#line 260 "lex.ll"
    2305 { KEYWORD_RETURN(TYPEDEF); }
    2306         YY_BREAK
    2307 case 92:
     2232{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2233        YY_BREAK
     2234case 94:
    23082235YY_RULE_SETUP
    23092236#line 261 "lex.ll"
    2310 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2311         YY_BREAK
    2312 case 93:
    2313 YY_RULE_SETUP
    2314 #line 262 "lex.ll"
    2315 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2316         YY_BREAK
    2317 case 94:
    2318 YY_RULE_SETUP
    2319 #line 263 "lex.ll"
    2320 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2321         YY_BREAK
     2237{ KEYWORD_RETURN(WHILE); }
     2238        YY_BREAK
     2239/* identifier */
    23222240case 95:
    23232241YY_RULE_SETUP
    23242242#line 264 "lex.ll"
    2325 { KEYWORD_RETURN(UNION); }
     2243{ IDENTIFIER_RETURN(); }
    23262244        YY_BREAK
    23272245case 96:
    23282246YY_RULE_SETUP
    23292247#line 265 "lex.ll"
    2330 { KEYWORD_RETURN(UNSIGNED); }
     2248{ ATTRIBUTE_RETURN(); }
    23312249        YY_BREAK
    23322250case 97:
    23332251YY_RULE_SETUP
    23342252#line 266 "lex.ll"
    2335 { KEYWORD_RETURN(VALIST); }                     // GCC
     2253{ BEGIN BKQUOTE; }
    23362254        YY_BREAK
    23372255case 98:
    23382256YY_RULE_SETUP
    23392257#line 267 "lex.ll"
    2340 { KEYWORD_RETURN(VOID); }
     2258{ IDENTIFIER_RETURN(); }
    23412259        YY_BREAK
    23422260case 99:
    23432261YY_RULE_SETUP
    23442262#line 268 "lex.ll"
    2345 { KEYWORD_RETURN(VOLATILE); }
    2346         YY_BREAK
     2263{ BEGIN 0; }
     2264        YY_BREAK
     2265/* numeric constants */
    23472266case 100:
    23482267YY_RULE_SETUP
    2349 #line 269 "lex.ll"
    2350 { KEYWORD_RETURN(VOLATILE); }                   // GCC
     2268#line 271 "lex.ll"
     2269{ NUMERIC_RETURN(ZERO); }                               // CFA
    23512270        YY_BREAK
    23522271case 101:
    23532272YY_RULE_SETUP
    2354 #line 270 "lex.ll"
    2355 { KEYWORD_RETURN(VOLATILE); }                   // GCC
     2273#line 272 "lex.ll"
     2274{ NUMERIC_RETURN(ONE); }                                // CFA
    23562275        YY_BREAK
    23572276case 102:
    23582277YY_RULE_SETUP
    2359 #line 271 "lex.ll"
    2360 { KEYWORD_RETURN(WHILE); }
    2361         YY_BREAK
    2362 /* identifier */
     2278#line 273 "lex.ll"
     2279{ NUMERIC_RETURN(INTEGERconstant); }
     2280        YY_BREAK
    23632281case 103:
    23642282YY_RULE_SETUP
    23652283#line 274 "lex.ll"
    2366 { IDENTIFIER_RETURN(); }
     2284{ NUMERIC_RETURN(INTEGERconstant); }
    23672285        YY_BREAK
    23682286case 104:
    23692287YY_RULE_SETUP
    23702288#line 275 "lex.ll"
    2371 { ATTRIBUTE_RETURN(); }
     2289{ NUMERIC_RETURN(INTEGERconstant); }
    23722290        YY_BREAK
    23732291case 105:
    23742292YY_RULE_SETUP
    23752293#line 276 "lex.ll"
    2376 { BEGIN BKQUOTE; }
     2294{ NUMERIC_RETURN(FLOATINGconstant); }
    23772295        YY_BREAK
    23782296case 106:
    23792297YY_RULE_SETUP
    23802298#line 277 "lex.ll"
    2381 { IDENTIFIER_RETURN(); }
    2382         YY_BREAK
     2299{ NUMERIC_RETURN(FLOATINGconstant); }
     2300        YY_BREAK
     2301/* character constant, allows empty value */
    23832302case 107:
    23842303YY_RULE_SETUP
    2385 #line 278 "lex.ll"
    2386 { BEGIN 0; }
    2387         YY_BREAK
    2388 /* numeric constants */
     2304#line 280 "lex.ll"
     2305{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
     2306        YY_BREAK
    23892307case 108:
    23902308YY_RULE_SETUP
    23912309#line 281 "lex.ll"
    2392 { NUMERIC_RETURN(ZERO); }                               // CFA
     2310{ *strtext += std::string( yytext ); }
    23932311        YY_BREAK
    23942312case 109:
     2313/* rule 109 can match eol */
    23952314YY_RULE_SETUP
    23962315#line 282 "lex.ll"
    2397 { NUMERIC_RETURN(ONE); }                                // CFA
    2398         YY_BREAK
    2399 case 110:
    2400 YY_RULE_SETUP
    2401 #line 283 "lex.ll"
    2402 { NUMERIC_RETURN(INTEGERconstant); }
    2403         YY_BREAK
    2404 case 111:
    2405 YY_RULE_SETUP
    2406 #line 284 "lex.ll"
    2407 { NUMERIC_RETURN(INTEGERconstant); }
    2408         YY_BREAK
    2409 case 112:
    2410 YY_RULE_SETUP
    2411 #line 285 "lex.ll"
    2412 { NUMERIC_RETURN(INTEGERconstant); }
    2413         YY_BREAK
    2414 case 113:
    2415 YY_RULE_SETUP
    2416 #line 286 "lex.ll"
    2417 { NUMERIC_RETURN(FLOATINGconstant); }
    2418         YY_BREAK
    2419 case 114:
    2420 YY_RULE_SETUP
    2421 #line 287 "lex.ll"
    2422 { NUMERIC_RETURN(FLOATINGconstant); }
    2423         YY_BREAK
    2424 /* character constant, allows empty value */
    2425 case 115:
    2426 YY_RULE_SETUP
    2427 #line 290 "lex.ll"
    2428 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    2429         YY_BREAK
    2430 case 116:
    2431 YY_RULE_SETUP
    2432 #line 291 "lex.ll"
    2433 { *strtext += std::string( yytext ); }
    2434         YY_BREAK
    2435 case 117:
    2436 /* rule 117 can match eol */
    2437 YY_RULE_SETUP
    2438 #line 292 "lex.ll"
    24392316{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
    24402317        YY_BREAK
    24412318/* ' stop highlighting */
    24422319/* string constant */
    2443 case 118:
    2444 YY_RULE_SETUP
    2445 #line 296 "lex.ll"
     2320case 110:
     2321YY_RULE_SETUP
     2322#line 286 "lex.ll"
    24462323{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    24472324        YY_BREAK
    2448 case 119:
    2449 YY_RULE_SETUP
    2450 #line 297 "lex.ll"
     2325case 111:
     2326YY_RULE_SETUP
     2327#line 287 "lex.ll"
    24512328{ *strtext += std::string( yytext ); }
    24522329        YY_BREAK
    2453 case 120:
    2454 /* rule 120 can match eol */
    2455 YY_RULE_SETUP
    2456 #line 298 "lex.ll"
     2330case 112:
     2331/* rule 112 can match eol */
     2332YY_RULE_SETUP
     2333#line 288 "lex.ll"
    24572334{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    24582335        YY_BREAK
    24592336/* " stop highlighting */
    24602337/* common character/string constant */
     2338case 113:
     2339YY_RULE_SETUP
     2340#line 292 "lex.ll"
     2341{ rm_underscore(); *strtext += std::string( yytext ); }
     2342        YY_BREAK
     2343case 114:
     2344/* rule 114 can match eol */
     2345YY_RULE_SETUP
     2346#line 293 "lex.ll"
     2347{}                                              // continuation (ALSO HANDLED BY CPP)
     2348        YY_BREAK
     2349case 115:
     2350YY_RULE_SETUP
     2351#line 294 "lex.ll"
     2352{ *strtext += std::string( yytext ); } // unknown escape character
     2353        YY_BREAK
     2354/* punctuation */
     2355case 116:
     2356YY_RULE_SETUP
     2357#line 297 "lex.ll"
     2358{ ASCIIOP_RETURN(); }
     2359        YY_BREAK
     2360case 117:
     2361YY_RULE_SETUP
     2362#line 298 "lex.ll"
     2363{ ASCIIOP_RETURN(); }
     2364        YY_BREAK
     2365case 118:
     2366YY_RULE_SETUP
     2367#line 299 "lex.ll"
     2368{ ASCIIOP_RETURN(); }
     2369        YY_BREAK
     2370case 119:
     2371YY_RULE_SETUP
     2372#line 300 "lex.ll"
     2373{ ASCIIOP_RETURN(); }
     2374        YY_BREAK
     2375case 120:
     2376YY_RULE_SETUP
     2377#line 301 "lex.ll"
     2378{ ASCIIOP_RETURN(); }
     2379        YY_BREAK
    24612380case 121:
    24622381YY_RULE_SETUP
    24632382#line 302 "lex.ll"
    2464 { rm_underscore(); *strtext += std::string( yytext ); }
     2383{ ASCIIOP_RETURN(); }
    24652384        YY_BREAK
    24662385case 122:
    2467 /* rule 122 can match eol */
    24682386YY_RULE_SETUP
    24692387#line 303 "lex.ll"
    2470 {}                                              // continuation (ALSO HANDLED BY CPP)
     2388{ ASCIIOP_RETURN(); }                                   // also operator
    24712389        YY_BREAK
    24722390case 123:
    24732391YY_RULE_SETUP
    24742392#line 304 "lex.ll"
    2475 { *strtext += std::string( yytext ); } // unknown escape character
    2476         YY_BREAK
    2477 /* punctuation */
     2393{ ASCIIOP_RETURN(); }
     2394        YY_BREAK
    24782395case 124:
    24792396YY_RULE_SETUP
     2397#line 305 "lex.ll"
     2398{ ASCIIOP_RETURN(); }
     2399        YY_BREAK
     2400case 125:
     2401YY_RULE_SETUP
     2402#line 306 "lex.ll"
     2403{ ASCIIOP_RETURN(); }                                   // also operator
     2404        YY_BREAK
     2405case 126:
     2406YY_RULE_SETUP
    24802407#line 307 "lex.ll"
     2408{ NAMEDOP_RETURN(ELLIPSIS); }
     2409        YY_BREAK
     2410/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
     2411case 127:
     2412YY_RULE_SETUP
     2413#line 310 "lex.ll"
     2414{ RETURN_VAL('['); }
     2415        YY_BREAK
     2416case 128:
     2417YY_RULE_SETUP
     2418#line 311 "lex.ll"
     2419{ RETURN_VAL(']'); }
     2420        YY_BREAK
     2421case 129:
     2422YY_RULE_SETUP
     2423#line 312 "lex.ll"
     2424{ RETURN_VAL('{'); }
     2425        YY_BREAK
     2426case 130:
     2427YY_RULE_SETUP
     2428#line 313 "lex.ll"
     2429{ RETURN_VAL('}'); }
     2430        YY_BREAK
     2431/* operators */
     2432case 131:
     2433YY_RULE_SETUP
     2434#line 316 "lex.ll"
    24812435{ ASCIIOP_RETURN(); }
    24822436        YY_BREAK
    2483 case 125:
    2484 YY_RULE_SETUP
    2485 #line 308 "lex.ll"
     2437case 132:
     2438YY_RULE_SETUP
     2439#line 317 "lex.ll"
    24862440{ ASCIIOP_RETURN(); }
    24872441        YY_BREAK
    2488 case 126:
    2489 YY_RULE_SETUP
    2490 #line 309 "lex.ll"
     2442case 133:
     2443YY_RULE_SETUP
     2444#line 318 "lex.ll"
    24912445{ ASCIIOP_RETURN(); }
    24922446        YY_BREAK
    2493 case 127:
    2494 YY_RULE_SETUP
    2495 #line 310 "lex.ll"
     2447case 134:
     2448YY_RULE_SETUP
     2449#line 319 "lex.ll"
    24962450{ ASCIIOP_RETURN(); }
    24972451        YY_BREAK
    2498 case 128:
    2499 YY_RULE_SETUP
    2500 #line 311 "lex.ll"
     2452case 135:
     2453YY_RULE_SETUP
     2454#line 320 "lex.ll"
    25012455{ ASCIIOP_RETURN(); }
    25022456        YY_BREAK
    2503 case 129:
    2504 YY_RULE_SETUP
    2505 #line 312 "lex.ll"
     2457case 136:
     2458YY_RULE_SETUP
     2459#line 321 "lex.ll"
    25062460{ ASCIIOP_RETURN(); }
    25072461        YY_BREAK
    2508 case 130:
    2509 YY_RULE_SETUP
    2510 #line 313 "lex.ll"
    2511 { ASCIIOP_RETURN(); }                                   // also operator
    2512         YY_BREAK
    2513 case 131:
    2514 YY_RULE_SETUP
    2515 #line 314 "lex.ll"
     2462case 137:
     2463YY_RULE_SETUP
     2464#line 322 "lex.ll"
    25162465{ ASCIIOP_RETURN(); }
    25172466        YY_BREAK
    2518 case 132:
    2519 YY_RULE_SETUP
    2520 #line 315 "lex.ll"
     2467case 138:
     2468YY_RULE_SETUP
     2469#line 323 "lex.ll"
    25212470{ ASCIIOP_RETURN(); }
    25222471        YY_BREAK
    2523 case 133:
    2524 YY_RULE_SETUP
    2525 #line 316 "lex.ll"
    2526 { ASCIIOP_RETURN(); }                                   // also operator
    2527         YY_BREAK
    2528 case 134:
    2529 YY_RULE_SETUP
    2530 #line 317 "lex.ll"
    2531 { NAMEDOP_RETURN(ELLIPSIS); }
    2532         YY_BREAK
    2533 /* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2534 case 135:
    2535 YY_RULE_SETUP
    2536 #line 320 "lex.ll"
    2537 { RETURN_VAL('['); }
    2538         YY_BREAK
    2539 case 136:
    2540 YY_RULE_SETUP
    2541 #line 321 "lex.ll"
    2542 { RETURN_VAL(']'); }
    2543         YY_BREAK
    2544 case 137:
    2545 YY_RULE_SETUP
    2546 #line 322 "lex.ll"
    2547 { RETURN_VAL('{'); }
    2548         YY_BREAK
    2549 case 138:
    2550 YY_RULE_SETUP
    2551 #line 323 "lex.ll"
    2552 { RETURN_VAL('}'); }
    2553         YY_BREAK
    2554 /* operators */
    25552472case 139:
     2473YY_RULE_SETUP
     2474#line 324 "lex.ll"
     2475{ ASCIIOP_RETURN(); }
     2476        YY_BREAK
     2477case 140:
     2478YY_RULE_SETUP
     2479#line 325 "lex.ll"
     2480{ ASCIIOP_RETURN(); }
     2481        YY_BREAK
     2482case 141:
    25562483YY_RULE_SETUP
    25572484#line 326 "lex.ll"
    25582485{ ASCIIOP_RETURN(); }
    25592486        YY_BREAK
    2560 case 140:
     2487case 142:
    25612488YY_RULE_SETUP
    25622489#line 327 "lex.ll"
    25632490{ ASCIIOP_RETURN(); }
    25642491        YY_BREAK
    2565 case 141:
     2492case 143:
    25662493YY_RULE_SETUP
    25672494#line 328 "lex.ll"
    25682495{ ASCIIOP_RETURN(); }
    25692496        YY_BREAK
    2570 case 142:
     2497case 144:
    25712498YY_RULE_SETUP
    25722499#line 329 "lex.ll"
    25732500{ ASCIIOP_RETURN(); }
    25742501        YY_BREAK
    2575 case 143:
    2576 YY_RULE_SETUP
    2577 #line 330 "lex.ll"
    2578 { ASCIIOP_RETURN(); }
    2579         YY_BREAK
    2580 case 144:
     2502case 145:
    25812503YY_RULE_SETUP
    25822504#line 331 "lex.ll"
    2583 { ASCIIOP_RETURN(); }
    2584         YY_BREAK
    2585 case 145:
     2505{ NAMEDOP_RETURN(ICR); }
     2506        YY_BREAK
     2507case 146:
    25862508YY_RULE_SETUP
    25872509#line 332 "lex.ll"
    2588 { ASCIIOP_RETURN(); }
    2589         YY_BREAK
    2590 case 146:
     2510{ NAMEDOP_RETURN(DECR); }
     2511        YY_BREAK
     2512case 147:
    25912513YY_RULE_SETUP
    25922514#line 333 "lex.ll"
    2593 { ASCIIOP_RETURN(); }
    2594         YY_BREAK
    2595 case 147:
     2515{ NAMEDOP_RETURN(EQ); }
     2516        YY_BREAK
     2517case 148:
    25962518YY_RULE_SETUP
    25972519#line 334 "lex.ll"
    2598 { ASCIIOP_RETURN(); }
    2599         YY_BREAK
    2600 case 148:
     2520{ NAMEDOP_RETURN(NE); }
     2521        YY_BREAK
     2522case 149:
    26012523YY_RULE_SETUP
    26022524#line 335 "lex.ll"
    2603 { ASCIIOP_RETURN(); }
    2604         YY_BREAK
    2605 case 149:
     2525{ NAMEDOP_RETURN(LS); }
     2526        YY_BREAK
     2527case 150:
    26062528YY_RULE_SETUP
    26072529#line 336 "lex.ll"
    2608 { ASCIIOP_RETURN(); }
    2609         YY_BREAK
    2610 case 150:
     2530{ NAMEDOP_RETURN(RS); }
     2531        YY_BREAK
     2532case 151:
    26112533YY_RULE_SETUP
    26122534#line 337 "lex.ll"
    2613 { ASCIIOP_RETURN(); }
    2614         YY_BREAK
    2615 case 151:
     2535{ NAMEDOP_RETURN(LE); }
     2536        YY_BREAK
     2537case 152:
    26162538YY_RULE_SETUP
    26172539#line 338 "lex.ll"
    2618 { ASCIIOP_RETURN(); }
    2619         YY_BREAK
    2620 case 152:
     2540{ NAMEDOP_RETURN(GE); }
     2541        YY_BREAK
     2542case 153:
    26212543YY_RULE_SETUP
    26222544#line 339 "lex.ll"
    2623 { ASCIIOP_RETURN(); }
    2624         YY_BREAK
    2625 case 153:
     2545{ NAMEDOP_RETURN(ANDAND); }
     2546        YY_BREAK
     2547case 154:
     2548YY_RULE_SETUP
     2549#line 340 "lex.ll"
     2550{ NAMEDOP_RETURN(OROR); }
     2551        YY_BREAK
     2552case 155:
    26262553YY_RULE_SETUP
    26272554#line 341 "lex.ll"
    2628 { NAMEDOP_RETURN(ICR); }
    2629         YY_BREAK
    2630 case 154:
     2555{ NAMEDOP_RETURN(ARROW); }
     2556        YY_BREAK
     2557case 156:
    26312558YY_RULE_SETUP
    26322559#line 342 "lex.ll"
    2633 { NAMEDOP_RETURN(DECR); }
    2634         YY_BREAK
    2635 case 155:
     2560{ NAMEDOP_RETURN(PLUSassign); }
     2561        YY_BREAK
     2562case 157:
    26362563YY_RULE_SETUP
    26372564#line 343 "lex.ll"
    2638 { NAMEDOP_RETURN(EQ); }
    2639         YY_BREAK
    2640 case 156:
     2565{ NAMEDOP_RETURN(MINUSassign); }
     2566        YY_BREAK
     2567case 158:
    26412568YY_RULE_SETUP
    26422569#line 344 "lex.ll"
    2643 { NAMEDOP_RETURN(NE); }
    2644         YY_BREAK
    2645 case 157:
     2570{ NAMEDOP_RETURN(MULTassign); }
     2571        YY_BREAK
     2572case 159:
    26462573YY_RULE_SETUP
    26472574#line 345 "lex.ll"
    2648 { NAMEDOP_RETURN(LS); }
    2649         YY_BREAK
    2650 case 158:
     2575{ NAMEDOP_RETURN(DIVassign); }
     2576        YY_BREAK
     2577case 160:
    26512578YY_RULE_SETUP
    26522579#line 346 "lex.ll"
    2653 { NAMEDOP_RETURN(RS); }
    2654         YY_BREAK
    2655 case 159:
     2580{ NAMEDOP_RETURN(MODassign); }
     2581        YY_BREAK
     2582case 161:
    26562583YY_RULE_SETUP
    26572584#line 347 "lex.ll"
    2658 { NAMEDOP_RETURN(LE); }
    2659         YY_BREAK
    2660 case 160:
     2585{ NAMEDOP_RETURN(ANDassign); }
     2586        YY_BREAK
     2587case 162:
    26612588YY_RULE_SETUP
    26622589#line 348 "lex.ll"
    2663 { NAMEDOP_RETURN(GE); }
    2664         YY_BREAK
    2665 case 161:
     2590{ NAMEDOP_RETURN(ORassign); }
     2591        YY_BREAK
     2592case 163:
    26662593YY_RULE_SETUP
    26672594#line 349 "lex.ll"
    2668 { NAMEDOP_RETURN(ANDAND); }
    2669         YY_BREAK
    2670 case 162:
     2595{ NAMEDOP_RETURN(ERassign); }
     2596        YY_BREAK
     2597case 164:
    26712598YY_RULE_SETUP
    26722599#line 350 "lex.ll"
    2673 { NAMEDOP_RETURN(OROR); }
    2674         YY_BREAK
    2675 case 163:
     2600{ NAMEDOP_RETURN(LSassign); }
     2601        YY_BREAK
     2602case 165:
    26762603YY_RULE_SETUP
    26772604#line 351 "lex.ll"
    2678 { NAMEDOP_RETURN(ARROW); }
    2679         YY_BREAK
    2680 case 164:
    2681 YY_RULE_SETUP
    2682 #line 352 "lex.ll"
    2683 { NAMEDOP_RETURN(PLUSassign); }
    2684         YY_BREAK
    2685 case 165:
    2686 YY_RULE_SETUP
    2687 #line 353 "lex.ll"
    2688 { NAMEDOP_RETURN(MINUSassign); }
    2689         YY_BREAK
     2605{ NAMEDOP_RETURN(RSassign); }
     2606        YY_BREAK
     2607/* CFA, operator identifier */
    26902608case 166:
    26912609YY_RULE_SETUP
    26922610#line 354 "lex.ll"
    2693 { NAMEDOP_RETURN(MULTassign); }
     2611{ IDENTIFIER_RETURN(); }                                // unary
    26942612        YY_BREAK
    26952613case 167:
    26962614YY_RULE_SETUP
    26972615#line 355 "lex.ll"
    2698 { NAMEDOP_RETURN(DIVassign); }
     2616{ IDENTIFIER_RETURN(); }
    26992617        YY_BREAK
    27002618case 168:
    27012619YY_RULE_SETUP
    27022620#line 356 "lex.ll"
    2703 { NAMEDOP_RETURN(MODassign); }
    2704         YY_BREAK
    2705 case 169:
    2706 YY_RULE_SETUP
    2707 #line 357 "lex.ll"
    2708 { NAMEDOP_RETURN(ANDassign); }
    2709         YY_BREAK
    2710 case 170:
    2711 YY_RULE_SETUP
    2712 #line 358 "lex.ll"
    2713 { NAMEDOP_RETURN(ORassign); }
    2714         YY_BREAK
    2715 case 171:
    2716 YY_RULE_SETUP
    2717 #line 359 "lex.ll"
    2718 { NAMEDOP_RETURN(ERassign); }
    2719         YY_BREAK
    2720 case 172:
    2721 YY_RULE_SETUP
    2722 #line 360 "lex.ll"
    2723 { NAMEDOP_RETURN(LSassign); }
    2724         YY_BREAK
    2725 case 173:
    2726 YY_RULE_SETUP
    2727 #line 361 "lex.ll"
    2728 { NAMEDOP_RETURN(RSassign); }
    2729         YY_BREAK
    2730 case 174:
    2731 YY_RULE_SETUP
    2732 #line 363 "lex.ll"
    2733 { NAMEDOP_RETURN(ATassign); }                   // CFA
    2734         YY_BREAK
    2735 /* CFA, operator identifier */
    2736 case 175:
    2737 YY_RULE_SETUP
    2738 #line 366 "lex.ll"
    2739 { IDENTIFIER_RETURN(); }                                // unary
    2740         YY_BREAK
    2741 case 176:
    2742 YY_RULE_SETUP
    2743 #line 367 "lex.ll"
    2744 { IDENTIFIER_RETURN(); }
    2745         YY_BREAK
    2746 case 177:
    2747 YY_RULE_SETUP
    2748 #line 368 "lex.ll"
    2749 { IDENTIFIER_RETURN(); }
    2750         YY_BREAK
    2751 case 178:
    2752 YY_RULE_SETUP
    2753 #line 369 "lex.ll"
    27542621{ IDENTIFIER_RETURN(); }                // binary
    27552622        YY_BREAK
     
    27802647          an argument list.
    27812648        */
    2782 case 179:
    2783 YY_RULE_SETUP
    2784 #line 396 "lex.ll"
     2649case 169:
     2650YY_RULE_SETUP
     2651#line 383 "lex.ll"
    27852652{
    27862653        // 1 or 2 character unary operator ?
     
    27952662        YY_BREAK
    27962663/* unknown characters */
    2797 case 180:
    2798 YY_RULE_SETUP
    2799 #line 408 "lex.ll"
     2664case 170:
     2665YY_RULE_SETUP
     2666#line 395 "lex.ll"
    28002667{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    28012668        YY_BREAK
    2802 case 181:
    2803 YY_RULE_SETUP
    2804 #line 410 "lex.ll"
     2669case 171:
     2670YY_RULE_SETUP
     2671#line 397 "lex.ll"
    28052672ECHO;
    28062673        YY_BREAK
    2807 #line 2808 "Parser/lex.cc"
     2674#line 2675 "Parser/lex.cc"
    28082675case YY_STATE_EOF(INITIAL):
    28092676case YY_STATE_EOF(COMMENT):
     
    31022969                        {
    31032970                        yy_current_state = (int) yy_def[yy_current_state];
    3104                         if ( yy_current_state >= 892 )
     2971                        if ( yy_current_state >= 826 )
    31052972                                yy_c = yy_meta[(unsigned int) yy_c];
    31062973                        }
     
    31302997                {
    31312998                yy_current_state = (int) yy_def[yy_current_state];
    3132                 if ( yy_current_state >= 892 )
     2999                if ( yy_current_state >= 826 )
    31333000                        yy_c = yy_meta[(unsigned int) yy_c];
    31343001                }
    31353002        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3136         yy_is_jam = (yy_current_state == 891);
     3003        yy_is_jam = (yy_current_state == 825);
    31373004
    31383005        return yy_is_jam ? 0 : yy_current_state;
     
    37803647#define YYTABLES_NAME "yytables"
    37813648
    3782 #line 410 "lex.ll"
     3649#line 397 "lex.ll"
    37833650
    37843651
  • src/Parser/lex.h

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

    r242d458 r679864e1  
    99 * Author           : Peter A. Buhr
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    11  * Last Modified By :
    12  * Last Modified On : Sun Jul 31 07:19:36 2016
    13  * Update Count     : 459
     11 * Last Modified By : Peter A. Buhr
     12 * Last Modified On : Fri Jun 19 11:10:14 2015
     13 * Update Count     : 392
    1414 */
    1515
     
    2727
    2828#include "lex.h"
     29#include "ParseNode.h"
    2930#include "parser.h"                                                                             // YACC generated definitions based on C++ grammar
    30 #include "ParseNode.h"
    31 #include "TypedefTable.h"
    3231
    3332char *yyfilename;
     
    4544#define NUMERIC_RETURN(x)       rm_underscore(); RETURN_VAL( x ) // numeric constant
    4645#define KEYWORD_RETURN(x)       RETURN_CHAR( x )                        // keyword
    47 #define IDENTIFIER_RETURN()     RETURN_VAL( typedefTable.isKind( yytext ) )
     46#define IDENTIFIER_RETURN()     RETURN_VAL( (typedefTable.isIdentifier( yytext ) ? IDENTIFIER : typedefTable.isTypedef( yytext ) ? TYPEDEFname : TYPEGENname ) )
    4847#define ATTRIBUTE_RETURN()      RETURN_VAL( ATTR_IDENTIFIER )
    4948
    5049void rm_underscore() {
    51         // Remove underscores in numeric constant by copying the non-underscore characters to the front of the string.
    52         yyleng = 0;
     50        // remove underscores in numeric constant
     51        int j = 0;
    5352        for ( int i = 0; yytext[i] != '\0'; i += 1 ) {
    5453                if ( yytext[i] != '_' ) {
    55                         yytext[yyleng] = yytext[i];
    56                         yyleng += 1;
     54                        yytext[j] = yytext[i];
     55                        j += 1;
    5756                } // if
    5857        } // for
     58        yyleng = j;
    5959        yytext[yyleng] = '\0';
    6060}
     
    9595fractional_constant ({decimal_digits}?"."{decimal_digits})|({decimal_digits}".")
    9696exponent "_"?[eE]"_"?[+-]?{decimal_digits}
    97                                 // GCC: D (double), DL (long double) and iI (imaginary) suffixes
    98 floating_suffix "_"?([fFdDlL][iI]?|"DL"|[iI][lLfFdD]?)
    99                                 //floating_suffix "_"?([fFdD]|[lL]|[D][L])|([iI][lLfFdD])|([lLfFdD][iI]))
     97floating_suffix "_"?[flFL]
    10098floating_constant (({fractional_constant}{exponent}?)|({decimal_digits}{exponent})){floating_suffix}?
    10199
     
    120118h_white [ ]|{h_tab}
    121119
    122                                 // overloadable operators
     120                                // operators
    123121op_unary_only "~"|"!"
    124122op_unary_binary "+"|"-"|"*"
     
    128126op_binary_only "/"|"%"|"^"|"&"|"|"|"<"|">"|"="|"=="|"!="|"<<"|">>"|"<="|">="|"+="|"-="|"*="|"/="|"%="|"&="|"|="|"^="|"<<="|">>="
    129127op_binary_over {op_unary_binary}|{op_binary_only}
    130                                 // op_binary_not_over "?"|"->"|"."|"&&"|"||"|"@="
    131                                 // operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
     128op_binary_not_over "?"|"->"|"&&"|"||"
     129operator {op_unary_pre_post}|{op_binary_over}|{op_binary_not_over}
    132130
    133131%x COMMENT
     
    138136%%
    139137                                   /* line directives */
    140 ^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" {
     138^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["][^\n]*"\n" {
    141139        /* " stop highlighting */
    142140        char *end_num;
     
    184182__asm                   { KEYWORD_RETURN(ASM); }                                // GCC
    185183__asm__                 { KEYWORD_RETURN(ASM); }                                // GCC
    186 _At                             { KEYWORD_RETURN(AT); }                                 // CFA
    187184_Atomic                 { KEYWORD_RETURN(ATOMIC); }                             // C11
    188185__attribute             { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     
    193190case                    { KEYWORD_RETURN(CASE); }
    194191catch                   { KEYWORD_RETURN(CATCH); }                              // CFA
    195 catchResume             { KEYWORD_RETURN(CATCHRESUME); }                // CFA
    196192char                    { KEYWORD_RETURN(CHAR); }
    197193choose                  { KEYWORD_RETURN(CHOOSE); }                             // CFA
     
    202198__const                 { KEYWORD_RETURN(CONST); }                              // GCC
    203199__const__               { KEYWORD_RETURN(CONST); }                              // GCC
     200context                 { KEYWORD_RETURN(CONTEXT); }                    // CFA
    204201continue                { KEYWORD_RETURN(CONTINUE); }
    205202default                 { KEYWORD_RETURN(DEFAULT); }
    206 disable                 { KEYWORD_RETURN(DISABLE); }                    // CFA
    207203do                              { KEYWORD_RETURN(DO); }
    208204double                  { KEYWORD_RETURN(DOUBLE); }
    209205dtype                   { KEYWORD_RETURN(DTYPE); }                              // CFA
    210206else                    { KEYWORD_RETURN(ELSE); }
    211 enable                  { KEYWORD_RETURN(ENABLE); }                             // CFA
    212207enum                    { KEYWORD_RETURN(ENUM); }
    213208__extension__   { KEYWORD_RETURN(EXTENSION); }                  // GCC
    214209extern                  { KEYWORD_RETURN(EXTERN); }
    215 fallthrough             { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    216210fallthru                { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    217211finally                 { KEYWORD_RETURN(FINALLY); }                    // CFA
     
    237231lvalue                  { KEYWORD_RETURN(LVALUE); }                             // CFA
    238232_Noreturn               { KEYWORD_RETURN(NORETURN); }                   // C11
    239 __builtin_offsetof { KEYWORD_RETURN(OFFSETOF); }                // GCC
    240 otype                   { KEYWORD_RETURN(OTYPE); }                              // CFA
    241233register                { KEYWORD_RETURN(REGISTER); }
    242234restrict                { KEYWORD_RETURN(RESTRICT); }                   // C99
     
    255247_Thread_local   { KEYWORD_RETURN(THREADLOCAL); }                // C11
    256248throw                   { KEYWORD_RETURN(THROW); }                              // CFA
    257 throwResume             { KEYWORD_RETURN(THROWRESUME); }                // CFA
    258 trait                   { KEYWORD_RETURN(TRAIT); }                              // CFA
    259249try                             { KEYWORD_RETURN(TRY); }                                // CFA
     250type                    { KEYWORD_RETURN(TYPE); }                               // CFA
    260251typedef                 { KEYWORD_RETURN(TYPEDEF); }
    261252typeof                  { KEYWORD_RETURN(TYPEOF); }                             // GCC
     
    264255union                   { KEYWORD_RETURN(UNION); }
    265256unsigned                { KEYWORD_RETURN(UNSIGNED); }
    266 __builtin_va_list { KEYWORD_RETURN(VALIST); }                   // GCC
    267257void                    { KEYWORD_RETURN(VOID); }
    268258volatile                { KEYWORD_RETURN(VOLATILE); }
     
    274264{identifier}    { IDENTIFIER_RETURN(); }
    275265{attr_identifier} { ATTRIBUTE_RETURN(); }
    276 "`"                             { BEGIN BKQUOTE; }
     266"`"                     { BEGIN BKQUOTE; }
    277267<BKQUOTE>{identifier} { IDENTIFIER_RETURN(); }
    278268<BKQUOTE>"`"    { BEGIN 0; }
     
    361351">>="                   { NAMEDOP_RETURN(RSassign); }
    362352
    363 "@="                    { NAMEDOP_RETURN(ATassign); }                   // CFA
    364 
    365353                                /* CFA, operator identifier */
    366354{op_unary}"?"   { IDENTIFIER_RETURN(); }                                // unary
    367355"?"({op_unary_pre_post}|"()"|"[?]"|"{}") { IDENTIFIER_RETURN(); }
    368 "^?{}" { IDENTIFIER_RETURN(); }
    369356"?"{op_binary_over}"?"  { IDENTIFIER_RETURN(); }                // binary
    370357        /*
     
    394381          an argument list.
    395382        */
    396 {op_unary}"?"({op_unary_pre_post}|"[?]"|{op_binary_over}"?") {
     383{op_unary}"?"(({op_unary_pre_post}|"[?]")|({op_binary_over}"?")) {
    397384        // 1 or 2 character unary operator ?
    398385        int i = yytext[1] == '?' ? 1 : 2;
  • src/Parser/module.mk

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

    r242d458 r679864e1  
    6767
    6868/* Line 268 of yacc.c  */
    69 #line 42 "parser.yy"
     69#line 44 "parser.yy"
    7070
    7171#define YYDEBUG_LEXER_TEXT (yylval)                                             // lexer loads this up each time
     
    7777#include <cstdio>
    7878#include <stack>
     79#include "TypedefTable.h"
    7980#include "lex.h"
    80 #include "parser.h"
    8181#include "ParseNode.h"
    82 #include "TypedefTable.h"
    8382#include "TypeData.h"
    8483#include "LinkageSpec.h"
     
    9190
    9291/* Line 268 of yacc.c  */
    93 #line 94 "Parser/parser.cc"
     92#line 93 "Parser/parser.cc"
    9493
    9594/* Enabling traces.  */
     
    139138     SIGNED = 277,
    140139     UNSIGNED = 278,
    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
     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
    226217   };
    227218#endif
     
    248239#define SIGNED 277
    249240#define UNSIGNED 278
    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
     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
    335318
    336319
     
    342325
    343326/* Line 293 of yacc.c  */
    344 #line 110 "parser.yy"
     327#line 108 "parser.yy"
    345328
    346329        Token tok;
     
    354337        LabelNode *label;
    355338        InitializerNode *in;
    356         OperatorNode::Type op;
    357339        bool flag;
    358340
     
    360342
    361343/* Line 293 of yacc.c  */
    362 #line 363 "Parser/parser.cc"
     344#line 345 "Parser/parser.cc"
    363345} YYSTYPE;
    364346# define YYSTYPE_IS_TRIVIAL 1
     
    372354
    373355/* Line 343 of yacc.c  */
    374 #line 375 "Parser/parser.cc"
     356#line 357 "Parser/parser.cc"
    375357
    376358#ifdef short
     
    589571
    590572/* YYFINAL -- State number of the termination state.  */
    591 #define YYFINAL  252
     573#define YYFINAL  246
    592574/* YYLAST -- Last index in YYTABLE.  */
    593 #define YYLAST   12080
     575#define YYLAST   11329
    594576
    595577/* YYNTOKENS -- Number of terminals.  */
    596 #define YYNTOKENS  133
     578#define YYNTOKENS  125
    597579/* YYNNTS -- Number of nonterminals.  */
    598 #define YYNNTS  241
     580#define YYNNTS  238
    599581/* YYNRULES -- Number of rules.  */
    600 #define YYNRULES  755
     582#define YYNRULES  740
    601583/* YYNRULES -- Number of states.  */
    602 #define YYNSTATES  1579
     584#define YYNSTATES  1530
    603585
    604586/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    605587#define YYUNDEFTOK  2
    606 #define YYMAXUTOK   363
     588#define YYMAXUTOK   355
    607589
    608590#define YYTRANSLATE(YYX)                                                \
     
    615597       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    616598       2,     2,     2,     2,     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,
     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,
    621603       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    622604       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    623        2,   111,     2,   112,   128,     2,     2,     2,     2,     2,
     605       2,   103,     2,   104,   120,     2,     2,     2,     2,     2,
    624606       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    625607       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    626        2,     2,     2,   114,   129,   115,   123,     2,     2,     2,
     608       2,     2,     2,   106,   121,   107,   115,     2,     2,     2,
    627609       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    628610       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    647629      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
    648630      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    649       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
    650      105,   106,   107,   108
     631      95,    96,    97,    98,    99,   100
    651632};
    652633
     
    657638{
    658639       0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
    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
     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
    734714};
    735715
     
    737717static const yytype_int16 yyrhs[] =
    738718{
    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
     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
    1014987};
    1015988
     
    1017990static const yytype_uint16 yyrline[] =
    1018991{
    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
     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
    10951067};
    10961068#endif
     
    11041076  "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL",
    11051077  "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE",
    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",
     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",
    11121083  "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",
    11131084  "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
     
    11171088  "GE", "EQ", "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign",
    11181089  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
    1119   "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
    1120   "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'*'",
    1121   "'&'", "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",
    1122   "'|'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",
    1123   "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
     1090  "RSassign", "ANDassign", "ERassign", "ORassign", "THEN", "'('", "')'",
     1091  "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'", "'*'", "'&'",
     1092  "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'",
     1093  "'='", "';'", "$accept", "push", "pop", "constant", "identifier",
     1094  "no_01_identifier", "no_attr_identifier", "zero_one",
    11241095  "string_literal_list", "primary_expression", "postfix_expression",
    11251096  "argument_expression_list", "argument_expression", "field_list", "field",
    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",
     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",
    11301101  "logical_AND_expression", "logical_OR_expression",
    11311102  "conditional_expression", "constant_expression", "assignment_expression",
     
    11571128  "sue_declaration_specifier", "sue_type_specifier",
    11581129  "typedef_declaration_specifier", "typedef_type_specifier",
    1159   "elaborated_type_name", "aggregate_name", "$@2", "aggregate_key",
     1130  "elaborated_type_name", "aggregate_name", "aggregate_key",
    11601131  "field_declaration_list", "field_declaration",
    11611132  "new_field_declaring_list", "field_declaring_list", "field_declarator",
    11621133  "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
    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",
     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",
    11901161  "identifier_parameter_ptr", "identifier_parameter_array",
    11911162  "identifier_parameter_function", "type_parameter_redeclarator",
     
    12241195     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
    12251196     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    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
     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
    12301200};
    12311201# endif
     
    12341204static const yytype_uint16 yyr1[] =
    12351205{
    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
     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
    13121281};
    13131282
     
    13161285{
    13171286       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
    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,
     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,
    13381306       2,     1,     2,     2,     2,     1,     6,     8,    10,    12,
    13391307      14,     0,     1,     0,     1,     1,     3,     4,     7,     0,
     
    13481316       3,     1,     2,     1,     1,     1,     1,     1,     1,     1,
    13491317       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    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
     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
    13931361};
    13941362
     
    13981366static const yytype_uint16 yydefact[] =
    13991367{
    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,
     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,
    14551423       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    14561424       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
     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
    15581521};
    15591522
     
    15611524static const yytype_int16 yydefgoto[] =
    15621525{
    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
     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
    15881550};
    15891551
    15901552/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15911553   STATE-NUM.  */
    1592 #define YYPACT_NINF -1414
     1554#define YYPACT_NINF -1318
    15931555static const yytype_int16 yypact[] =
    15941556{
    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
     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
    17531710};
    17541711
     
    17561713static const yytype_int16 yypgoto[] =
    17571714{
    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
     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
    17831739};
    17841740
     
    17861742   positive, shift that token.  If negative, reduce the rule which
    17871743   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1788 #define YYTABLE_NINF -526
     1744#define YYTABLE_NINF -511
    17891745static const yytype_int16 yytable[] =
    17901746{
    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,
     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,
     1993       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,
    20682095       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,
     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,
    21522099       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,
     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,
     2124       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,
    21862178     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,
     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,
     2189       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2190      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,
    22072203     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,
     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,
    22592219       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,
     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,
     2250      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,
     2271       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2272      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,
    22712286       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,
     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,
     2296       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,
    22742319       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,
     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,
    22812326       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,
     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,
    22892331       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,
     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,
    23212335       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    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,
    2369        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    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,
     2336      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2337      25,    26,    27,    28,     0,     0,    29,   278,    30,   279,
    24972338       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24982339       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,
     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,
     2346       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2347      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,
    25022350       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,
     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,
    25062358      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,
     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,
     2369      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,
    25092394       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25102395       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,
     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,
    25142399       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,
     2400       0,     0,   290,     0,   921,     0,     0,     0,     0,     0,
     2401       0,   292,   340,   294,   295,   296,   297,     2,   202,     4,
     2402       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2403      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,
    25182414      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,
     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,
     2436      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,
     2443      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,
    25212456       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25222457       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,
     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,
    25262463       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,
     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,
     2477       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2478      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,
    25332491       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25342492       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,
     2493       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
     2494      38,     2,   202,     4,     5,     6,     7,     8,     9,    10,
     2495      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,
    25382505       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,
     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,
    25452563       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25462564       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,
     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,
    25532852       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    25542853      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2555       25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
    2556        0,     0,    31,     0,     8,     9,    10,    11,    12,    13,
     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,
     2859       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,
     2865       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    25572866      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,
     2867      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2868       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    25682869       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,
    25692878       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,
     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
     2888static 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,
     3224      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,
    25773267      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    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,
     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,
     3332       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3333      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,
    25883500       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    25893501      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    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,
     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,
    26003534       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,
     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,
    26233545       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    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,
     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,
    26463556       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    26473557      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    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,
     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,
    26583592       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,
    2670       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    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,
     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,
    27223603      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    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,
     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,
    27453620       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    27463621      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,
     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,
    28903631       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,
    2985        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2986       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    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,
    2993       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    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 
    3008 static 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,
    3588       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    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,
    3634       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    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,
     3632      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3633      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    37163634      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37173635      -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,
     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,
    37213648      -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,
     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,
    37253693      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,
     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,
    37283706      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37293707      -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,
     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,
    37333711      -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,
     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,
    37373752      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,
     3753      25,    26,    -1,    -1,    29,    30,    31,    -1,   101,    -1,
     3754     103,    -1,    37,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    37403755      -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,
    37413762      -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,
     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,
    37453769      -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,
     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,
    37493778      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,
     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,
    37603884       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    37613885      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3762       24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
    3763       -1,    -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,
     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,
    37643896      -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,
    37653904      -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,
     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,
    37723995       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    37733996      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,
     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,
    37764009      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,
     4010      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     4011      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37874012      -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,
    37884021      -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,
    3819       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    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,
    3830        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3831       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    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,
    3842        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    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,
    4131        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    4132       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    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,
    4197       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    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,
    4204        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    4205       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    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,
    4211        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    4212       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    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
     4022      -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68
    42194023};
    42204024
     
    42254029       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    42264030      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    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
     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
    43834182};
    43844183
     
    52175016
    52185017/* Line 1806 of yacc.c  */
    5219 #line 292 "parser.yy"
     5018#line 288 "parser.yy"
    52205019    {
    52215020                        typedefTable.enterScope();
     
    52265025
    52275026/* Line 1806 of yacc.c  */
    5228 #line 298 "parser.yy"
     5027#line 294 "parser.yy"
    52295028    {
    52305029                        typedefTable.leaveScope();
     
    52355034
    52365035/* Line 1806 of yacc.c  */
    5237 #line 307 "parser.yy"
    5238     { (yyval.constant) = makeConstantInteger( *(yyvsp[(1) - (1)].tok) ); }
     5036#line 303 "parser.yy"
     5037    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    52395038    break;
    52405039
     
    52425041
    52435042/* Line 1806 of yacc.c  */
    5244 #line 308 "parser.yy"
    5245     { (yyval.constant) = makeConstantFloat( *(yyvsp[(1) - (1)].tok) ); }
     5043#line 304 "parser.yy"
     5044    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    52465045    break;
    52475046
     
    52495048
    52505049/* Line 1806 of yacc.c  */
    5251 #line 309 "parser.yy"
    5252     { (yyval.constant) = makeConstantChar( *(yyvsp[(1) - (1)].tok) ); }
     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) ); }
    52535059    break;
    52545060
     
    52565062
    52575063/* Line 1806 of yacc.c  */
    5258 #line 334 "parser.yy"
    5259     { (yyval.constant) = makeConstantStr( *(yyvsp[(1) - (1)].tok) ); }
     5064#line 330 "parser.yy"
     5065    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    52605066    break;
    52615067
     
    52635069
    52645070/* Line 1806 of yacc.c  */
    5265 #line 335 "parser.yy"
    5266     { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
     5071#line 337 "parser.yy"
     5072    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    52675073    break;
    52685074
     
    52705076
    52715077/* Line 1806 of yacc.c  */
    5272 #line 342 "parser.yy"
     5078#line 339 "parser.yy"
    52735079    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    52745080    break;
     
    52775083
    52785084/* Line 1806 of yacc.c  */
    5279 #line 344 "parser.yy"
     5085#line 341 "parser.yy"
     5086    { (yyval.en) = (yyvsp[(2) - (3)].en); }
     5087    break;
     5088
     5089  case 20:
     5090
     5091/* Line 1806 of yacc.c  */
     5092#line 343 "parser.yy"
     5093    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
     5094    break;
     5095
     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
     5103  case 23:
     5104
     5105/* Line 1806 of yacc.c  */
     5106#line 355 "parser.yy"
     5107    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
     5108    break;
     5109
     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) ); }
     5129    break;
     5130
     5131  case 29:
     5132
     5133/* Line 1806 of yacc.c  */
     5134#line 365 "parser.yy"
     5135    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
     5136    break;
     5137
     5138  case 30:
     5139
     5140/* Line 1806 of yacc.c  */
     5141#line 368 "parser.yy"
     5142    { (yyval.en) = 0; }
     5143    break;
     5144
     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"
     5156    { (yyval.en) = 0; }
     5157    break;
     5158
     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"
    52805191    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    52815192    break;
    52825193
    5283   case 20:
    5284 
    5285 /* Line 1806 of yacc.c  */
    5286 #line 346 "parser.yy"
    5287     { (yyval.en) = (yyvsp[(2) - (3)].en); }
    5288     break;
    5289 
    5290   case 21:
    5291 
    5292 /* Line 1806 of yacc.c  */
    5293 #line 348 "parser.yy"
    5294     { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    5295     break;
    5296 
    5297   case 23:
    5298 
    5299 /* Line 1806 of yacc.c  */
    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"
    5308     { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    5309     break;
    5310 
    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) ) ) ); }
    5323     break;
    5324 
    5325   case 29:
    5326 
    5327 /* Line 1806 of yacc.c  */
    5328 #line 370 "parser.yy"
    5329     { (yyval.en) = new CompositeExprNode2( build_opr1( OperatorNode::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    5330     break;
    5331 
    5332   case 30:
    5333 
    5334 /* Line 1806 of yacc.c  */
    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"
     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"
    53675667    { (yyval.en) = 0; }
    53685668    break;
    53695669
    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:
     5670  case 130:
    58695671
    58705672/* Line 1806 of yacc.c  */
    58715673#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"
    5893     { (yyval.en) = 0; }
    5894     break;
    5895 
    5896   case 134:
    5897 
    5898 /* Line 1806 of yacc.c  */
    5899 #line 645 "parser.yy"
    59005674    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    59015675    break;
    59025676
    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"
     5677  case 136:
     5678
     5679/* Line 1806 of yacc.c  */
     5680#line 633 "parser.yy"
    59185681    {
    59195682                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    59215684    break;
    59225685
     5686  case 137:
     5687
     5688/* Line 1806 of yacc.c  */
     5689#line 640 "parser.yy"
     5690    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
     5691    break;
     5692
     5693  case 138:
     5694
     5695/* Line 1806 of yacc.c  */
     5696#line 647 "parser.yy"
     5697    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
     5698    break;
     5699
     5700  case 140:
     5701
     5702/* Line 1806 of yacc.c  */
     5703#line 653 "parser.yy"
     5704    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
     5705    break;
     5706
     5707  case 141:
     5708
     5709/* Line 1806 of yacc.c  */
     5710#line 658 "parser.yy"
     5711    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5712    break;
     5713
    59235714  case 142:
    59245715
    59255716/* 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"
     5725    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5726    break;
     5727
     5728  case 146:
     5729
     5730/* Line 1806 of yacc.c  */
    59265731#line 669 "parser.yy"
    5927     { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    5928     break;
    5929 
    5930   case 143:
    5931 
    5932 /* Line 1806 of yacc.c  */
    5933 #line 676 "parser.yy"
    5934     { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    5935     break;
    5936 
    5937   case 145:
     5732    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
     5733    break;
     5734
     5735  case 147:
     5736
     5737/* Line 1806 of yacc.c  */
     5738#line 674 "parser.yy"
     5739    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
     5740    break;
     5741
     5742  case 148:
     5743
     5744/* Line 1806 of yacc.c  */
     5745#line 680 "parser.yy"
     5746    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5747    break;
     5748
     5749  case 149:
    59385750
    59395751/* Line 1806 of yacc.c  */
    59405752#line 682 "parser.yy"
    5941     { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    5942     break;
    5943 
    5944   case 146:
    5945 
    5946 /* Line 1806 of yacc.c  */
    5947 #line 687 "parser.yy"
    5948     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    5949     break;
    5950 
    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"
    5966     { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
     5753    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
     5754    break;
     5755
     5756  case 150:
     5757
     5758/* Line 1806 of yacc.c  */
     5759#line 684 "parser.yy"
     5760    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    59675761    break;
    59685762
     
    59705764
    59715765/* 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"
     5788    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     5789    break;
     5790
     5791  case 155:
     5792
     5793/* Line 1806 of yacc.c  */
    59725794#line 702 "parser.yy"
    5973     { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    5974     break;
    5975 
    5976   case 152:
    5977 
    5978 /* Line 1806 of yacc.c  */
    5979 #line 707 "parser.yy"
    5980     { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    5981     break;
    5982 
    5983   case 153:
     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:
    59845806
    59855807/* Line 1806 of yacc.c  */
    59865808#line 713 "parser.yy"
    5987     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    5988     break;
    5989 
    5990   case 154:
    5991 
    5992 /* Line 1806 of yacc.c  */
    5993 #line 715 "parser.yy"
    5994     { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    5995     break;
    5996 
    5997   case 155:
    5998 
    5999 /* Line 1806 of yacc.c  */
    6000 #line 717 "parser.yy"
    6001     { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    6002     break;
    6003 
    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:
     5809    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
     5810    break;
     5811
     5812  case 160:
     5813
     5814/* Line 1806 of yacc.c  */
     5815#line 714 "parser.yy"
     5816    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
     5817    break;
     5818
     5819  case 162:
     5820
     5821/* Line 1806 of yacc.c  */
     5822#line 720 "parser.yy"
     5823    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
     5824    break;
     5825
     5826  case 163:
     5827
     5828/* Line 1806 of yacc.c  */
     5829#line 724 "parser.yy"
     5830    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     5831    break;
     5832
     5833  case 164:
    60205834
    60215835/* Line 1806 of yacc.c  */
    60225836#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"
    6040     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    6041     break;
    6042 
    6043   case 160:
    6044 
    6045 /* Line 1806 of yacc.c  */
    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:
     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"
     5851    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5852    break;
     5853
     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:
    60515862
    60525863/* Line 1806 of yacc.c  */
    60535864#line 748 "parser.yy"
    6054     { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(1) - (1)].en), 0 ); }
    6055     break;
    6056 
    6057   case 163:
     5865    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     5866    break;
     5867
     5868  case 171:
    60585869
    60595870/* Line 1806 of yacc.c  */
    60605871#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:
     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:
    60655883
    60665884/* Line 1806 of yacc.c  */
    60675885#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"
    6075     { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    6076     break;
    6077 
    6078   case 167:
    6079 
    6080 /* Line 1806 of yacc.c  */
    6081 #line 761 "parser.yy"
    6082     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    6083     break;
    6084 
    6085   case 168:
     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:
    60865904
    60875905/* Line 1806 of yacc.c  */
    60885906#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:
     5907    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
     5908    break;
     5909
     5910  case 178:
    60935911
    60945912/* Line 1806 of yacc.c  */
    60955913#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"
    6124     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    6125     break;
    6126 
    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:
     5914    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
     5915    break;
     5916
     5917  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:
    61355960
    61365961/* Line 1806 of yacc.c  */
    61375962#line 793 "parser.yy"
    6138     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    6139     break;
    6140 
    6141   case 178:
    6142 
    6143 /* Line 1806 of yacc.c  */
    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) ) ) ) ) ) ); }
    6146     break;
    6147 
    6148   case 179:
     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:
    61495974
    61505975/* Line 1806 of yacc.c  */
     
    61535978    break;
    61545979
    6155   case 181:
     5980  case 188:
     5981
     5982/* Line 1806 of yacc.c  */
     5983#line 804 "parser.yy"
     5984    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
     5985    break;
     5986
     5987  case 189:
    61565988
    61575989/* Line 1806 of yacc.c  */
    61585990#line 806 "parser.yy"
    6159     { (yyval.sn) = 0; }
    6160     break;
    6161 
    6162   case 182:
     5991    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
     5992    break;
     5993
     5994  case 190:
    61635995
    61645996/* Line 1806 of yacc.c  */
    61655997#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:
     5998    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     5999    break;
     6000
     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:
    61776009
    61786010/* Line 1806 of yacc.c  */
    61796011#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:
     6012    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
     6013    break;
     6014
     6015  case 193:
    61846016
    61856017/* Line 1806 of yacc.c  */
    61866018#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 
    6204   case 188:
    6205 
    6206 /* Line 1806 of yacc.c  */
    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"
    6243     { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
     6019    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    62446020    break;
    62456021
     
    62476023
    62486024/* Line 1806 of yacc.c  */
    6249 #line 849 "parser.yy"
    6250     { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    6251     break;
    6252 
    6253   case 195:
    6254 
    6255 /* Line 1806 of yacc.c  */
    6256 #line 851 "parser.yy"
    6257     { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    6258     break;
    6259 
    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"
    6278     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    6279     break;
    6280 
    6281   case 199:
    6282 
    6283 /* Line 1806 of yacc.c  */
    6284 #line 866 "parser.yy"
    6285     { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    6286     break;
    6287 
    6288   case 200:
    6289 
    6290 /* Line 1806 of yacc.c  */
    6291 #line 868 "parser.yy"
     6025#line 819 "parser.yy"
    62926026    {
    62936027                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    62966030    break;
    62976031
    6298   case 202:
    6299 
    6300 /* Line 1806 of yacc.c  */
    6301 #line 879 "parser.yy"
     6032  case 196:
     6033
     6034/* Line 1806 of yacc.c  */
     6035#line 830 "parser.yy"
    63026036    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    63036037    break;
    63046038
    6305   case 203:
    6306 
    6307 /* Line 1806 of yacc.c  */
    6308 #line 881 "parser.yy"
     6039  case 197:
     6040
     6041/* Line 1806 of yacc.c  */
     6042#line 832 "parser.yy"
    63096043    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    63106044    break;
    63116045
    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"
     6046  case 198:
     6047
     6048/* Line 1806 of yacc.c  */
     6049#line 837 "parser.yy"
    63306050    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    63316051    break;
    63326052
    6333   case 207:
    6334 
    6335 /* Line 1806 of yacc.c  */
    6336 #line 892 "parser.yy"
     6053  case 199:
     6054
     6055/* Line 1806 of yacc.c  */
     6056#line 839 "parser.yy"
    63376057    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    63386058    break;
    63396059
    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"
     6060  case 200:
     6061
     6062/* Line 1806 of yacc.c  */
     6063#line 844 "parser.yy"
    63586064    {
    63596065                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    63626068    break;
    63636069
    6364   case 212:
    6365 
    6366 /* Line 1806 of yacc.c  */
    6367 #line 915 "parser.yy"
     6070  case 202:
     6071
     6072/* Line 1806 of yacc.c  */
     6073#line 858 "parser.yy"
    63686074    {
    63696075                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63726078    break;
    63736079
    6374   case 213:
    6375 
    6376 /* Line 1806 of yacc.c  */
    6377 #line 920 "parser.yy"
     6080  case 203:
     6081
     6082/* Line 1806 of yacc.c  */
     6083#line 863 "parser.yy"
    63786084    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    63796085    break;
    63806086
    6381   case 214:
    6382 
    6383 /* Line 1806 of yacc.c  */
    6384 #line 922 "parser.yy"
     6087  case 204:
     6088
     6089/* Line 1806 of yacc.c  */
     6090#line 865 "parser.yy"
    63856091    {
    63866092                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63896095    break;
    63906096
     6097  case 206:
     6098
     6099/* Line 1806 of yacc.c  */
     6100#line 874 "parser.yy"
     6101    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
     6102    break;
     6103
     6104  case 207:
     6105
     6106/* Line 1806 of yacc.c  */
     6107#line 876 "parser.yy"
     6108    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
     6109    break;
     6110
     6111  case 208:
     6112
     6113/* Line 1806 of yacc.c  */
     6114#line 878 "parser.yy"
     6115    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
     6116    break;
     6117
     6118  case 209:
     6119
     6120/* Line 1806 of yacc.c  */
     6121#line 880 "parser.yy"
     6122    { (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) ); }
     6123    break;
     6124
     6125  case 210:
     6126
     6127/* Line 1806 of yacc.c  */
     6128#line 882 "parser.yy"
     6129    { (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) ); }
     6130    break;
     6131
     6132  case 211:
     6133
     6134/* Line 1806 of yacc.c  */
     6135#line 887 "parser.yy"
     6136    { (yyval.flag) = false; }
     6137    break;
     6138
     6139  case 212:
     6140
     6141/* Line 1806 of yacc.c  */
     6142#line 889 "parser.yy"
     6143    { (yyval.flag) = true; }
     6144    break;
     6145
     6146  case 213:
     6147
     6148/* Line 1806 of yacc.c  */
     6149#line 894 "parser.yy"
     6150    { (yyval.en) = 0; }
     6151    break;
     6152
    63916153  case 216:
    63926154
    63936155/* Line 1806 of yacc.c  */
     6156#line 901 "parser.yy"
     6157    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     6158    break;
     6159
     6160  case 217:
     6161
     6162/* Line 1806 of yacc.c  */
     6163#line 906 "parser.yy"
     6164    { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
     6165    break;
     6166
     6167  case 218:
     6168
     6169/* Line 1806 of yacc.c  */
     6170#line 908 "parser.yy"
     6171    { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
     6172    break;
     6173
     6174  case 219:
     6175
     6176/* Line 1806 of yacc.c  */
     6177#line 913 "parser.yy"
     6178    { (yyval.constant) = 0; }
     6179    break;
     6180
     6181  case 220:
     6182
     6183/* Line 1806 of yacc.c  */
     6184#line 915 "parser.yy"
     6185    { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
     6186    break;
     6187
     6188  case 221:
     6189
     6190/* Line 1806 of yacc.c  */
     6191#line 917 "parser.yy"
     6192    { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
     6193    break;
     6194
     6195  case 222:
     6196
     6197/* Line 1806 of yacc.c  */
     6198#line 922 "parser.yy"
     6199    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
     6200    break;
     6201
     6202  case 223:
     6203
     6204/* Line 1806 of yacc.c  */
     6205#line 924 "parser.yy"
     6206    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
     6207    break;
     6208
     6209  case 224:
     6210
     6211/* Line 1806 of yacc.c  */
    63946212#line 931 "parser.yy"
    6395     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    6396     break;
    6397 
    6398   case 217:
    6399 
    6400 /* Line 1806 of yacc.c  */
    6401 #line 933 "parser.yy"
    6402     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    6403     break;
    6404 
    6405   case 218:
    6406 
    6407 /* Line 1806 of yacc.c  */
    6408 #line 935 "parser.yy"
    6409     { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    6410     break;
    6411 
    6412   case 219:
    6413 
    6414 /* Line 1806 of yacc.c  */
    6415 #line 937 "parser.yy"
    6416     { (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) ); }
    6417     break;
    6418 
    6419   case 220:
    6420 
    6421 /* Line 1806 of yacc.c  */
    6422 #line 939 "parser.yy"
    6423     { (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) ); }
    6424     break;
    6425 
    6426   case 221:
    6427 
    6428 /* Line 1806 of yacc.c  */
    6429 #line 944 "parser.yy"
    6430     { (yyval.flag) = false; }
    6431     break;
    6432 
    6433   case 222:
    6434 
    6435 /* Line 1806 of yacc.c  */
    6436 #line 946 "parser.yy"
    6437     { (yyval.flag) = true; }
    6438     break;
    6439 
    6440   case 223:
    6441 
    6442 /* Line 1806 of yacc.c  */
    6443 #line 951 "parser.yy"
    6444     { (yyval.en) = 0; }
    6445     break;
    6446 
    6447   case 226:
    6448 
    6449 /* Line 1806 of yacc.c  */
    6450 #line 958 "parser.yy"
    6451     { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
     6213    { (yyval.decl) = 0; }
    64526214    break;
    64536215
     
    64556217
    64566218/* Line 1806 of yacc.c  */
    6457 #line 963 "parser.yy"
    6458     { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
     6219#line 938 "parser.yy"
     6220    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    64596221    break;
    64606222
     
    64626224
    64636225/* Line 1806 of yacc.c  */
     6226#line 943 "parser.yy"
     6227    { (yyval.decl) = 0; }
     6228    break;
     6229
     6230  case 231:
     6231
     6232/* Line 1806 of yacc.c  */
     6233#line 950 "parser.yy"
     6234    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     6235    break;
     6236
     6237  case 236:
     6238
     6239/* Line 1806 of yacc.c  */
     6240#line 964 "parser.yy"
     6241    {}
     6242    break;
     6243
     6244  case 237:
     6245
     6246/* Line 1806 of yacc.c  */
    64646247#line 965 "parser.yy"
    6465     { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
    6466     break;
    6467 
    6468   case 229:
    6469 
    6470 /* Line 1806 of yacc.c  */
    6471 #line 970 "parser.yy"
    6472     { (yyval.constant) = 0; }
    6473     break;
    6474 
    6475   case 230:
    6476 
    6477 /* Line 1806 of yacc.c  */
    6478 #line 972 "parser.yy"
    6479     { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
    6480     break;
    6481 
    6482   case 231:
    6483 
    6484 /* Line 1806 of yacc.c  */
    6485 #line 974 "parser.yy"
    6486     { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
    6487     break;
    6488 
    6489   case 232:
    6490 
    6491 /* Line 1806 of yacc.c  */
    6492 #line 979 "parser.yy"
    6493     { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    6494     break;
    6495 
    6496   case 233:
    6497 
    6498 /* Line 1806 of yacc.c  */
    6499 #line 981 "parser.yy"
    6500     { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    6501     break;
    6502 
    6503   case 234:
    6504 
    6505 /* Line 1806 of yacc.c  */
    6506 #line 988 "parser.yy"
    6507     { (yyval.decl) = 0; }
    6508     break;
    6509 
    6510   case 237:
    6511 
    6512 /* Line 1806 of yacc.c  */
    6513 #line 995 "parser.yy"
    6514     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6515     break;
    6516 
    6517   case 238:
    6518 
    6519 /* Line 1806 of yacc.c  */
    6520 #line 1000 "parser.yy"
    6521     { (yyval.decl) = 0; }
    6522     break;
    6523 
    6524   case 241:
    6525 
    6526 /* Line 1806 of yacc.c  */
    6527 #line 1007 "parser.yy"
    6528     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    6529     break;
    6530 
    6531   case 246:
    6532 
    6533 /* Line 1806 of yacc.c  */
    6534 #line 1021 "parser.yy"
    65356248    {}
    65366249    break;
    65376250
    6538   case 247:
    6539 
    6540 /* Line 1806 of yacc.c  */
    6541 #line 1022 "parser.yy"
    6542     {}
    6543     break;
    6544 
    6545   case 255:
    6546 
    6547 /* Line 1806 of yacc.c  */
    6548 #line 1051 "parser.yy"
     6251  case 245:
     6252
     6253/* Line 1806 of yacc.c  */
     6254#line 994 "parser.yy"
    65496255    {
    65506256                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6551                         (yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
     6257                        (yyval.decl) = (yyvsp[(1) - (2)].decl);
    65526258                }
    65536259    break;
    65546260
    6555   case 256:
    6556 
    6557 /* Line 1806 of yacc.c  */
    6558 #line 1058 "parser.yy"
     6261  case 246:
     6262
     6263/* Line 1806 of yacc.c  */
     6264#line 1001 "parser.yy"
    65596265    {
    65606266                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    6561                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
     6267                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) );
    65626268                }
    65636269    break;
    65646270
    6565   case 257:
    6566 
    6567 /* Line 1806 of yacc.c  */
    6568 #line 1063 "parser.yy"
     6271  case 247:
     6272
     6273/* Line 1806 of yacc.c  */
     6274#line 1006 "parser.yy"
    65696275    {
    65706276                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
    6571                         (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
     6277                        (yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) ) );
    65726278                }
    65736279    break;
    65746280
    6575   case 258:
    6576 
    6577 /* Line 1806 of yacc.c  */
    6578 #line 1073 "parser.yy"
     6281  case 248:
     6282
     6283/* Line 1806 of yacc.c  */
     6284#line 1016 "parser.yy"
    65796285    {
    65806286                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    65836289    break;
    65846290
    6585   case 259:
    6586 
    6587 /* Line 1806 of yacc.c  */
    6588 #line 1078 "parser.yy"
     6291  case 249:
     6292
     6293/* Line 1806 of yacc.c  */
     6294#line 1021 "parser.yy"
    65896295    {
    65906296                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    65936299    break;
    65946300
    6595   case 260:
    6596 
    6597 /* Line 1806 of yacc.c  */
    6598 #line 1083 "parser.yy"
     6301  case 250:
     6302
     6303/* Line 1806 of yacc.c  */
     6304#line 1026 "parser.yy"
    65996305    {
    66006306                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    66036309    break;
    66046310
    6605   case 261:
    6606 
    6607 /* Line 1806 of yacc.c  */
    6608 #line 1091 "parser.yy"
     6311  case 251:
     6312
     6313/* Line 1806 of yacc.c  */
     6314#line 1034 "parser.yy"
    66096315    {
    66106316                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66136319    break;
    66146320
    6615   case 262:
    6616 
    6617 /* Line 1806 of yacc.c  */
    6618 #line 1096 "parser.yy"
     6321  case 252:
     6322
     6323/* Line 1806 of yacc.c  */
     6324#line 1039 "parser.yy"
    66196325    {
    66206326                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66236329    break;
    66246330
    6625   case 263:
    6626 
    6627 /* Line 1806 of yacc.c  */
    6628 #line 1101 "parser.yy"
     6331  case 253:
     6332
     6333/* Line 1806 of yacc.c  */
     6334#line 1044 "parser.yy"
    66296335    {
    66306336                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66336339    break;
    66346340
    6635   case 264:
    6636 
    6637 /* Line 1806 of yacc.c  */
    6638 #line 1106 "parser.yy"
     6341  case 254:
     6342
     6343/* Line 1806 of yacc.c  */
     6344#line 1049 "parser.yy"
    66396345    {
    66406346                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66436349    break;
    66446350
    6645   case 265:
    6646 
    6647 /* Line 1806 of yacc.c  */
    6648 #line 1111 "parser.yy"
     6351  case 255:
     6352
     6353/* Line 1806 of yacc.c  */
     6354#line 1054 "parser.yy"
    66496355    {
    66506356                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    66536359    break;
    66546360
    6655   case 266:
    6656 
    6657 /* Line 1806 of yacc.c  */
    6658 #line 1119 "parser.yy"
     6361  case 256:
     6362
     6363/* Line 1806 of yacc.c  */
     6364#line 1062 "parser.yy"
    66596365    {
    66606366                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    66626368    break;
    66636369
    6664   case 267:
    6665 
    6666 /* Line 1806 of yacc.c  */
    6667 #line 1142 "parser.yy"
     6370  case 257:
     6371
     6372/* Line 1806 of yacc.c  */
     6373#line 1085 "parser.yy"
    66686374    {
    66696375                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    66716377    break;
    66726378
    6673   case 268:
    6674 
    6675 /* Line 1806 of yacc.c  */
    6676 #line 1146 "parser.yy"
     6379  case 258:
     6380
     6381/* Line 1806 of yacc.c  */
     6382#line 1089 "parser.yy"
    66776383    {
    66786384                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    66806386    break;
    66816387
    6682   case 269:
    6683 
    6684 /* Line 1806 of yacc.c  */
    6685 #line 1153 "parser.yy"
     6388  case 259:
     6389
     6390/* Line 1806 of yacc.c  */
     6391#line 1096 "parser.yy"
    66866392    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    66876393    break;
    66886394
    6689   case 270:
    6690 
    6691 /* Line 1806 of yacc.c  */
    6692 #line 1157 "parser.yy"
     6395  case 260:
     6396
     6397/* Line 1806 of yacc.c  */
     6398#line 1100 "parser.yy"
    66936399    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    66946400    break;
    66956401
    6696   case 271:
    6697 
    6698 /* Line 1806 of yacc.c  */
    6699 #line 1162 "parser.yy"
     6402  case 261:
     6403
     6404/* Line 1806 of yacc.c  */
     6405#line 1105 "parser.yy"
    67006406    {
    67016407                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67046410    break;
    67056411
    6706   case 272:
    6707 
    6708 /* Line 1806 of yacc.c  */
    6709 #line 1167 "parser.yy"
     6412  case 262:
     6413
     6414/* Line 1806 of yacc.c  */
     6415#line 1110 "parser.yy"
    67106416    {
    67116417                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67146420    break;
    67156421
    6716   case 273:
    6717 
    6718 /* Line 1806 of yacc.c  */
    6719 #line 1172 "parser.yy"
     6422  case 263:
     6423
     6424/* Line 1806 of yacc.c  */
     6425#line 1115 "parser.yy"
    67206426    {
    67216427                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    67246430    break;
    67256431
    6726   case 274:
    6727 
    6728 /* Line 1806 of yacc.c  */
    6729 #line 1183 "parser.yy"
     6432  case 264:
     6433
     6434/* Line 1806 of yacc.c  */
     6435#line 1126 "parser.yy"
    67306436    {
    67316437                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67346440    break;
    67356441
    6736   case 275:
    6737 
    6738 /* Line 1806 of yacc.c  */
    6739 #line 1188 "parser.yy"
     6442  case 265:
     6443
     6444/* Line 1806 of yacc.c  */
     6445#line 1131 "parser.yy"
    67406446    {
    67416447                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67446450    break;
    67456451
    6746   case 276:
    6747 
    6748 /* Line 1806 of yacc.c  */
    6749 #line 1193 "parser.yy"
     6452  case 266:
     6453
     6454/* Line 1806 of yacc.c  */
     6455#line 1136 "parser.yy"
    67506456    {
    67516457                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67546460    break;
    67556461
    6756   case 277:
    6757 
    6758 /* Line 1806 of yacc.c  */
    6759 #line 1198 "parser.yy"
     6462  case 267:
     6463
     6464/* Line 1806 of yacc.c  */
     6465#line 1141 "parser.yy"
    67606466    {
    67616467                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67646470    break;
    67656471
    6766   case 278:
    6767 
    6768 /* Line 1806 of yacc.c  */
    6769 #line 1203 "parser.yy"
     6472  case 268:
     6473
     6474/* Line 1806 of yacc.c  */
     6475#line 1146 "parser.yy"
    67706476    {
    67716477                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    67746480    break;
    67756481
    6776   case 279:
    6777 
    6778 /* Line 1806 of yacc.c  */
    6779 #line 1212 "parser.yy"
     6482  case 269:
     6483
     6484/* Line 1806 of yacc.c  */
     6485#line 1155 "parser.yy"
    67806486    {
    67816487                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    67846490    break;
    67856491
    6786   case 280:
    6787 
    6788 /* Line 1806 of yacc.c  */
    6789 #line 1217 "parser.yy"
     6492  case 270:
     6493
     6494/* Line 1806 of yacc.c  */
     6495#line 1160 "parser.yy"
    67906496    {
    67916497                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    67946500    break;
    67956501
    6796   case 285:
    6797 
    6798 /* Line 1806 of yacc.c  */
    6799 #line 1234 "parser.yy"
     6502  case 275:
     6503
     6504/* Line 1806 of yacc.c  */
     6505#line 1177 "parser.yy"
    68006506    {
    68016507                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    68046510    break;
    68056511
    6806   case 286:
    6807 
    6808 /* Line 1806 of yacc.c  */
    6809 #line 1239 "parser.yy"
     6512  case 276:
     6513
     6514/* Line 1806 of yacc.c  */
     6515#line 1182 "parser.yy"
    68106516    {
    68116517                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    68146520    break;
    68156521
     6522  case 285:
     6523
     6524/* Line 1806 of yacc.c  */
     6525#line 1204 "parser.yy"
     6526    { (yyval.decl) = 0; }
     6527    break;
     6528
     6529  case 288:
     6530
     6531/* Line 1806 of yacc.c  */
     6532#line 1216 "parser.yy"
     6533    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6534    break;
     6535
     6536  case 291:
     6537
     6538/* Line 1806 of yacc.c  */
     6539#line 1227 "parser.yy"
     6540    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     6541    break;
     6542
     6543  case 292:
     6544
     6545/* Line 1806 of yacc.c  */
     6546#line 1229 "parser.yy"
     6547    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     6548    break;
     6549
     6550  case 293:
     6551
     6552/* Line 1806 of yacc.c  */
     6553#line 1231 "parser.yy"
     6554    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     6555    break;
     6556
     6557  case 294:
     6558
     6559/* Line 1806 of yacc.c  */
     6560#line 1233 "parser.yy"
     6561    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     6562    break;
     6563
    68166564  case 295:
    68176565
    68186566/* Line 1806 of yacc.c  */
    6819 #line 1261 "parser.yy"
    6820     { (yyval.decl) = 0; }
    6821     break;
    6822 
    6823   case 298:
    6824 
    6825 /* Line 1806 of yacc.c  */
    6826 #line 1273 "parser.yy"
    6827     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    6828     break;
    6829 
    6830   case 301:
    6831 
    6832 /* Line 1806 of yacc.c  */
    6833 #line 1284 "parser.yy"
    6834     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    6835     break;
    6836 
    6837   case 302:
    6838 
    6839 /* Line 1806 of yacc.c  */
    6840 #line 1286 "parser.yy"
    6841     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    6842     break;
    6843 
    6844   case 303:
    6845 
    6846 /* Line 1806 of yacc.c  */
    6847 #line 1288 "parser.yy"
    6848     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    6849     break;
    6850 
    6851   case 304:
    6852 
    6853 /* Line 1806 of yacc.c  */
    6854 #line 1290 "parser.yy"
    6855     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    6856     break;
    6857 
    6858   case 305:
    6859 
    6860 /* Line 1806 of yacc.c  */
    6861 #line 1292 "parser.yy"
     6567#line 1235 "parser.yy"
    68626568    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    68636569    break;
    68646570
    6865   case 306:
    6866 
    6867 /* Line 1806 of yacc.c  */
    6868 #line 1294 "parser.yy"
     6571  case 296:
     6572
     6573/* Line 1806 of yacc.c  */
     6574#line 1237 "parser.yy"
    68696575    {
    68706576                        typedefTable.enterScope();
     
    68726578    break;
    68736579
    6874   case 307:
    6875 
    6876 /* Line 1806 of yacc.c  */
    6877 #line 1298 "parser.yy"
     6580  case 297:
     6581
     6582/* Line 1806 of yacc.c  */
     6583#line 1241 "parser.yy"
    68786584    {
    68796585                        typedefTable.leaveScope();
     
    68826588    break;
    68836589
     6590  case 299:
     6591
     6592/* Line 1806 of yacc.c  */
     6593#line 1250 "parser.yy"
     6594    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6595    break;
     6596
     6597  case 300:
     6598
     6599/* Line 1806 of yacc.c  */
     6600#line 1252 "parser.yy"
     6601    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6602    break;
     6603
     6604  case 302:
     6605
     6606/* Line 1806 of yacc.c  */
     6607#line 1263 "parser.yy"
     6608    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6609    break;
     6610
     6611  case 304:
     6612
     6613/* Line 1806 of yacc.c  */
     6614#line 1272 "parser.yy"
     6615    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     6616    break;
     6617
     6618  case 305:
     6619
     6620/* Line 1806 of yacc.c  */
     6621#line 1274 "parser.yy"
     6622    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     6623    break;
     6624
     6625  case 306:
     6626
     6627/* Line 1806 of yacc.c  */
     6628#line 1276 "parser.yy"
     6629    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     6630    break;
     6631
     6632  case 307:
     6633
     6634/* Line 1806 of yacc.c  */
     6635#line 1278 "parser.yy"
     6636    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     6637    break;
     6638
     6639  case 308:
     6640
     6641/* Line 1806 of yacc.c  */
     6642#line 1280 "parser.yy"
     6643    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     6644    break;
     6645
    68846646  case 309:
    68856647
    68866648/* Line 1806 of yacc.c  */
     6649#line 1282 "parser.yy"
     6650    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     6651    break;
     6652
     6653  case 310:
     6654
     6655/* Line 1806 of yacc.c  */
     6656#line 1284 "parser.yy"
     6657    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
     6658    break;
     6659
     6660  case 311:
     6661
     6662/* Line 1806 of yacc.c  */
     6663#line 1286 "parser.yy"
     6664    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
     6665    break;
     6666
     6667  case 312:
     6668
     6669/* Line 1806 of yacc.c  */
     6670#line 1291 "parser.yy"
     6671    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     6672    break;
     6673
     6674  case 313:
     6675
     6676/* Line 1806 of yacc.c  */
     6677#line 1293 "parser.yy"
     6678    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     6679    break;
     6680
     6681  case 314:
     6682
     6683/* Line 1806 of yacc.c  */
     6684#line 1295 "parser.yy"
     6685    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     6686    break;
     6687
     6688  case 315:
     6689
     6690/* Line 1806 of yacc.c  */
     6691#line 1297 "parser.yy"
     6692    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     6693    break;
     6694
     6695  case 316:
     6696
     6697/* Line 1806 of yacc.c  */
     6698#line 1299 "parser.yy"
     6699    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     6700    break;
     6701
     6702  case 317:
     6703
     6704/* Line 1806 of yacc.c  */
     6705#line 1301 "parser.yy"
     6706    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     6707    break;
     6708
     6709  case 318:
     6710
     6711/* Line 1806 of yacc.c  */
     6712#line 1303 "parser.yy"
     6713    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     6714    break;
     6715
     6716  case 319:
     6717
     6718/* Line 1806 of yacc.c  */
     6719#line 1305 "parser.yy"
     6720    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     6721    break;
     6722
     6723  case 320:
     6724
     6725/* Line 1806 of yacc.c  */
    68876726#line 1307 "parser.yy"
     6727    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     6728    break;
     6729
     6730  case 321:
     6731
     6732/* Line 1806 of yacc.c  */
     6733#line 1309 "parser.yy"
     6734    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     6735    break;
     6736
     6737  case 322:
     6738
     6739/* Line 1806 of yacc.c  */
     6740#line 1311 "parser.yy"
     6741    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     6742    break;
     6743
     6744  case 323:
     6745
     6746/* Line 1806 of yacc.c  */
     6747#line 1313 "parser.yy"
     6748    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     6749    break;
     6750
     6751  case 325:
     6752
     6753/* Line 1806 of yacc.c  */
     6754#line 1320 "parser.yy"
     6755    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6756    break;
     6757
     6758  case 326:
     6759
     6760/* Line 1806 of yacc.c  */
     6761#line 1322 "parser.yy"
    68886762    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68896763    break;
    68906764
    6891   case 310:
    6892 
    6893 /* Line 1806 of yacc.c  */
    6894 #line 1309 "parser.yy"
     6765  case 327:
     6766
     6767/* Line 1806 of yacc.c  */
     6768#line 1324 "parser.yy"
    68956769    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68966770    break;
    68976771
    6898   case 312:
    6899 
    6900 /* Line 1806 of yacc.c  */
    6901 #line 1320 "parser.yy"
     6772  case 328:
     6773
     6774/* Line 1806 of yacc.c  */
     6775#line 1326 "parser.yy"
     6776    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     6777    break;
     6778
     6779  case 330:
     6780
     6781/* Line 1806 of yacc.c  */
     6782#line 1332 "parser.yy"
     6783    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6784    break;
     6785
     6786  case 332:
     6787
     6788/* Line 1806 of yacc.c  */
     6789#line 1339 "parser.yy"
     6790    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6791    break;
     6792
     6793  case 333:
     6794
     6795/* Line 1806 of yacc.c  */
     6796#line 1341 "parser.yy"
    69026797    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69036798    break;
    69046799
    6905   case 314:
    6906 
    6907 /* Line 1806 of yacc.c  */
    6908 #line 1329 "parser.yy"
    6909     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    6910     break;
    6911 
    6912   case 315:
    6913 
    6914 /* Line 1806 of yacc.c  */
    6915 #line 1331 "parser.yy"
    6916     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    6917     break;
    6918 
    6919   case 316:
    6920 
    6921 /* Line 1806 of yacc.c  */
    6922 #line 1333 "parser.yy"
    6923     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    6924     break;
    6925 
    6926   case 317:
    6927 
    6928 /* Line 1806 of yacc.c  */
    6929 #line 1335 "parser.yy"
    6930     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    6931     break;
    6932 
    6933   case 318:
    6934 
    6935 /* Line 1806 of yacc.c  */
    6936 #line 1337 "parser.yy"
    6937     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    6938     break;
    6939 
    6940   case 319:
    6941 
    6942 /* Line 1806 of yacc.c  */
    6943 #line 1339 "parser.yy"
    6944     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    6945     break;
    6946 
    6947   case 320:
    6948 
    6949 /* Line 1806 of yacc.c  */
    6950 #line 1341 "parser.yy"
    6951     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    6952     break;
    6953 
    6954   case 321:
     6800  case 334:
    69556801
    69566802/* Line 1806 of yacc.c  */
    69576803#line 1343 "parser.yy"
    6958     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    6959     break;
    6960 
    6961   case 322:
     6804    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     6805    break;
     6806
     6807  case 335:
    69626808
    69636809/* Line 1806 of yacc.c  */
    69646810#line 1348 "parser.yy"
    6965     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    6966     break;
    6967 
    6968   case 323:
     6811    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     6812    break;
     6813
     6814  case 336:
    69696815
    69706816/* Line 1806 of yacc.c  */
    69716817#line 1350 "parser.yy"
    6972     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    6973     break;
    6974 
    6975   case 324:
     6818    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     6819    break;
     6820
     6821  case 337:
    69766822
    69776823/* Line 1806 of yacc.c  */
    69786824#line 1352 "parser.yy"
    6979     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    6980     break;
    6981 
    6982   case 325:
     6825    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     6826    break;
     6827
     6828  case 338:
    69836829
    69846830/* Line 1806 of yacc.c  */
    69856831#line 1354 "parser.yy"
    6986     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6987     break;
    6988 
    6989   case 326:
    6990 
    6991 /* Line 1806 of yacc.c  */
    6992 #line 1356 "parser.yy"
    6993     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    6994     break;
    6995 
    6996   case 327:
    6997 
    6998 /* Line 1806 of yacc.c  */
    6999 #line 1358 "parser.yy"
    7000     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    7001     break;
    7002 
    7003   case 328:
     6832    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     6833    break;
     6834
     6835  case 340:
    70046836
    70056837/* Line 1806 of yacc.c  */
    70066838#line 1360 "parser.yy"
    7007     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    7008     break;
    7009 
    7010   case 329:
     6839    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6840    break;
     6841
     6842  case 341:
    70116843
    70126844/* Line 1806 of yacc.c  */
    70136845#line 1362 "parser.yy"
    7014     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    7015     break;
    7016 
    7017   case 330:
     6846    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6847    break;
     6848
     6849  case 342:
    70186850
    70196851/* Line 1806 of yacc.c  */
    70206852#line 1364 "parser.yy"
    7021     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    7022     break;
    7023 
    7024   case 331:
    7025 
    7026 /* Line 1806 of yacc.c  */
    7027 #line 1366 "parser.yy"
    7028     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    7029     break;
    7030 
    7031   case 332:
    7032 
    7033 /* Line 1806 of yacc.c  */
    7034 #line 1368 "parser.yy"
    7035     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    7036     break;
    7037 
    7038   case 333:
     6853    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     6854    break;
     6855
     6856  case 344:
    70396857
    70406858/* Line 1806 of yacc.c  */
    70416859#line 1370 "parser.yy"
    7042     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    7043     break;
    7044 
    7045   case 334:
     6860    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6861    break;
     6862
     6863  case 345:
    70466864
    70476865/* Line 1806 of yacc.c  */
    70486866#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"
     6867    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6868    break;
     6869
     6870  case 347:
     6871
     6872/* Line 1806 of yacc.c  */
     6873#line 1378 "parser.yy"
    70566874    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70576875    break;
    70586876
    7059   case 337:
    7060 
    7061 /* Line 1806 of yacc.c  */
    7062 #line 1381 "parser.yy"
     6877  case 348:
     6878
     6879/* Line 1806 of yacc.c  */
     6880#line 1380 "parser.yy"
    70636881    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70646882    break;
    70656883
    7066   case 338:
    7067 
    7068 /* Line 1806 of yacc.c  */
    7069 #line 1383 "parser.yy"
     6884  case 349:
     6885
     6886/* Line 1806 of yacc.c  */
     6887#line 1382 "parser.yy"
    70706888    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    70716889    break;
    70726890
    7073   case 339:
    7074 
    7075 /* Line 1806 of yacc.c  */
    7076 #line 1385 "parser.yy"
    7077     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    7078     break;
    7079 
    7080   case 341:
     6891  case 350:
     6892
     6893/* Line 1806 of yacc.c  */
     6894#line 1387 "parser.yy"
     6895    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     6896    break;
     6897
     6898  case 351:
     6899
     6900/* Line 1806 of yacc.c  */
     6901#line 1389 "parser.yy"
     6902    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     6903    break;
     6904
     6905  case 352:
    70816906
    70826907/* Line 1806 of yacc.c  */
    70836908#line 1391 "parser.yy"
    7084     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7085     break;
    7086 
    7087   case 343:
    7088 
    7089 /* Line 1806 of yacc.c  */
    7090 #line 1398 "parser.yy"
     6909    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     6910    break;
     6911
     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"
     6944    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     6945    break;
     6946
     6947  case 360:
     6948
     6949/* Line 1806 of yacc.c  */
     6950#line 1414 "parser.yy"
     6951    { (yyval.aggKey) = DeclarationNode::Struct; }
     6952    break;
     6953
     6954  case 361:
     6955
     6956/* Line 1806 of yacc.c  */
     6957#line 1416 "parser.yy"
     6958    { (yyval.aggKey) = DeclarationNode::Union; }
     6959    break;
     6960
     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"
     6993    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     6994    break;
     6995
     6996  case 370:
     6997
     6998/* Line 1806 of yacc.c  */
     6999#line 1440 "parser.yy"
     7000    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     7001    break;
     7002
     7003  case 371:
     7004
     7005/* Line 1806 of yacc.c  */
     7006#line 1442 "parser.yy"
     7007    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     7008    break;
     7009
     7010  case 372:
     7011
     7012/* Line 1806 of yacc.c  */
     7013#line 1447 "parser.yy"
     7014    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7015    break;
     7016
     7017  case 373:
     7018
     7019/* Line 1806 of yacc.c  */
     7020#line 1449 "parser.yy"
     7021    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     7022    break;
     7023
     7024  case 374:
     7025
     7026/* Line 1806 of yacc.c  */
     7027#line 1454 "parser.yy"
     7028    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     7029    break;
     7030
     7031  case 375:
     7032
     7033/* Line 1806 of yacc.c  */
     7034#line 1456 "parser.yy"
     7035    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     7036    break;
     7037
     7038  case 376:
     7039
     7040/* Line 1806 of yacc.c  */
     7041#line 1459 "parser.yy"
     7042    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7043    break;
     7044
     7045  case 377:
     7046
     7047/* Line 1806 of yacc.c  */
     7048#line 1462 "parser.yy"
     7049    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     7050    break;
     7051
     7052  case 379:
     7053
     7054/* Line 1806 of yacc.c  */
     7055#line 1468 "parser.yy"
     7056    { (yyval.en) = 0; }
     7057    break;
     7058
     7059  case 380:
     7060
     7061/* Line 1806 of yacc.c  */
     7062#line 1470 "parser.yy"
     7063    { (yyval.en) = (yyvsp[(1) - (1)].en); }
     7064    break;
     7065
     7066  case 381:
     7067
     7068/* Line 1806 of yacc.c  */
     7069#line 1475 "parser.yy"
     7070    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     7071    break;
     7072
     7073  case 383:
     7074
     7075/* Line 1806 of yacc.c  */
     7076#line 1484 "parser.yy"
     7077    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     7078    break;
     7079
     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"
     7098    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7099    break;
     7100
     7101  case 387:
     7102
     7103/* Line 1806 of yacc.c  */
     7104#line 1495 "parser.yy"
     7105    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     7106    break;
     7107
     7108  case 388:
     7109
     7110/* Line 1806 of yacc.c  */
     7111#line 1500 "parser.yy"
     7112    { (yyval.en) = 0; }
     7113    break;
     7114
     7115  case 389:
     7116
     7117/* Line 1806 of yacc.c  */
     7118#line 1502 "parser.yy"
     7119    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     7120    break;
     7121
     7122  case 390:
     7123
     7124/* Line 1806 of yacc.c  */
     7125#line 1509 "parser.yy"
     7126    { (yyval.decl) = 0; }
     7127    break;
     7128
     7129  case 394:
     7130
     7131/* Line 1806 of yacc.c  */
     7132#line 1517 "parser.yy"
     7133    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7134    break;
     7135
     7136  case 395:
     7137
     7138/* Line 1806 of yacc.c  */
     7139#line 1519 "parser.yy"
     7140    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7141    break;
     7142
     7143  case 396:
     7144
     7145/* Line 1806 of yacc.c  */
     7146#line 1521 "parser.yy"
     7147    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7148    break;
     7149
     7150  case 398:
     7151
     7152/* Line 1806 of yacc.c  */
     7153#line 1529 "parser.yy"
     7154    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7155    break;
     7156
     7157  case 399:
     7158
     7159/* Line 1806 of yacc.c  */
     7160#line 1531 "parser.yy"
     7161    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7162    break;
     7163
     7164  case 400:
     7165
     7166/* Line 1806 of yacc.c  */
     7167#line 1533 "parser.yy"
     7168    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     7169    break;
     7170
     7171  case 402:
     7172
     7173/* Line 1806 of yacc.c  */
     7174#line 1539 "parser.yy"
     7175    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7176    break;
     7177
     7178  case 403:
     7179
     7180/* Line 1806 of yacc.c  */
     7181#line 1544 "parser.yy"
     7182    { (yyval.decl) = 0; }
     7183    break;
     7184
     7185  case 406:
     7186
     7187/* Line 1806 of yacc.c  */
     7188#line 1551 "parser.yy"
     7189    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7190    break;
     7191
     7192  case 409:
     7193
     7194/* Line 1806 of yacc.c  */
     7195#line 1558 "parser.yy"
     7196    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7197    break;
     7198
     7199  case 410:
     7200
     7201/* Line 1806 of yacc.c  */
     7202#line 1560 "parser.yy"
     7203    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7204    break;
     7205
     7206  case 412:
     7207
     7208/* Line 1806 of yacc.c  */
     7209#line 1569 "parser.yy"
     7210    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     7211    break;
     7212
     7213  case 413:
     7214
     7215/* Line 1806 of yacc.c  */
     7216#line 1572 "parser.yy"
     7217    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     7218    break;
     7219
     7220  case 414:
     7221
     7222/* Line 1806 of yacc.c  */
     7223#line 1574 "parser.yy"
     7224    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     7225    break;
     7226
     7227  case 419:
     7228
     7229/* Line 1806 of yacc.c  */
     7230#line 1584 "parser.yy"
    70917231    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70927232    break;
    70937233
    7094   case 344:
    7095 
    7096 /* Line 1806 of yacc.c  */
    7097 #line 1400 "parser.yy"
    7098     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7099     break;
    7100 
    7101   case 345:
    7102 
    7103 /* Line 1806 of yacc.c  */
    7104 #line 1402 "parser.yy"
    7105     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    7106     break;
    7107 
    7108   case 346:
    7109 
    7110 /* Line 1806 of yacc.c  */
    7111 #line 1407 "parser.yy"
    7112     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    7113     break;
    7114 
    7115   case 347:
    7116 
    7117 /* Line 1806 of yacc.c  */
    7118 #line 1409 "parser.yy"
    7119     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    7120     break;
    7121 
    7122   case 348:
    7123 
    7124 /* Line 1806 of yacc.c  */
    7125 #line 1411 "parser.yy"
    7126     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    7127     break;
    7128 
    7129   case 349:
    7130 
    7131 /* Line 1806 of yacc.c  */
    7132 #line 1413 "parser.yy"
    7133     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    7134     break;
    7135 
    7136   case 351:
    7137 
    7138 /* Line 1806 of yacc.c  */
    7139 #line 1419 "parser.yy"
    7140     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7141     break;
    7142 
    7143   case 352:
    7144 
    7145 /* Line 1806 of yacc.c  */
    7146 #line 1421 "parser.yy"
    7147     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7148     break;
    7149 
    7150   case 353:
    7151 
    7152 /* Line 1806 of yacc.c  */
    7153 #line 1423 "parser.yy"
    7154     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7155     break;
    7156 
    7157   case 355:
    7158 
    7159 /* Line 1806 of yacc.c  */
    7160 #line 1429 "parser.yy"
    7161     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7162     break;
    7163 
    7164   case 356:
    7165 
    7166 /* Line 1806 of yacc.c  */
    7167 #line 1431 "parser.yy"
    7168     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7169     break;
    7170 
    7171   case 358:
    7172 
    7173 /* Line 1806 of yacc.c  */
    7174 #line 1437 "parser.yy"
    7175     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7176     break;
    7177 
    7178   case 359:
    7179 
    7180 /* Line 1806 of yacc.c  */
    7181 #line 1439 "parser.yy"
    7182     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7183     break;
    7184 
    7185   case 360:
    7186 
    7187 /* Line 1806 of yacc.c  */
    7188 #line 1441 "parser.yy"
    7189     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7190     break;
    7191 
    7192   case 361:
    7193 
    7194 /* Line 1806 of yacc.c  */
    7195 #line 1446 "parser.yy"
    7196     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    7197     break;
    7198 
    7199   case 362:
    7200 
    7201 /* Line 1806 of yacc.c  */
    7202 #line 1448 "parser.yy"
    7203     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7204     break;
    7205 
    7206   case 363:
    7207 
    7208 /* Line 1806 of yacc.c  */
    7209 #line 1450 "parser.yy"
    7210     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7211     break;
    7212 
    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"
    7255     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7256     break;
    7257 
    7258   case 372:
    7259 
    7260 /* Line 1806 of yacc.c  */
    7261 #line 1478 "parser.yy"
    7262     { (yyval.aggKey) = DeclarationNode::Struct; }
    7263     break;
    7264 
    7265   case 373:
    7266 
    7267 /* Line 1806 of yacc.c  */
    7268 #line 1480 "parser.yy"
    7269     { (yyval.aggKey) = DeclarationNode::Union; }
    7270     break;
    7271 
    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"
    7308     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    7309     break;
    7310 
    7311   case 382:
    7312 
    7313 /* Line 1806 of yacc.c  */
    7314 #line 1508 "parser.yy"
    7315     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    7316     break;
    7317 
    7318   case 383:
    7319 
    7320 /* Line 1806 of yacc.c  */
    7321 #line 1510 "parser.yy"
    7322     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    7323     break;
    7324 
    7325   case 384:
    7326 
    7327 /* Line 1806 of yacc.c  */
    7328 #line 1515 "parser.yy"
    7329     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    7330     break;
    7331 
    7332   case 385:
    7333 
    7334 /* Line 1806 of yacc.c  */
    7335 #line 1517 "parser.yy"
    7336     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    7337     break;
    7338 
    7339   case 386:
    7340 
    7341 /* Line 1806 of yacc.c  */
    7342 #line 1522 "parser.yy"
    7343     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    7344     break;
    7345 
    7346   case 387:
    7347 
    7348 /* Line 1806 of yacc.c  */
    7349 #line 1524 "parser.yy"
    7350     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    7351     break;
    7352 
    7353   case 388:
    7354 
    7355 /* Line 1806 of yacc.c  */
    7356 #line 1527 "parser.yy"
    7357     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7358     break;
    7359 
    7360   case 389:
    7361 
    7362 /* Line 1806 of yacc.c  */
    7363 #line 1530 "parser.yy"
    7364     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    7365     break;
    7366 
    7367   case 391:
    7368 
    7369 /* Line 1806 of yacc.c  */
    7370 #line 1536 "parser.yy"
    7371     { (yyval.en) = 0; }
    7372     break;
    7373 
    7374   case 392:
    7375 
    7376 /* Line 1806 of yacc.c  */
    7377 #line 1538 "parser.yy"
    7378     { (yyval.en) = (yyvsp[(1) - (1)].en); }
    7379     break;
    7380 
    7381   case 393:
    7382 
    7383 /* Line 1806 of yacc.c  */
    7384 #line 1543 "parser.yy"
    7385     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7386     break;
    7387 
    7388   case 395:
    7389 
    7390 /* Line 1806 of yacc.c  */
    7391 #line 1552 "parser.yy"
    7392     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    7393     break;
    7394 
    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"
    7423     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    7424     break;
    7425 
    7426   case 400:
    7427 
    7428 /* Line 1806 of yacc.c  */
    7429 #line 1568 "parser.yy"
    7430     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    7431     break;
    7432 
    7433   case 401:
    7434 
    7435 /* Line 1806 of yacc.c  */
    7436 #line 1573 "parser.yy"
    7437     { (yyval.en) = 0; }
    7438     break;
    7439 
    7440   case 402:
    7441 
    7442 /* Line 1806 of yacc.c  */
    7443 #line 1575 "parser.yy"
    7444     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7445     break;
    7446 
    7447   case 403:
    7448 
    7449 /* Line 1806 of yacc.c  */
    7450 #line 1582 "parser.yy"
    7451     { (yyval.decl) = 0; }
    7452     break;
    7453 
    7454   case 407:
     7234  case 421:
    74557235
    74567236/* Line 1806 of yacc.c  */
    74577237#line 1590 "parser.yy"
    7458     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7459     break;
    7460 
    7461   case 408:
    7462 
    7463 /* Line 1806 of yacc.c  */
    7464 #line 1592 "parser.yy"
    7465     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7466     break;
    7467 
    7468   case 409:
    7469 
    7470 /* Line 1806 of yacc.c  */
    7471 #line 1594 "parser.yy"
    7472     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7473     break;
    7474 
    7475   case 411:
    7476 
    7477 /* Line 1806 of yacc.c  */
    7478 #line 1602 "parser.yy"
    7479     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7480     break;
    7481 
    7482   case 412:
    7483 
    7484 /* Line 1806 of yacc.c  */
    7485 #line 1604 "parser.yy"
    7486     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7487     break;
    7488 
    7489   case 413:
    7490 
    7491 /* Line 1806 of yacc.c  */
    7492 #line 1606 "parser.yy"
    7493     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7494     break;
    7495 
    7496   case 415:
    7497 
    7498 /* Line 1806 of yacc.c  */
    7499 #line 1612 "parser.yy"
    7500     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7501     break;
    7502 
    7503   case 416:
    7504 
    7505 /* Line 1806 of yacc.c  */
    7506 #line 1617 "parser.yy"
    7507     { (yyval.decl) = 0; }
    7508     break;
    7509 
    7510   case 419:
    7511 
    7512 /* Line 1806 of yacc.c  */
    7513 #line 1624 "parser.yy"
    7514     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7515     break;
    7516 
    7517   case 422:
    7518 
    7519 /* Line 1806 of yacc.c  */
    7520 #line 1631 "parser.yy"
    7521     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7522     break;
    7523 
    7524   case 423:
    7525 
    7526 /* Line 1806 of yacc.c  */
    7527 #line 1633 "parser.yy"
    7528     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7529     break;
    7530 
    7531   case 425:
    7532 
    7533 /* Line 1806 of yacc.c  */
    7534 #line 1642 "parser.yy"
    7535     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7536     break;
    7537 
    7538   case 426:
    7539 
    7540 /* Line 1806 of yacc.c  */
    7541 #line 1645 "parser.yy"
    7542     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    7543     break;
    7544 
    7545   case 427:
    7546 
    7547 /* Line 1806 of yacc.c  */
    7548 #line 1647 "parser.yy"
    7549     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    7550     break;
    7551 
    7552   case 432:
    7553 
    7554 /* Line 1806 of yacc.c  */
    7555 #line 1657 "parser.yy"
    7556     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7557     break;
    7558 
    7559   case 434:
    7560 
    7561 /* Line 1806 of yacc.c  */
    7562 #line 1663 "parser.yy"
    75637238    {
    75647239                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    75677242    break;
    75687243
    7569   case 435:
    7570 
    7571 /* Line 1806 of yacc.c  */
    7572 #line 1668 "parser.yy"
     7244  case 422:
     7245
     7246/* Line 1806 of yacc.c  */
     7247#line 1595 "parser.yy"
    75737248    {
    75747249                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    75777252    break;
    75787253
    7579   case 437:
    7580 
    7581 /* Line 1806 of yacc.c  */
    7582 #line 1677 "parser.yy"
     7254  case 424:
     7255
     7256/* Line 1806 of yacc.c  */
     7257#line 1604 "parser.yy"
    75837258    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    75847259    break;
    75857260
     7261  case 425:
     7262
     7263/* Line 1806 of yacc.c  */
     7264#line 1613 "parser.yy"
     7265    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     7266    break;
     7267
     7268  case 426:
     7269
     7270/* Line 1806 of yacc.c  */
     7271#line 1615 "parser.yy"
     7272    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     7273    break;
     7274
    75867275  case 438:
    75877276
    75887277/* Line 1806 of yacc.c  */
    7589 #line 1686 "parser.yy"
    7590     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    7591     break;
    7592 
    7593   case 439:
    7594 
    7595 /* Line 1806 of yacc.c  */
    7596 #line 1688 "parser.yy"
    7597     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    7598     break;
    7599 
    7600   case 451:
    7601 
    7602 /* Line 1806 of yacc.c  */
    7603 #line 1713 "parser.yy"
     7278#line 1640 "parser.yy"
    76047279    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    76057280    break;
    76067281
     7282  case 442:
     7283
     7284/* Line 1806 of yacc.c  */
     7285#line 1648 "parser.yy"
     7286    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7287    break;
     7288
     7289  case 443:
     7290
     7291/* Line 1806 of yacc.c  */
     7292#line 1653 "parser.yy"
     7293    { (yyval.in) = 0; }
     7294    break;
     7295
     7296  case 444:
     7297
     7298/* Line 1806 of yacc.c  */
     7299#line 1655 "parser.yy"
     7300    { (yyval.in) = (yyvsp[(2) - (2)].in); }
     7301    break;
     7302
     7303  case 445:
     7304
     7305/* Line 1806 of yacc.c  */
     7306#line 1659 "parser.yy"
     7307    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7308    break;
     7309
     7310  case 446:
     7311
     7312/* Line 1806 of yacc.c  */
     7313#line 1660 "parser.yy"
     7314    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
     7315    break;
     7316
     7317  case 448:
     7318
     7319/* Line 1806 of yacc.c  */
     7320#line 1665 "parser.yy"
     7321    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7322    break;
     7323
     7324  case 449:
     7325
     7326/* Line 1806 of yacc.c  */
     7327#line 1666 "parser.yy"
     7328    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
     7329    break;
     7330
     7331  case 450:
     7332
     7333/* Line 1806 of yacc.c  */
     7334#line 1668 "parser.yy"
     7335    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     7336    break;
     7337
     7338  case 452:
     7339
     7340/* Line 1806 of yacc.c  */
     7341#line 1684 "parser.yy"
     7342    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
     7343    break;
     7344
     7345  case 454:
     7346
     7347/* Line 1806 of yacc.c  */
     7348#line 1690 "parser.yy"
     7349    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     7350    break;
     7351
    76077352  case 455:
    76087353
    76097354/* Line 1806 of yacc.c  */
    7610 #line 1721 "parser.yy"
    7611     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     7355#line 1697 "parser.yy"
     7356    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
    76127357    break;
    76137358
     
    76157360
    76167361/* Line 1806 of yacc.c  */
    7617 #line 1726 "parser.yy"
    7618     { (yyval.in) = 0; }
     7362#line 1699 "parser.yy"
     7363    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
    76197364    break;
    76207365
     
    76227367
    76237368/* Line 1806 of yacc.c  */
    7624 #line 1728 "parser.yy"
    7625     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     7369#line 1702 "parser.yy"
     7370    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    76267371    break;
    76277372
     
    76297374
    76307375/* Line 1806 of yacc.c  */
    7631 #line 1730 "parser.yy"
    7632     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
     7376#line 1704 "parser.yy"
     7377    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    76337378    break;
    76347379
     
    76367381
    76377382/* 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"
     7391    { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
     7392    break;
     7393
     7394  case 462:
     7395
     7396/* Line 1806 of yacc.c  */
     7397#line 1732 "parser.yy"
     7398    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7399    break;
     7400
     7401  case 463:
     7402
     7403/* Line 1806 of yacc.c  */
    76387404#line 1734 "parser.yy"
    7639     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7640     break;
    7641 
    7642   case 460:
    7643 
    7644 /* Line 1806 of yacc.c  */
    7645 #line 1735 "parser.yy"
    7646     { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    7647     break;
    7648 
    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:
     7405    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7406    break;
     7407
     7408  case 464:
     7409
     7410/* Line 1806 of yacc.c  */
     7411#line 1736 "parser.yy"
     7412    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     7413    break;
     7414
     7415  case 466:
    76577416
    76587417/* Line 1806 of yacc.c  */
    76597418#line 1742 "parser.yy"
    7660     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7661     break;
    7662 
    7663   case 464:
    7664 
    7665 /* Line 1806 of yacc.c  */
    7666 #line 1743 "parser.yy"
    7667     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    7668     break;
    7669 
    7670   case 465:
    7671 
    7672 /* Line 1806 of yacc.c  */
    7673 #line 1745 "parser.yy"
    7674     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
     7419    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    76757420    break;
    76767421
     
    76787423
    76797424/* Line 1806 of yacc.c  */
    7680 #line 1761 "parser.yy"
    7681     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    7682     break;
    7683 
    7684   case 469:
    7685 
    7686 /* Line 1806 of yacc.c  */
    7687 #line 1767 "parser.yy"
    7688     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     7425#line 1744 "parser.yy"
     7426    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7427    break;
     7428
     7429  case 468:
     7430
     7431/* Line 1806 of yacc.c  */
     7432#line 1749 "parser.yy"
     7433    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    76897434    break;
    76907435
     
    76927437
    76937438/* Line 1806 of yacc.c  */
    7694 #line 1775 "parser.yy"
    7695     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
     7439#line 1755 "parser.yy"
     7440    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    76967441    break;
    76977442
     
    76997444
    77007445/* Line 1806 of yacc.c  */
     7446#line 1760 "parser.yy"
     7447    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
     7448    break;
     7449
     7450  case 472:
     7451
     7452/* Line 1806 of yacc.c  */
     7453#line 1762 "parser.yy"
     7454    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     7455    break;
     7456
     7457  case 474:
     7458
     7459/* Line 1806 of yacc.c  */
     7460#line 1768 "parser.yy"
     7461    { (yyval.tclass) = DeclarationNode::Type; }
     7462    break;
     7463
     7464  case 475:
     7465
     7466/* Line 1806 of yacc.c  */
     7467#line 1770 "parser.yy"
     7468    { (yyval.tclass) = DeclarationNode::Ftype; }
     7469    break;
     7470
     7471  case 476:
     7472
     7473/* Line 1806 of yacc.c  */
     7474#line 1772 "parser.yy"
     7475    { (yyval.tclass) = DeclarationNode::Dtype; }
     7476    break;
     7477
     7478  case 477:
     7479
     7480/* Line 1806 of yacc.c  */
    77017481#line 1777 "parser.yy"
    7702     { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
    7703     break;
    7704 
    7705   case 472:
    7706 
    7707 /* Line 1806 of yacc.c  */
    7708 #line 1780 "parser.yy"
    7709     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    7710     break;
    7711 
    7712   case 473:
    7713 
    7714 /* Line 1806 of yacc.c  */
    7715 #line 1782 "parser.yy"
    7716     { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    7717     break;
    7718 
    7719   case 474:
     7482    { (yyval.decl) = 0; }
     7483    break;
     7484
     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:
    77207493
    77217494/* Line 1806 of yacc.c  */
    77227495#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"
    7730     { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
    7731     break;
    7732 
    7733   case 477:
     7496    {
     7497                        typedefTable.openContext( *(yyvsp[(2) - (5)].tok) );
     7498                        (yyval.decl) = DeclarationNode::newContextUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
     7499                }
     7500    break;
     7501
     7502  case 480:
     7503
     7504/* Line 1806 of yacc.c  */
     7505#line 1789 "parser.yy"
     7506    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     7507    break;
     7508
     7509  case 481:
     7510
     7511/* Line 1806 of yacc.c  */
     7512#line 1791 "parser.yy"
     7513    { (yyval.decl) = 0; }
     7514    break;
     7515
     7516  case 482:
     7517
     7518/* Line 1806 of yacc.c  */
     7519#line 1796 "parser.yy"
     7520    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     7521    break;
     7522
     7523  case 484:
     7524
     7525/* Line 1806 of yacc.c  */
     7526#line 1799 "parser.yy"
     7527    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
     7528    break;
     7529
     7530  case 485:
     7531
     7532/* Line 1806 of yacc.c  */
     7533#line 1801 "parser.yy"
     7534    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
     7535    break;
     7536
     7537  case 486:
     7538
     7539/* Line 1806 of yacc.c  */
     7540#line 1806 "parser.yy"
     7541    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     7542    break;
     7543
     7544  case 487:
     7545
     7546/* Line 1806 of yacc.c  */
     7547#line 1808 "parser.yy"
     7548    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     7549    break;
     7550
     7551  case 488:
    77347552
    77357553/* Line 1806 of yacc.c  */
    77367554#line 1810 "parser.yy"
    7737     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7738     break;
    7739 
    7740   case 478:
    7741 
    7742 /* Line 1806 of yacc.c  */
    7743 #line 1812 "parser.yy"
    7744     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7745     break;
    7746 
    7747   case 479:
    7748 
    7749 /* Line 1806 of yacc.c  */
    7750 #line 1814 "parser.yy"
    7751     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    7752     break;
    7753 
    7754   case 481:
    7755 
    7756 /* Line 1806 of yacc.c  */
    7757 #line 1820 "parser.yy"
    7758     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    7759     break;
    7760 
    7761   case 482:
     7555    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     7556    break;
     7557
     7558  case 489:
     7559
     7560/* Line 1806 of yacc.c  */
     7561#line 1815 "parser.yy"
     7562    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     7563    break;
     7564
     7565  case 490:
     7566
     7567/* Line 1806 of yacc.c  */
     7568#line 1817 "parser.yy"
     7569    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     7570    break;
     7571
     7572  case 491:
    77627573
    77637574/* Line 1806 of yacc.c  */
    77647575#line 1822 "parser.yy"
    7765     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    7766     break;
    7767 
    7768   case 483:
    7769 
    7770 /* Line 1806 of yacc.c  */
    7771 #line 1827 "parser.yy"
    7772     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    7773     break;
    7774 
    7775   case 485:
    7776 
    7777 /* Line 1806 of yacc.c  */
    7778 #line 1833 "parser.yy"
    7779     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    7780     break;
    7781 
    7782   case 486:
    7783 
    7784 /* Line 1806 of yacc.c  */
    7785 #line 1838 "parser.yy"
    7786     { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    7787     break;
    7788 
    7789   case 487:
    7790 
    7791 /* Line 1806 of yacc.c  */
    7792 #line 1840 "parser.yy"
    7793     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    7794     break;
    7795 
    7796   case 489:
    7797 
    7798 /* Line 1806 of yacc.c  */
    7799 #line 1846 "parser.yy"
    7800     { (yyval.tclass) = DeclarationNode::Type; }
    7801     break;
    7802 
    7803   case 490:
    7804 
    7805 /* Line 1806 of yacc.c  */
    7806 #line 1848 "parser.yy"
    7807     { (yyval.tclass) = DeclarationNode::Ftype; }
    7808     break;
    7809 
    7810   case 491:
    7811 
    7812 /* Line 1806 of yacc.c  */
    7813 #line 1850 "parser.yy"
    7814     { (yyval.tclass) = DeclarationNode::Dtype; }
    7815     break;
    7816 
    7817   case 492:
    7818 
    7819 /* Line 1806 of yacc.c  */
    7820 #line 1855 "parser.yy"
    7821     { (yyval.decl) = 0; }
    7822     break;
    7823 
    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"
    7835     {
    7836                         typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
    7837                         (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
    7838                 }
    7839     break;
    7840 
    7841   case 495:
    7842 
    7843 /* Line 1806 of yacc.c  */
    7844 #line 1867 "parser.yy"
    7845     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    7846     break;
    7847 
    7848   case 496:
    7849 
    7850 /* Line 1806 of yacc.c  */
    7851 #line 1869 "parser.yy"
    7852     { (yyval.decl) = 0; }
    7853     break;
    7854 
    7855   case 497:
    7856 
    7857 /* Line 1806 of yacc.c  */
    7858 #line 1874 "parser.yy"
    7859     { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    7860     break;
    7861 
    7862   case 499:
    7863 
    7864 /* Line 1806 of yacc.c  */
    7865 #line 1877 "parser.yy"
    7866     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    7867     break;
    7868 
    7869   case 500:
    7870 
    7871 /* Line 1806 of yacc.c  */
    7872 #line 1879 "parser.yy"
    7873     { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    7874     break;
    7875 
    7876   case 501:
    7877 
    7878 /* Line 1806 of yacc.c  */
    7879 #line 1884 "parser.yy"
    7880     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    7881     break;
    7882 
    7883   case 502:
    7884 
    7885 /* Line 1806 of yacc.c  */
    7886 #line 1886 "parser.yy"
    7887     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    7888     break;
    7889 
    7890   case 503:
    7891 
    7892 /* Line 1806 of yacc.c  */
    7893 #line 1888 "parser.yy"
    7894     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    7895     break;
    7896 
    7897   case 504:
    7898 
    7899 /* Line 1806 of yacc.c  */
    7900 #line 1893 "parser.yy"
    7901     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    7902     break;
    7903 
    7904   case 505:
    7905 
    7906 /* Line 1806 of yacc.c  */
    7907 #line 1895 "parser.yy"
    7908     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    7909     break;
    7910 
    7911   case 506:
    7912 
    7913 /* Line 1806 of yacc.c  */
    7914 #line 1900 "parser.yy"
    79157576    {
    79167577                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    79197580    break;
    79207581
    7921   case 507:
    7922 
    7923 /* Line 1806 of yacc.c  */
    7924 #line 1905 "parser.yy"
     7582  case 492:
     7583
     7584/* Line 1806 of yacc.c  */
     7585#line 1827 "parser.yy"
    79257586    {
    79267587                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    79297590    break;
    79307591
    7931   case 508:
    7932 
    7933 /* Line 1806 of yacc.c  */
    7934 #line 1913 "parser.yy"
     7592  case 493:
     7593
     7594/* Line 1806 of yacc.c  */
     7595#line 1835 "parser.yy"
    79357596    {
    79367597                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
    7937                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
     7598                        (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
    79387599                }
    79397600    break;
    79407601
    7941   case 509:
    7942 
    7943 /* Line 1806 of yacc.c  */
    7944 #line 1918 "parser.yy"
     7602  case 494:
     7603
     7604/* Line 1806 of yacc.c  */
     7605#line 1840 "parser.yy"
    79457606    {
    7946                         typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     7607                        typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
    79477608                        typedefTable.enterScope();
    79487609                }
    79497610    break;
    79507611
    7951   case 510:
    7952 
    7953 /* Line 1806 of yacc.c  */
    7954 #line 1923 "parser.yy"
     7612  case 495:
     7613
     7614/* Line 1806 of yacc.c  */
     7615#line 1845 "parser.yy"
    79557616    {
    7956                         typedefTable.leaveTrait();
     7617                        typedefTable.leaveContext();
    79577618                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
    7958                         (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
     7619                        (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
    79597620                }
    79607621    break;
    79617622
    7962   case 512:
    7963 
    7964 /* Line 1806 of yacc.c  */
    7965 #line 1933 "parser.yy"
     7623  case 497:
     7624
     7625/* Line 1806 of yacc.c  */
     7626#line 1855 "parser.yy"
    79667627    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    79677628    break;
    79687629
    7969   case 515:
    7970 
    7971 /* Line 1806 of yacc.c  */
    7972 #line 1943 "parser.yy"
     7630  case 500:
     7631
     7632/* Line 1806 of yacc.c  */
     7633#line 1865 "parser.yy"
    79737634    {
    79747635                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    79777638    break;
    79787639
    7979   case 516:
    7980 
    7981 /* Line 1806 of yacc.c  */
    7982 #line 1948 "parser.yy"
     7640  case 501:
     7641
     7642/* Line 1806 of yacc.c  */
     7643#line 1870 "parser.yy"
    79837644    {
    79847645                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    79877648    break;
    79887649
    7989   case 517:
    7990 
    7991 /* Line 1806 of yacc.c  */
    7992 #line 1953 "parser.yy"
     7650  case 502:
     7651
     7652/* Line 1806 of yacc.c  */
     7653#line 1875 "parser.yy"
    79937654    {
    79947655                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    79977658    break;
    79987659
    7999   case 518:
    8000 
    8001 /* Line 1806 of yacc.c  */
    8002 #line 1961 "parser.yy"
     7660  case 503:
     7661
     7662/* Line 1806 of yacc.c  */
     7663#line 1883 "parser.yy"
    80037664    {
    80047665                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    80077668    break;
    80087669
    8009   case 519:
    8010 
    8011 /* Line 1806 of yacc.c  */
    8012 #line 1966 "parser.yy"
     7670  case 504:
     7671
     7672/* Line 1806 of yacc.c  */
     7673#line 1888 "parser.yy"
    80137674    {
    80147675                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    80177678    break;
    80187679
    8019   case 520:
    8020 
    8021 /* Line 1806 of yacc.c  */
    8022 #line 1976 "parser.yy"
     7680  case 505:
     7681
     7682/* Line 1806 of yacc.c  */
     7683#line 1898 "parser.yy"
    80237684    {}
    80247685    break;
    80257686
    8026   case 521:
    8027 
    8028 /* Line 1806 of yacc.c  */
    8029 #line 1978 "parser.yy"
     7687  case 506:
     7688
     7689/* Line 1806 of yacc.c  */
     7690#line 1900 "parser.yy"
    80307691    {
    80317692                        if ( theTree ) {
     
    80377698    break;
    80387699
    8039   case 523:
    8040 
    8041 /* Line 1806 of yacc.c  */
    8042 #line 1990 "parser.yy"
     7700  case 508:
     7701
     7702/* Line 1806 of yacc.c  */
     7703#line 1912 "parser.yy"
    80437704    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    80447705    break;
    80457706
    8046   case 524:
    8047 
    8048 /* Line 1806 of yacc.c  */
    8049 #line 1995 "parser.yy"
     7707  case 509:
     7708
     7709/* Line 1806 of yacc.c  */
     7710#line 1917 "parser.yy"
    80507711    { (yyval.decl) = 0; }
    80517712    break;
    80527713
    8053   case 528:
    8054 
    8055 /* Line 1806 of yacc.c  */
    8056 #line 2003 "parser.yy"
     7714  case 513:
     7715
     7716/* Line 1806 of yacc.c  */
     7717#line 1925 "parser.yy"
    80577718    {}
    80587719    break;
    80597720
    8060   case 529:
    8061 
    8062 /* Line 1806 of yacc.c  */
    8063 #line 2005 "parser.yy"
     7721  case 514:
     7722
     7723/* Line 1806 of yacc.c  */
     7724#line 1927 "parser.yy"
    80647725    {
    80657726                        linkageStack.push( linkage );
     
    80687729    break;
    80697730
    8070   case 530:
    8071 
    8072 /* Line 1806 of yacc.c  */
    8073 #line 2010 "parser.yy"
     7731  case 515:
     7732
     7733/* Line 1806 of yacc.c  */
     7734#line 1932 "parser.yy"
    80747735    {
    80757736                        linkage = linkageStack.top();
     
    80797740    break;
    80807741
    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"
     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"
    80967753    {
    80977754                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81017758    break;
    81027759
    8103   case 534:
    8104 
    8105 /* Line 1806 of yacc.c  */
    8106 #line 2037 "parser.yy"
     7760  case 519:
     7761
     7762/* Line 1806 of yacc.c  */
     7763#line 1954 "parser.yy"
    81077764    {
    81087765                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81127769    break;
    81137770
    8114   case 535:
    8115 
    8116 /* Line 1806 of yacc.c  */
    8117 #line 2046 "parser.yy"
     7771  case 520:
     7772
     7773/* Line 1806 of yacc.c  */
     7774#line 1963 "parser.yy"
    81187775    {
    81197776                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81237780    break;
    81247781
    8125   case 536:
    8126 
    8127 /* Line 1806 of yacc.c  */
    8128 #line 2052 "parser.yy"
     7782  case 521:
     7783
     7784/* Line 1806 of yacc.c  */
     7785#line 1969 "parser.yy"
    81297786    {
    81307787                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81347791    break;
    81357792
    8136   case 537:
    8137 
    8138 /* Line 1806 of yacc.c  */
    8139 #line 2058 "parser.yy"
     7793  case 522:
     7794
     7795/* Line 1806 of yacc.c  */
     7796#line 1975 "parser.yy"
    81407797    {
    81417798                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81457802    break;
    81467803
    8147   case 538:
    8148 
    8149 /* Line 1806 of yacc.c  */
    8150 #line 2064 "parser.yy"
     7804  case 523:
     7805
     7806/* Line 1806 of yacc.c  */
     7807#line 1981 "parser.yy"
    81517808    {
    81527809                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81567813    break;
    81577814
    8158   case 539:
    8159 
    8160 /* Line 1806 of yacc.c  */
    8161 #line 2070 "parser.yy"
     7815  case 524:
     7816
     7817/* Line 1806 of yacc.c  */
     7818#line 1987 "parser.yy"
    81627819    {
    81637820                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81677824    break;
    81687825
    8169   case 540:
    8170 
    8171 /* Line 1806 of yacc.c  */
    8172 #line 2078 "parser.yy"
     7826  case 525:
     7827
     7828/* Line 1806 of yacc.c  */
     7829#line 1995 "parser.yy"
    81737830    {
    81747831                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81787835    break;
    81797836
    8180   case 541:
    8181 
    8182 /* Line 1806 of yacc.c  */
    8183 #line 2084 "parser.yy"
     7837  case 526:
     7838
     7839/* Line 1806 of yacc.c  */
     7840#line 2001 "parser.yy"
    81847841    {
    81857842                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    81897846    break;
    81907847
    8191   case 542:
    8192 
    8193 /* Line 1806 of yacc.c  */
    8194 #line 2092 "parser.yy"
     7848  case 527:
     7849
     7850/* Line 1806 of yacc.c  */
     7851#line 2009 "parser.yy"
    81957852    {
    81967853                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    82007857    break;
    82017858
    8202   case 543:
    8203 
    8204 /* Line 1806 of yacc.c  */
    8205 #line 2098 "parser.yy"
     7859  case 528:
     7860
     7861/* Line 1806 of yacc.c  */
     7862#line 2015 "parser.yy"
    82067863    {
    82077864                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    82117868    break;
    82127869
     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"
     7881    { (yyval.decl) = 0; }
     7882    break;
     7883
     7884  case 538:
     7885
     7886/* Line 1806 of yacc.c  */
     7887#line 2047 "parser.yy"
     7888    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     7889    break;
     7890
     7891  case 539:
     7892
     7893/* Line 1806 of yacc.c  */
     7894#line 2053 "parser.yy"
     7895    { (yyval.decl) = 0; }
     7896    break;
     7897
     7898  case 545:
     7899
     7900/* Line 1806 of yacc.c  */
     7901#line 2068 "parser.yy"
     7902    {}
     7903    break;
     7904
     7905  case 546:
     7906
     7907/* Line 1806 of yacc.c  */
     7908#line 2069 "parser.yy"
     7909    {}
     7910    break;
     7911
    82137912  case 547:
    82147913
    82157914/* 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"
    8224     { (yyval.decl) = 0; }
     7915#line 2070 "parser.yy"
     7916    {}
     7917    break;
     7918
     7919  case 548:
     7920
     7921/* Line 1806 of yacc.c  */
     7922#line 2071 "parser.yy"
     7923    {}
     7924    break;
     7925
     7926  case 549:
     7927
     7928/* Line 1806 of yacc.c  */
     7929#line 2106 "parser.yy"
     7930    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7931    break;
     7932
     7933  case 551:
     7934
     7935/* Line 1806 of yacc.c  */
     7936#line 2109 "parser.yy"
     7937    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     7938    break;
     7939
     7940  case 552:
     7941
     7942/* Line 1806 of yacc.c  */
     7943#line 2111 "parser.yy"
     7944    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82257945    break;
    82267946
     
    82287948
    82297949/* Line 1806 of yacc.c  */
    8230 #line 2130 "parser.yy"
    8231     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    8232     break;
    8233 
    8234   case 554:
    8235 
    8236 /* Line 1806 of yacc.c  */
    8237 #line 2136 "parser.yy"
    8238     { (yyval.decl) = 0; }
    8239     break;
    8240 
    8241   case 560:
    8242 
    8243 /* Line 1806 of yacc.c  */
    8244 #line 2151 "parser.yy"
    8245     {}
    8246     break;
    8247 
    8248   case 561:
    8249 
    8250 /* Line 1806 of yacc.c  */
    8251 #line 2152 "parser.yy"
    8252     {}
    8253     break;
    8254 
    8255   case 562:
    8256 
    8257 /* Line 1806 of yacc.c  */
    8258 #line 2153 "parser.yy"
    8259     {}
    8260     break;
    8261 
    8262   case 563:
    8263 
    8264 /* Line 1806 of yacc.c  */
    8265 #line 2154 "parser.yy"
    8266     {}
    8267     break;
    8268 
    8269   case 564:
    8270 
    8271 /* Line 1806 of yacc.c  */
    8272 #line 2189 "parser.yy"
    8273     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8274     break;
    8275 
    8276   case 566:
    8277 
    8278 /* Line 1806 of yacc.c  */
    8279 #line 2192 "parser.yy"
    8280     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8281     break;
    8282 
    8283   case 567:
    8284 
    8285 /* Line 1806 of yacc.c  */
    8286 #line 2194 "parser.yy"
    8287     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8288     break;
    8289 
    8290   case 568:
    8291 
    8292 /* Line 1806 of yacc.c  */
    8293 #line 2199 "parser.yy"
     7950#line 2116 "parser.yy"
    82947951    {
    82957952                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    82987955    break;
    82997956
     7957  case 554:
     7958
     7959/* Line 1806 of yacc.c  */
     7960#line 2121 "parser.yy"
     7961    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7962    break;
     7963
     7964  case 555:
     7965
     7966/* Line 1806 of yacc.c  */
     7967#line 2126 "parser.yy"
     7968    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     7969    break;
     7970
     7971  case 556:
     7972
     7973/* Line 1806 of yacc.c  */
     7974#line 2128 "parser.yy"
     7975    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     7976    break;
     7977
     7978  case 557:
     7979
     7980/* Line 1806 of yacc.c  */
     7981#line 2130 "parser.yy"
     7982    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     7983    break;
     7984
     7985  case 558:
     7986
     7987/* Line 1806 of yacc.c  */
     7988#line 2135 "parser.yy"
     7989    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     7990    break;
     7991
     7992  case 559:
     7993
     7994/* Line 1806 of yacc.c  */
     7995#line 2137 "parser.yy"
     7996    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     7997    break;
     7998
     7999  case 560:
     8000
     8001/* Line 1806 of yacc.c  */
     8002#line 2139 "parser.yy"
     8003    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8004    break;
     8005
     8006  case 561:
     8007
     8008/* Line 1806 of yacc.c  */
     8009#line 2141 "parser.yy"
     8010    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8011    break;
     8012
     8013  case 562:
     8014
     8015/* Line 1806 of yacc.c  */
     8016#line 2146 "parser.yy"
     8017    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8018    break;
     8019
     8020  case 563:
     8021
     8022/* Line 1806 of yacc.c  */
     8023#line 2148 "parser.yy"
     8024    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8025    break;
     8026
     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
    83008055  case 569:
    83018056
    83028057/* Line 1806 of yacc.c  */
    8303 #line 2204 "parser.yy"
     8058#line 2170 "parser.yy"
    83048059    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83058060    break;
     
    83088063
    83098064/* Line 1806 of yacc.c  */
    8310 #line 2209 "parser.yy"
     8065#line 2175 "parser.yy"
    83118066    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83128067    break;
     
    83158070
    83168071/* Line 1806 of yacc.c  */
    8317 #line 2211 "parser.yy"
     8072#line 2177 "parser.yy"
    83188073    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83198074    break;
     
    83228077
    83238078/* Line 1806 of yacc.c  */
    8324 #line 2213 "parser.yy"
     8079#line 2179 "parser.yy"
    83258080    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83268081    break;
     
    83298084
    83308085/* Line 1806 of yacc.c  */
    8331 #line 2218 "parser.yy"
    8332     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8086#line 2184 "parser.yy"
     8087    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83338088    break;
    83348089
     
    83368091
    83378092/* Line 1806 of yacc.c  */
    8338 #line 2220 "parser.yy"
     8093#line 2186 "parser.yy"
    83398094    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83408095    break;
     
    83438098
    83448099/* Line 1806 of yacc.c  */
    8345 #line 2222 "parser.yy"
     8100#line 2188 "parser.yy"
     8101    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8102    break;
     8103
     8104  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"
    83468150    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83478151    break;
    83488152
    8349   case 576:
    8350 
    8351 /* Line 1806 of yacc.c  */
    8352 #line 2224 "parser.yy"
     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"
    83538164    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83548165    break;
    83558166
    8356   case 577:
    8357 
    8358 /* Line 1806 of yacc.c  */
    8359 #line 2229 "parser.yy"
    8360     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8361     break;
    8362 
    8363   case 578:
    8364 
    8365 /* Line 1806 of yacc.c  */
    8366 #line 2231 "parser.yy"
    8367     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8368     break;
    8369 
    8370   case 579:
     8167  case 588:
    83718168
    83728169/* Line 1806 of yacc.c  */
     
    83758172    break;
    83768173
    8377   case 581:
     8174  case 590:
    83788175
    83798176/* Line 1806 of yacc.c  */
     
    83828179    break;
    83838180
    8384   case 582:
    8385 
    8386 /* Line 1806 of yacc.c  */
    8387 #line 2248 "parser.yy"
     8181  case 591:
     8182
     8183/* Line 1806 of yacc.c  */
     8184#line 2245 "parser.yy"
     8185    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8186    break;
     8187
     8188  case 593:
     8189
     8190/* Line 1806 of yacc.c  */
     8191#line 2251 "parser.yy"
     8192    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8193    break;
     8194
     8195  case 594:
     8196
     8197/* Line 1806 of yacc.c  */
     8198#line 2256 "parser.yy"
     8199    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8200    break;
     8201
     8202  case 595:
     8203
     8204/* Line 1806 of yacc.c  */
     8205#line 2258 "parser.yy"
     8206    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8207    break;
     8208
     8209  case 596:
     8210
     8211/* Line 1806 of yacc.c  */
     8212#line 2260 "parser.yy"
     8213    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8214    break;
     8215
     8216  case 597:
     8217
     8218/* Line 1806 of yacc.c  */
     8219#line 2265 "parser.yy"
     8220    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8221    break;
     8222
     8223  case 598:
     8224
     8225/* Line 1806 of yacc.c  */
     8226#line 2267 "parser.yy"
     8227    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8228    break;
     8229
     8230  case 599:
     8231
     8232/* Line 1806 of yacc.c  */
     8233#line 2269 "parser.yy"
     8234    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8235    break;
     8236
     8237  case 600:
     8238
     8239/* Line 1806 of yacc.c  */
     8240#line 2271 "parser.yy"
     8241    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8242    break;
     8243
     8244  case 601:
     8245
     8246/* Line 1806 of yacc.c  */
     8247#line 2276 "parser.yy"
    83888248    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83898249    break;
    83908250
    8391   case 583:
    8392 
    8393 /* Line 1806 of yacc.c  */
    8394 #line 2250 "parser.yy"
     8251  case 602:
     8252
     8253/* Line 1806 of yacc.c  */
     8254#line 2278 "parser.yy"
    83958255    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83968256    break;
    83978257
    8398   case 584:
    8399 
    8400 /* Line 1806 of yacc.c  */
    8401 #line 2252 "parser.yy"
     8258  case 603:
     8259
     8260/* Line 1806 of yacc.c  */
     8261#line 2280 "parser.yy"
    84028262    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84038263    break;
    84048264
    8405   case 585:
    8406 
    8407 /* Line 1806 of yacc.c  */
    8408 #line 2257 "parser.yy"
     8265  case 604:
     8266
     8267/* Line 1806 of yacc.c  */
     8268#line 2290 "parser.yy"
     8269    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8270    break;
     8271
     8272  case 606:
     8273
     8274/* Line 1806 of yacc.c  */
     8275#line 2293 "parser.yy"
     8276    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8277    break;
     8278
     8279  case 607:
     8280
     8281/* Line 1806 of yacc.c  */
     8282#line 2295 "parser.yy"
     8283    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8284    break;
     8285
     8286  case 608:
     8287
     8288/* Line 1806 of yacc.c  */
     8289#line 2300 "parser.yy"
    84098290    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84108291    break;
    84118292
    8412   case 586:
    8413 
    8414 /* Line 1806 of yacc.c  */
    8415 #line 2259 "parser.yy"
     8293  case 609:
     8294
     8295/* Line 1806 of yacc.c  */
     8296#line 2302 "parser.yy"
    84168297    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84178298    break;
    84188299
    8419   case 587:
    8420 
    8421 /* Line 1806 of yacc.c  */
    8422 #line 2261 "parser.yy"
     8300  case 610:
     8301
     8302/* Line 1806 of yacc.c  */
     8303#line 2304 "parser.yy"
    84238304    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84248305    break;
    84258306
    8426   case 588:
    8427 
    8428 /* Line 1806 of yacc.c  */
    8429 #line 2266 "parser.yy"
     8307  case 611:
     8308
     8309/* Line 1806 of yacc.c  */
     8310#line 2309 "parser.yy"
     8311    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8312    break;
     8313
     8314  case 612:
     8315
     8316/* Line 1806 of yacc.c  */
     8317#line 2311 "parser.yy"
    84308318    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84318319    break;
    84328320
    8433   case 589:
    8434 
    8435 /* Line 1806 of yacc.c  */
    8436 #line 2268 "parser.yy"
     8321  case 613:
     8322
     8323/* Line 1806 of yacc.c  */
     8324#line 2313 "parser.yy"
    84378325    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84388326    break;
    84398327
    8440   case 590:
    8441 
    8442 /* Line 1806 of yacc.c  */
    8443 #line 2270 "parser.yy"
     8328  case 614:
     8329
     8330/* Line 1806 of yacc.c  */
     8331#line 2315 "parser.yy"
    84448332    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84458333    break;
    84468334
    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"
     8335  case 615:
     8336
     8337/* Line 1806 of yacc.c  */
     8338#line 2320 "parser.yy"
     8339    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8340    break;
     8341
     8342  case 616:
     8343
     8344/* Line 1806 of yacc.c  */
     8345#line 2322 "parser.yy"
     8346    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8347    break;
     8348
     8349  case 617:
     8350
     8351/* Line 1806 of yacc.c  */
     8352#line 2324 "parser.yy"
    84658353    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84668354    break;
    84678355
    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"
     8356  case 618:
     8357
     8358/* Line 1806 of yacc.c  */
     8359#line 2355 "parser.yy"
    85148360    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85158361    break;
    85168362
    8517   case 605:
    8518 
    8519 /* Line 1806 of yacc.c  */
    8520 #line 2325 "parser.yy"
     8363  case 620:
     8364
     8365/* Line 1806 of yacc.c  */
     8366#line 2358 "parser.yy"
    85218367    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85228368    break;
    85238369
    8524   case 606:
    8525 
    8526 /* Line 1806 of yacc.c  */
    8527 #line 2327 "parser.yy"
     8370  case 621:
     8371
     8372/* Line 1806 of yacc.c  */
     8373#line 2360 "parser.yy"
    85288374    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85298375    break;
    85308376
    8531   case 608:
    8532 
    8533 /* Line 1806 of yacc.c  */
    8534 #line 2333 "parser.yy"
    8535     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8536     break;
    8537 
    8538   case 609:
    8539 
    8540 /* Line 1806 of yacc.c  */
    8541 #line 2338 "parser.yy"
    8542     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8543     break;
    8544 
    8545   case 610:
    8546 
    8547 /* Line 1806 of yacc.c  */
    8548 #line 2340 "parser.yy"
    8549     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8550     break;
    8551 
    8552   case 611:
    8553 
    8554 /* Line 1806 of yacc.c  */
    8555 #line 2342 "parser.yy"
    8556     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8557     break;
    8558 
    8559   case 612:
    8560 
    8561 /* Line 1806 of yacc.c  */
    8562 #line 2347 "parser.yy"
    8563     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8564     break;
    8565 
    8566   case 613:
    8567 
    8568 /* Line 1806 of yacc.c  */
    8569 #line 2349 "parser.yy"
    8570     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8571     break;
    8572 
    8573   case 614:
    8574 
    8575 /* Line 1806 of yacc.c  */
    8576 #line 2351 "parser.yy"
    8577     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8578     break;
    8579 
    8580   case 615:
    8581 
    8582 /* Line 1806 of yacc.c  */
    8583 #line 2353 "parser.yy"
    8584     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8585     break;
    8586 
    8587   case 616:
    8588 
    8589 /* Line 1806 of yacc.c  */
    8590 #line 2358 "parser.yy"
    8591     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8592     break;
    8593 
    8594   case 617:
    8595 
    8596 /* Line 1806 of yacc.c  */
    8597 #line 2360 "parser.yy"
    8598     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8599     break;
    8600 
    8601   case 618:
    8602 
    8603 /* Line 1806 of yacc.c  */
    8604 #line 2362 "parser.yy"
    8605     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8606     break;
    8607 
    8608   case 619:
    8609 
    8610 /* Line 1806 of yacc.c  */
    8611 #line 2372 "parser.yy"
    8612     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8613     break;
    8614 
    8615   case 621:
    8616 
    8617 /* Line 1806 of yacc.c  */
    8618 #line 2375 "parser.yy"
    8619     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8620     break;
    8621 
    86228377  case 622:
    86238378
    86248379/* Line 1806 of yacc.c  */
    8625 #line 2377 "parser.yy"
    8626     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8627     break;
    8628 
    8629   case 623:
    8630 
    8631 /* Line 1806 of yacc.c  */
    8632 #line 2382 "parser.yy"
    8633     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8634     break;
    8635 
    8636   case 624:
    8637 
    8638 /* Line 1806 of yacc.c  */
    8639 #line 2384 "parser.yy"
    8640     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8641     break;
    8642 
    8643   case 625:
    8644 
    8645 /* Line 1806 of yacc.c  */
    8646 #line 2386 "parser.yy"
    8647     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8648     break;
    8649 
    8650   case 626:
    8651 
    8652 /* Line 1806 of yacc.c  */
    8653 #line 2391 "parser.yy"
    8654     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    8655     break;
    8656 
    8657   case 627:
    8658 
    8659 /* Line 1806 of yacc.c  */
    8660 #line 2393 "parser.yy"
    8661     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8662     break;
    8663 
    8664   case 628:
    8665 
    8666 /* Line 1806 of yacc.c  */
    8667 #line 2395 "parser.yy"
    8668     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8669     break;
    8670 
    8671   case 629:
    8672 
    8673 /* Line 1806 of yacc.c  */
    8674 #line 2397 "parser.yy"
    8675     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8676     break;
    8677 
    8678   case 630:
    8679 
    8680 /* Line 1806 of yacc.c  */
    8681 #line 2402 "parser.yy"
    8682     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8683     break;
    8684 
    8685   case 631:
    8686 
    8687 /* Line 1806 of yacc.c  */
    8688 #line 2404 "parser.yy"
    8689     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8690     break;
    8691 
    8692   case 632:
    8693 
    8694 /* Line 1806 of yacc.c  */
    8695 #line 2406 "parser.yy"
    8696     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8697     break;
    8698 
    8699   case 633:
    8700 
    8701 /* Line 1806 of yacc.c  */
    8702 #line 2437 "parser.yy"
    8703     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8704     break;
    8705 
    8706   case 635:
    8707 
    8708 /* Line 1806 of yacc.c  */
    8709 #line 2440 "parser.yy"
    8710     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8711     break;
    8712 
    8713   case 636:
    8714 
    8715 /* Line 1806 of yacc.c  */
    8716 #line 2442 "parser.yy"
    8717     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8718     break;
    8719 
    8720   case 637:
    8721 
    8722 /* Line 1806 of yacc.c  */
    8723 #line 2447 "parser.yy"
     8380#line 2365 "parser.yy"
    87248381    {
    87258382                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    87288385    break;
    87298386
    8730   case 638:
    8731 
    8732 /* Line 1806 of yacc.c  */
    8733 #line 2452 "parser.yy"
     8387  case 623:
     8388
     8389/* Line 1806 of yacc.c  */
     8390#line 2370 "parser.yy"
    87348391    {
    87358392                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    87388395    break;
    87398396
    8740   case 639:
    8741 
    8742 /* Line 1806 of yacc.c  */
    8743 #line 2460 "parser.yy"
     8397  case 624:
     8398
     8399/* Line 1806 of yacc.c  */
     8400#line 2378 "parser.yy"
    87448401    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87458402    break;
    87468403
     8404  case 625:
     8405
     8406/* Line 1806 of yacc.c  */
     8407#line 2380 "parser.yy"
     8408    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8409    break;
     8410
     8411  case 626:
     8412
     8413/* Line 1806 of yacc.c  */
     8414#line 2382 "parser.yy"
     8415    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8416    break;
     8417
     8418  case 627:
     8419
     8420/* Line 1806 of yacc.c  */
     8421#line 2387 "parser.yy"
     8422    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     8423    break;
     8424
     8425  case 628:
     8426
     8427/* Line 1806 of yacc.c  */
     8428#line 2389 "parser.yy"
     8429    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8430    break;
     8431
     8432  case 629:
     8433
     8434/* Line 1806 of yacc.c  */
     8435#line 2394 "parser.yy"
     8436    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     8437    break;
     8438
     8439  case 630:
     8440
     8441/* Line 1806 of yacc.c  */
     8442#line 2396 "parser.yy"
     8443    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8444    break;
     8445
     8446  case 632:
     8447
     8448/* Line 1806 of yacc.c  */
     8449#line 2411 "parser.yy"
     8450    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8451    break;
     8452
     8453  case 633:
     8454
     8455/* Line 1806 of yacc.c  */
     8456#line 2413 "parser.yy"
     8457    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8458    break;
     8459
     8460  case 634:
     8461
     8462/* Line 1806 of yacc.c  */
     8463#line 2418 "parser.yy"
     8464    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8465    break;
     8466
     8467  case 635:
     8468
     8469/* Line 1806 of yacc.c  */
     8470#line 2420 "parser.yy"
     8471    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8472    break;
     8473
     8474  case 636:
     8475
     8476/* Line 1806 of yacc.c  */
     8477#line 2422 "parser.yy"
     8478    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8479    break;
     8480
     8481  case 637:
     8482
     8483/* Line 1806 of yacc.c  */
     8484#line 2424 "parser.yy"
     8485    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8486    break;
     8487
     8488  case 638:
     8489
     8490/* Line 1806 of yacc.c  */
     8491#line 2426 "parser.yy"
     8492    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8493    break;
     8494
    87478495  case 640:
    87488496
    87498497/* Line 1806 of yacc.c  */
    8750 #line 2462 "parser.yy"
     8498#line 2432 "parser.yy"
     8499    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8500    break;
     8501
     8502  case 641:
     8503
     8504/* Line 1806 of yacc.c  */
     8505#line 2434 "parser.yy"
     8506    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8507    break;
     8508
     8509  case 642:
     8510
     8511/* Line 1806 of yacc.c  */
     8512#line 2436 "parser.yy"
     8513    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8514    break;
     8515
     8516  case 643:
     8517
     8518/* Line 1806 of yacc.c  */
     8519#line 2441 "parser.yy"
     8520    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8521    break;
     8522
     8523  case 644:
     8524
     8525/* Line 1806 of yacc.c  */
     8526#line 2443 "parser.yy"
     8527    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8528    break;
     8529
     8530  case 645:
     8531
     8532/* Line 1806 of yacc.c  */
     8533#line 2445 "parser.yy"
     8534    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8535    break;
     8536
     8537  case 646:
     8538
     8539/* Line 1806 of yacc.c  */
     8540#line 2451 "parser.yy"
     8541    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8542    break;
     8543
     8544  case 647:
     8545
     8546/* Line 1806 of yacc.c  */
     8547#line 2453 "parser.yy"
     8548    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
     8549    break;
     8550
     8551  case 649:
     8552
     8553/* Line 1806 of yacc.c  */
     8554#line 2459 "parser.yy"
     8555    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     8556    break;
     8557
     8558  case 650:
     8559
     8560/* Line 1806 of yacc.c  */
     8561#line 2461 "parser.yy"
     8562    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     8563    break;
     8564
     8565  case 651:
     8566
     8567/* Line 1806 of yacc.c  */
     8568#line 2463 "parser.yy"
     8569    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     8570    break;
     8571
     8572  case 652:
     8573
     8574/* Line 1806 of yacc.c  */
     8575#line 2465 "parser.yy"
     8576    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     8577    break;
     8578
     8579  case 654:
     8580
     8581/* Line 1806 of yacc.c  */
     8582#line 2480 "parser.yy"
     8583    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8584    break;
     8585
     8586  case 655:
     8587
     8588/* Line 1806 of yacc.c  */
     8589#line 2482 "parser.yy"
     8590    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8591    break;
     8592
     8593  case 656:
     8594
     8595/* Line 1806 of yacc.c  */
     8596#line 2487 "parser.yy"
     8597    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8598    break;
     8599
     8600  case 657:
     8601
     8602/* Line 1806 of yacc.c  */
     8603#line 2489 "parser.yy"
     8604    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8605    break;
     8606
     8607  case 658:
     8608
     8609/* Line 1806 of yacc.c  */
     8610#line 2491 "parser.yy"
     8611    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8612    break;
     8613
     8614  case 659:
     8615
     8616/* Line 1806 of yacc.c  */
     8617#line 2493 "parser.yy"
    87518618    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87528619    break;
    87538620
    8754   case 641:
    8755 
    8756 /* Line 1806 of yacc.c  */
    8757 #line 2464 "parser.yy"
     8621  case 660:
     8622
     8623/* Line 1806 of yacc.c  */
     8624#line 2495 "parser.yy"
    87588625    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87598626    break;
    87608627
    8761   case 642:
    8762 
    8763 /* Line 1806 of yacc.c  */
    8764 #line 2469 "parser.yy"
     8628  case 662:
     8629
     8630/* Line 1806 of yacc.c  */
     8631#line 2501 "parser.yy"
     8632    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8633    break;
     8634
     8635  case 663:
     8636
     8637/* Line 1806 of yacc.c  */
     8638#line 2503 "parser.yy"
     8639    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8640    break;
     8641
     8642  case 664:
     8643
     8644/* Line 1806 of yacc.c  */
     8645#line 2505 "parser.yy"
     8646    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8647    break;
     8648
     8649  case 665:
     8650
     8651/* Line 1806 of yacc.c  */
     8652#line 2510 "parser.yy"
     8653    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8654    break;
     8655
     8656  case 666:
     8657
     8658/* Line 1806 of yacc.c  */
     8659#line 2512 "parser.yy"
     8660    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     8661    break;
     8662
     8663  case 667:
     8664
     8665/* Line 1806 of yacc.c  */
     8666#line 2514 "parser.yy"
     8667    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8668    break;
     8669
     8670  case 669:
     8671
     8672/* Line 1806 of yacc.c  */
     8673#line 2521 "parser.yy"
    87658674    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87668675    break;
    87678676
    8768   case 643:
    8769 
    8770 /* Line 1806 of yacc.c  */
    8771 #line 2471 "parser.yy"
     8677  case 671:
     8678
     8679/* Line 1806 of yacc.c  */
     8680#line 2532 "parser.yy"
     8681    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     8682    break;
     8683
     8684  case 672:
     8685
     8686/* Line 1806 of yacc.c  */
     8687#line 2535 "parser.yy"
     8688    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     8689    break;
     8690
     8691  case 673:
     8692
     8693/* Line 1806 of yacc.c  */
     8694#line 2537 "parser.yy"
     8695    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     8696    break;
     8697
     8698  case 674:
     8699
     8700/* Line 1806 of yacc.c  */
     8701#line 2540 "parser.yy"
     8702    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     8703    break;
     8704
     8705  case 675:
     8706
     8707/* Line 1806 of yacc.c  */
     8708#line 2542 "parser.yy"
     8709    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     8710    break;
     8711
     8712  case 676:
     8713
     8714/* Line 1806 of yacc.c  */
     8715#line 2544 "parser.yy"
     8716    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     8717    break;
     8718
     8719  case 678:
     8720
     8721/* Line 1806 of yacc.c  */
     8722#line 2558 "parser.yy"
     8723    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8724    break;
     8725
     8726  case 679:
     8727
     8728/* Line 1806 of yacc.c  */
     8729#line 2560 "parser.yy"
     8730    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     8731    break;
     8732
     8733  case 680:
     8734
     8735/* Line 1806 of yacc.c  */
     8736#line 2565 "parser.yy"
     8737    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     8738    break;
     8739
     8740  case 681:
     8741
     8742/* Line 1806 of yacc.c  */
     8743#line 2567 "parser.yy"
     8744    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     8745    break;
     8746
     8747  case 682:
     8748
     8749/* Line 1806 of yacc.c  */
     8750#line 2569 "parser.yy"
     8751    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     8752    break;
     8753
     8754  case 683:
     8755
     8756/* Line 1806 of yacc.c  */
     8757#line 2571 "parser.yy"
     8758    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     8759    break;
     8760
     8761  case 684:
     8762
     8763/* Line 1806 of yacc.c  */
     8764#line 2573 "parser.yy"
     8765    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8766    break;
     8767
     8768  case 686:
     8769
     8770/* Line 1806 of yacc.c  */
     8771#line 2579 "parser.yy"
    87728772    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87738773    break;
    87748774
    8775   case 644:
    8776 
    8777 /* Line 1806 of yacc.c  */
    8778 #line 2476 "parser.yy"
    8779     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    8780     break;
    8781 
    8782   case 645:
    8783 
    8784 /* Line 1806 of yacc.c  */
    8785 #line 2478 "parser.yy"
     8775  case 687:
     8776
     8777/* Line 1806 of yacc.c  */
     8778#line 2581 "parser.yy"
     8779    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     8780    break;
     8781
     8782  case 688:
     8783
     8784/* Line 1806 of yacc.c  */
     8785#line 2583 "parser.yy"
     8786    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     8787    break;
     8788
     8789  case 689:
     8790
     8791/* Line 1806 of yacc.c  */
     8792#line 2588 "parser.yy"
    87868793    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87878794    break;
    87888795
    8789   case 647:
    8790 
    8791 /* Line 1806 of yacc.c  */
    8792 #line 2493 "parser.yy"
    8793     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8794     break;
    8795 
    8796   case 648:
    8797 
    8798 /* Line 1806 of yacc.c  */
    8799 #line 2495 "parser.yy"
    8800     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8801     break;
    8802 
    8803   case 649:
    8804 
    8805 /* Line 1806 of yacc.c  */
    8806 #line 2500 "parser.yy"
    8807     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8808     break;
    8809 
    8810   case 650:
    8811 
    8812 /* Line 1806 of yacc.c  */
    8813 #line 2502 "parser.yy"
    8814     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8815     break;
    8816 
    8817   case 651:
    8818 
    8819 /* Line 1806 of yacc.c  */
    8820 #line 2504 "parser.yy"
    8821     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8822     break;
    8823 
    8824   case 652:
    8825 
    8826 /* Line 1806 of yacc.c  */
    8827 #line 2506 "parser.yy"
    8828     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8829     break;
    8830 
    8831   case 653:
    8832 
    8833 /* Line 1806 of yacc.c  */
    8834 #line 2508 "parser.yy"
     8796  case 690:
     8797
     8798/* Line 1806 of yacc.c  */
     8799#line 2590 "parser.yy"
    88358800    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88368801    break;
    88378802
    8838   case 655:
    8839 
    8840 /* Line 1806 of yacc.c  */
    8841 #line 2514 "parser.yy"
    8842     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8843     break;
    8844 
    8845   case 656:
    8846 
    8847 /* Line 1806 of yacc.c  */
    8848 #line 2516 "parser.yy"
    8849     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8850     break;
    8851 
    8852   case 657:
    8853 
    8854 /* Line 1806 of yacc.c  */
    8855 #line 2518 "parser.yy"
    8856     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8857     break;
    8858 
    8859   case 658:
    8860 
    8861 /* Line 1806 of yacc.c  */
    8862 #line 2523 "parser.yy"
    8863     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8864     break;
    8865 
    8866   case 659:
    8867 
    8868 /* Line 1806 of yacc.c  */
    8869 #line 2525 "parser.yy"
    8870     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    8871     break;
    8872 
    8873   case 660:
    8874 
    8875 /* Line 1806 of yacc.c  */
    8876 #line 2527 "parser.yy"
    8877     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8878     break;
    8879 
    8880   case 661:
    8881 
    8882 /* Line 1806 of yacc.c  */
    8883 #line 2533 "parser.yy"
    8884     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    8885     break;
    8886 
    8887   case 662:
    8888 
    8889 /* Line 1806 of yacc.c  */
    8890 #line 2535 "parser.yy"
    8891     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    8892     break;
    8893 
    8894   case 664:
    8895 
    8896 /* Line 1806 of yacc.c  */
    8897 #line 2541 "parser.yy"
    8898     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    8899     break;
    8900 
    8901   case 665:
    8902 
    8903 /* Line 1806 of yacc.c  */
    8904 #line 2543 "parser.yy"
    8905     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    8906     break;
    8907 
    8908   case 666:
    8909 
    8910 /* Line 1806 of yacc.c  */
    8911 #line 2545 "parser.yy"
    8912     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    8913     break;
    8914 
    8915   case 667:
    8916 
    8917 /* Line 1806 of yacc.c  */
    8918 #line 2547 "parser.yy"
    8919     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    8920     break;
    8921 
    8922   case 669:
    8923 
    8924 /* Line 1806 of yacc.c  */
    8925 #line 2562 "parser.yy"
    8926     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8927     break;
    8928 
    8929   case 670:
    8930 
    8931 /* Line 1806 of yacc.c  */
    8932 #line 2564 "parser.yy"
    8933     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    8934     break;
    8935 
    8936   case 671:
    8937 
    8938 /* Line 1806 of yacc.c  */
    8939 #line 2569 "parser.yy"
    8940     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    8941     break;
    8942 
    8943   case 672:
    8944 
    8945 /* Line 1806 of yacc.c  */
    8946 #line 2571 "parser.yy"
    8947     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    8948     break;
    8949 
    8950   case 673:
    8951 
    8952 /* Line 1806 of yacc.c  */
    8953 #line 2573 "parser.yy"
    8954     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    8955     break;
    8956 
    8957   case 674:
    8958 
    8959 /* Line 1806 of yacc.c  */
    8960 #line 2575 "parser.yy"
    8961     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    8962     break;
    8963 
    8964   case 675:
    8965 
    8966 /* Line 1806 of yacc.c  */
    8967 #line 2577 "parser.yy"
    8968     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8969     break;
    8970 
    8971   case 677:
    8972 
    8973 /* Line 1806 of yacc.c  */
    8974 #line 2583 "parser.yy"
    8975     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8976     break;
    8977 
    8978   case 678:
    8979 
    8980 /* Line 1806 of yacc.c  */
    8981 #line 2585 "parser.yy"
    8982     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    8983     break;
    8984 
    8985   case 679:
    8986 
    8987 /* Line 1806 of yacc.c  */
    8988 #line 2587 "parser.yy"
    8989     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    8990     break;
    8991 
    8992   case 680:
    8993 
    8994 /* Line 1806 of yacc.c  */
    8995 #line 2592 "parser.yy"
    8996     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    8997     break;
    8998 
    8999   case 681:
    9000 
    9001 /* Line 1806 of yacc.c  */
    9002 #line 2594 "parser.yy"
    9003     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    9004     break;
    9005 
    9006   case 682:
    9007 
    9008 /* Line 1806 of yacc.c  */
    9009 #line 2596 "parser.yy"
    9010     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    9011     break;
    9012 
    9013   case 684:
    9014 
    9015 /* Line 1806 of yacc.c  */
    9016 #line 2603 "parser.yy"
    9017     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    9018     break;
    9019 
    9020   case 686:
     8803  case 693:
     8804
     8805/* Line 1806 of yacc.c  */
     8806#line 2600 "parser.yy"
     8807    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     8808    break;
     8809
     8810  case 696:
     8811
     8812/* Line 1806 of yacc.c  */
     8813#line 2610 "parser.yy"
     8814    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8815    break;
     8816
     8817  case 697:
     8818
     8819/* Line 1806 of yacc.c  */
     8820#line 2612 "parser.yy"
     8821    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8822    break;
     8823
     8824  case 698:
    90218825
    90228826/* Line 1806 of yacc.c  */
    90238827#line 2614 "parser.yy"
    9024     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    9025     break;
    9026 
    9027   case 687:
    9028 
    9029 /* Line 1806 of yacc.c  */
    9030 #line 2617 "parser.yy"
     8828    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8829    break;
     8830
     8831  case 699:
     8832
     8833/* Line 1806 of yacc.c  */
     8834#line 2616 "parser.yy"
     8835    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8836    break;
     8837
     8838  case 700:
     8839
     8840/* Line 1806 of yacc.c  */
     8841#line 2618 "parser.yy"
     8842    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     8843    break;
     8844
     8845  case 701:
     8846
     8847/* Line 1806 of yacc.c  */
     8848#line 2620 "parser.yy"
     8849    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     8850    break;
     8851
     8852  case 702:
     8853
     8854/* Line 1806 of yacc.c  */
     8855#line 2627 "parser.yy"
     8856    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8857    break;
     8858
     8859  case 703:
     8860
     8861/* Line 1806 of yacc.c  */
     8862#line 2629 "parser.yy"
     8863    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8864    break;
     8865
     8866  case 704:
     8867
     8868/* Line 1806 of yacc.c  */
     8869#line 2631 "parser.yy"
     8870    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8871    break;
     8872
     8873  case 705:
     8874
     8875/* Line 1806 of yacc.c  */
     8876#line 2633 "parser.yy"
     8877    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8878    break;
     8879
     8880  case 706:
     8881
     8882/* Line 1806 of yacc.c  */
     8883#line 2635 "parser.yy"
     8884    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8885    break;
     8886
     8887  case 707:
     8888
     8889/* Line 1806 of yacc.c  */
     8890#line 2637 "parser.yy"
     8891    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8892    break;
     8893
     8894  case 708:
     8895
     8896/* Line 1806 of yacc.c  */
     8897#line 2639 "parser.yy"
     8898    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8899    break;
     8900
     8901  case 709:
     8902
     8903/* Line 1806 of yacc.c  */
     8904#line 2641 "parser.yy"
     8905    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8906    break;
     8907
     8908  case 710:
     8909
     8910/* Line 1806 of yacc.c  */
     8911#line 2643 "parser.yy"
     8912    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8913    break;
     8914
     8915  case 711:
     8916
     8917/* Line 1806 of yacc.c  */
     8918#line 2645 "parser.yy"
     8919    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8920    break;
     8921
     8922  case 712:
     8923
     8924/* Line 1806 of yacc.c  */
     8925#line 2650 "parser.yy"
    90318926    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    90328927    break;
    90338928
    9034   case 688:
    9035 
    9036 /* Line 1806 of yacc.c  */
    9037 #line 2619 "parser.yy"
    9038     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    9039     break;
    9040 
    9041   case 689:
    9042 
    9043 /* Line 1806 of yacc.c  */
    9044 #line 2622 "parser.yy"
     8929  case 713:
     8930
     8931/* Line 1806 of yacc.c  */
     8932#line 2652 "parser.yy"
    90458933    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    90468934    break;
    90478935
    9048   case 690:
    9049 
    9050 /* Line 1806 of yacc.c  */
    9051 #line 2624 "parser.yy"
    9052     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    9053     break;
    9054 
    9055   case 691:
    9056 
    9057 /* Line 1806 of yacc.c  */
    9058 #line 2626 "parser.yy"
    9059     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    9060     break;
    9061 
    9062   case 693:
    9063 
    9064 /* Line 1806 of yacc.c  */
    9065 #line 2640 "parser.yy"
    9066     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    9067     break;
    9068 
    9069   case 694:
    9070 
    9071 /* Line 1806 of yacc.c  */
    9072 #line 2642 "parser.yy"
    9073     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    9074     break;
    9075 
    9076   case 695:
    9077 
    9078 /* Line 1806 of yacc.c  */
    9079 #line 2647 "parser.yy"
    9080     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    9081     break;
    9082 
    9083   case 696:
    9084 
    9085 /* Line 1806 of yacc.c  */
    9086 #line 2649 "parser.yy"
    9087     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    9088     break;
    9089 
    9090   case 697:
    9091 
    9092 /* Line 1806 of yacc.c  */
    9093 #line 2651 "parser.yy"
    9094     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    9095     break;
    9096 
    9097   case 698:
    9098 
    9099 /* Line 1806 of yacc.c  */
    9100 #line 2653 "parser.yy"
    9101     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    9102     break;
    9103 
    9104   case 699:
    9105 
    9106 /* Line 1806 of yacc.c  */
    9107 #line 2655 "parser.yy"
    9108     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    9109     break;
    9110 
    9111   case 701:
    9112 
    9113 /* Line 1806 of yacc.c  */
    9114 #line 2661 "parser.yy"
    9115     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    9116     break;
    9117 
    9118   case 702:
    9119 
    9120 /* Line 1806 of yacc.c  */
    9121 #line 2663 "parser.yy"
    9122     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    9123     break;
    9124 
    9125   case 703:
    9126 
    9127 /* Line 1806 of yacc.c  */
    9128 #line 2665 "parser.yy"
    9129     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    9130     break;
    9131 
    9132   case 704:
    9133 
    9134 /* Line 1806 of yacc.c  */
    9135 #line 2670 "parser.yy"
    9136     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    9137     break;
    9138 
    9139   case 705:
    9140 
    9141 /* Line 1806 of yacc.c  */
    9142 #line 2672 "parser.yy"
    9143     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    9144     break;
    9145 
    9146   case 708:
    9147 
    9148 /* Line 1806 of yacc.c  */
    9149 #line 2682 "parser.yy"
     8936  case 714:
     8937
     8938/* Line 1806 of yacc.c  */
     8939#line 2657 "parser.yy"
     8940    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     8941    break;
     8942
     8943  case 715:
     8944
     8945/* Line 1806 of yacc.c  */
     8946#line 2659 "parser.yy"
     8947    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     8948    break;
     8949
     8950  case 717:
     8951
     8952/* Line 1806 of yacc.c  */
     8953#line 2686 "parser.yy"
    91508954    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    91518955    break;
    91528956
    9153   case 711:
    9154 
    9155 /* Line 1806 of yacc.c  */
    9156 #line 2692 "parser.yy"
     8957  case 721:
     8958
     8959/* Line 1806 of yacc.c  */
     8960#line 2697 "parser.yy"
    91578961    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91588962    break;
    91598963
    9160   case 712:
    9161 
    9162 /* Line 1806 of yacc.c  */
    9163 #line 2694 "parser.yy"
     8964  case 722:
     8965
     8966/* Line 1806 of yacc.c  */
     8967#line 2699 "parser.yy"
    91648968    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91658969    break;
    91668970
    9167   case 713:
    9168 
    9169 /* Line 1806 of yacc.c  */
    9170 #line 2696 "parser.yy"
     8971  case 723:
     8972
     8973/* Line 1806 of yacc.c  */
     8974#line 2701 "parser.yy"
    91718975    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91728976    break;
    91738977
    9174   case 714:
    9175 
    9176 /* Line 1806 of yacc.c  */
    9177 #line 2698 "parser.yy"
     8978  case 724:
     8979
     8980/* Line 1806 of yacc.c  */
     8981#line 2703 "parser.yy"
    91788982    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91798983    break;
    91808984
    9181   case 715:
    9182 
    9183 /* Line 1806 of yacc.c  */
    9184 #line 2700 "parser.yy"
     8985  case 725:
     8986
     8987/* Line 1806 of yacc.c  */
     8988#line 2705 "parser.yy"
    91858989    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91868990    break;
    91878991
    9188   case 716:
    9189 
    9190 /* Line 1806 of yacc.c  */
    9191 #line 2702 "parser.yy"
     8992  case 726:
     8993
     8994/* Line 1806 of yacc.c  */
     8995#line 2707 "parser.yy"
    91928996    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91938997    break;
    91948998
    9195   case 717:
    9196 
    9197 /* Line 1806 of yacc.c  */
    9198 #line 2709 "parser.yy"
     8999  case 727:
     9000
     9001/* Line 1806 of yacc.c  */
     9002#line 2714 "parser.yy"
    91999003    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    92009004    break;
    92019005
    9202   case 718:
    9203 
    9204 /* Line 1806 of yacc.c  */
    9205 #line 2711 "parser.yy"
     9006  case 728:
     9007
     9008/* Line 1806 of yacc.c  */
     9009#line 2716 "parser.yy"
     9010    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9011    break;
     9012
     9013  case 729:
     9014
     9015/* Line 1806 of yacc.c  */
     9016#line 2718 "parser.yy"
    92069017    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    92079018    break;
    92089019
    9209   case 719:
    9210 
    9211 /* Line 1806 of yacc.c  */
    9212 #line 2713 "parser.yy"
     9020  case 730:
     9021
     9022/* Line 1806 of yacc.c  */
     9023#line 2720 "parser.yy"
     9024    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9025    break;
     9026
     9027  case 731:
     9028
     9029/* Line 1806 of yacc.c  */
     9030#line 2722 "parser.yy"
    92139031    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    92149032    break;
    92159033
    9216   case 720:
    9217 
    9218 /* Line 1806 of yacc.c  */
    9219 #line 2715 "parser.yy"
    9220     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9221     break;
    9222 
    9223   case 721:
    9224 
    9225 /* Line 1806 of yacc.c  */
    9226 #line 2717 "parser.yy"
     9034  case 732:
     9035
     9036/* Line 1806 of yacc.c  */
     9037#line 2724 "parser.yy"
    92279038    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    92289039    break;
    92299040
    9230   case 722:
    9231 
    9232 /* Line 1806 of yacc.c  */
    9233 #line 2719 "parser.yy"
    9234     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9235     break;
    9236 
    9237   case 723:
    9238 
    9239 /* Line 1806 of yacc.c  */
    9240 #line 2721 "parser.yy"
    9241     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9242     break;
    9243 
    9244   case 724:
    9245 
    9246 /* Line 1806 of yacc.c  */
    9247 #line 2723 "parser.yy"
    9248     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9249     break;
    9250 
    9251   case 725:
    9252 
    9253 /* Line 1806 of yacc.c  */
    9254 #line 2725 "parser.yy"
    9255     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9256     break;
    9257 
    9258   case 726:
    9259 
    9260 /* Line 1806 of yacc.c  */
    9261 #line 2727 "parser.yy"
    9262     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9263     break;
    9264 
    9265   case 727:
    9266 
    9267 /* Line 1806 of yacc.c  */
    9268 #line 2732 "parser.yy"
    9269     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    9270     break;
    9271 
    9272   case 728:
     9041  case 733:
     9042
     9043/* Line 1806 of yacc.c  */
     9044#line 2729 "parser.yy"
     9045    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     9046    break;
     9047
     9048  case 734:
    92739049
    92749050/* Line 1806 of yacc.c  */
    92759051#line 2734 "parser.yy"
    9276     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9277     break;
    9278 
    9279   case 729:
    9280 
    9281 /* Line 1806 of yacc.c  */
    9282 #line 2739 "parser.yy"
    9283     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9284     break;
    9285 
    9286   case 730:
    9287 
    9288 /* Line 1806 of yacc.c  */
    9289 #line 2741 "parser.yy"
    9290     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9291     break;
    9292 
    9293   case 732:
    9294 
    9295 /* Line 1806 of yacc.c  */
    9296 #line 2768 "parser.yy"
    9297     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     9052    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     9053    break;
     9054
     9055  case 735:
     9056
     9057/* Line 1806 of yacc.c  */
     9058#line 2736 "parser.yy"
     9059    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    92989060    break;
    92999061
     
    93019063
    93029064/* Line 1806 of yacc.c  */
    9303 #line 2779 "parser.yy"
    9304     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9305     break;
    9306 
    9307   case 737:
    9308 
    9309 /* Line 1806 of yacc.c  */
    9310 #line 2781 "parser.yy"
    9311     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9312     break;
    9313 
    9314   case 738:
    9315 
    9316 /* Line 1806 of yacc.c  */
    9317 #line 2783 "parser.yy"
    9318     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9065#line 2738 "parser.yy"
     9066    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    93199067    break;
    93209068
     
    93229070
    93239071/* Line 1806 of yacc.c  */
    9324 #line 2785 "parser.yy"
    9325     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9072#line 2762 "parser.yy"
     9073    { (yyval.en) = 0; }
    93269074    break;
    93279075
     
    93299077
    93309078/* Line 1806 of yacc.c  */
    9331 #line 2787 "parser.yy"
    9332     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9333     break;
    9334 
    9335   case 741:
    9336 
    9337 /* Line 1806 of yacc.c  */
    9338 #line 2789 "parser.yy"
    9339     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9340     break;
    9341 
    9342   case 742:
    9343 
    9344 /* Line 1806 of yacc.c  */
    9345 #line 2796 "parser.yy"
    9346     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9347     break;
    9348 
    9349   case 743:
    9350 
    9351 /* Line 1806 of yacc.c  */
    9352 #line 2798 "parser.yy"
    9353     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9354     break;
    9355 
    9356   case 744:
    9357 
    9358 /* Line 1806 of yacc.c  */
    9359 #line 2800 "parser.yy"
    9360     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9361     break;
    9362 
    9363   case 745:
    9364 
    9365 /* Line 1806 of yacc.c  */
    9366 #line 2802 "parser.yy"
    9367     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9368     break;
    9369 
    9370   case 746:
    9371 
    9372 /* Line 1806 of yacc.c  */
    9373 #line 2804 "parser.yy"
    9374     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9375     break;
    9376 
    9377   case 747:
    9378 
    9379 /* Line 1806 of yacc.c  */
    9380 #line 2806 "parser.yy"
    9381     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9382     break;
    9383 
    9384   case 748:
    9385 
    9386 /* Line 1806 of yacc.c  */
    9387 #line 2811 "parser.yy"
    9388     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    9389     break;
    9390 
    9391   case 749:
    9392 
    9393 /* Line 1806 of yacc.c  */
    9394 #line 2816 "parser.yy"
    9395     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    9396     break;
    9397 
    9398   case 750:
    9399 
    9400 /* Line 1806 of yacc.c  */
    9401 #line 2818 "parser.yy"
    9402     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9403     break;
    9404 
    9405   case 751:
    9406 
    9407 /* Line 1806 of yacc.c  */
    9408 #line 2820 "parser.yy"
    9409     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    9410     break;
    9411 
    9412   case 754:
    9413 
    9414 /* Line 1806 of yacc.c  */
    9415 #line 2844 "parser.yy"
    9416     { (yyval.en) = 0; }
    9417     break;
    9418 
    9419   case 755:
    9420 
    9421 /* Line 1806 of yacc.c  */
    9422 #line 2846 "parser.yy"
     9079#line 2764 "parser.yy"
    94239080    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    94249081    break;
     
    94279084
    94289085/* Line 1806 of yacc.c  */
    9429 #line 9430 "Parser/parser.cc"
     9086#line 9087 "Parser/parser.cc"
    94309087      default: break;
    94319088    }
     
    96589315
    96599316/* Line 2067 of yacc.c  */
    9660 #line 2849 "parser.yy"
     9317#line 2767 "parser.yy"
    96619318
    96629319// ----end of grammar----
     
    96659322        std::cout << "Error ";
    96669323        if ( yyfilename ) {
    9667                 std::cout << "in file " << yyfilename << " ";
     9324            std::cout << "in file " << yyfilename << " ";
    96689325        } // if
    96699326        std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
  • src/Parser/parser.h

    r242d458 r679864e1  
    5959     SIGNED = 277,
    6060     UNSIGNED = 278,
    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
     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
    146138   };
    147139#endif
     
    168160#define SIGNED 277
    169161#define UNSIGNED 278
    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
     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
    255239
    256240
     
    262246
    263247/* Line 2068 of yacc.c  */
    264 #line 110 "parser.yy"
     248#line 108 "parser.yy"
    265249
    266250        Token tok;
     
    274258        LabelNode *label;
    275259        InitializerNode *in;
    276         OperatorNode::Type op;
    277260        bool flag;
    278261
     
    280263
    281264/* Line 2068 of yacc.c  */
    282 #line 283 "Parser/parser.h"
     265#line 266 "Parser/parser.h"
    283266} YYSTYPE;
    284267# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    r242d458 r679864e1  
    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 : Fri Aug  5 08:15:57 2016
    13 // Update Count     : 1721
    14 //
     12// Last Modified On : Tue Aug 11 16:01:49 2015
     13// Update Count     : 1350
     14// 
    1515
    1616// This grammar is based on the ANSI99/11 C grammar, specifically parts of EXPRESSION and STATEMENTS, and on the C
     
    3131// two levels of extensions. The first extensions cover most of the GCC C extensions, except for:
    3232//
    33 // 1. designation with and without '=' (use ':' instead)
    34 // 2. attributes not allowed in parenthesis of declarator
     33// 1. nested functions
     34// 2. generalized lvalues
     35// 3. designation with and without '=' (use ':' instead)
     36// 4. attributes not allowed in parenthesis of declarator
    3537//
    3638// All of the syntactic extensions for GCC C are marked with the comment "GCC". The second extensions are for Cforall
     
    4951#include <cstdio>
    5052#include <stack>
     53#include "TypedefTable.h"
    5154#include "lex.h"
    52 #include "parser.h"
    5355#include "ParseNode.h"
    54 #include "TypedefTable.h"
    5556#include "TypeData.h"
    5657#include "LinkageSpec.h"
     
    7374%token FORALL LVALUE                                                                    // CFA
    7475%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 OTYPE FTYPE DTYPE TRAIT                                                  // CFA
    80 %token SIZEOF OFFSETOF
     79%token TYPE FTYPE DTYPE CONTEXT                                                 // CFA
     80%token SIZEOF
    8181%token ATTRIBUTE EXTENSION                                                              // GCC
    8282%token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN
    83 %token CHOOSE DISABLE ENABLE FALLTHRU TRY CATCH CATCHRESUME FINALLY THROW THROWRESUME AT        // CFA
     83%token CHOOSE FALLTHRU TRY CATCH FINALLY THROW                  // 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                                                                                 // @=
    107105
    108106// Types declaration
     
    119117        LabelNode *label;
    120118        InitializerNode *in;
    121         OperatorNode::Type op;
    122119        bool flag;
    123120}
    124121
    125 %type<tok> identifier  no_01_identifier  no_attr_identifier zero_one
     122%type<tok> zero_one  identifier  no_attr_identifier  no_01_identifier
    126123%type<tok> identifier_or_type_name  no_attr_identifier_or_type_name  no_01_identifier_or_type_name
    127124%type<constant> string_literal_list
     
    130127%type<constant> constant
    131128%type<en> tuple                                                 tuple_expression_list
    132 %type<op> ptrref_operator
    133129%type<en> unary_operator                                assignment_operator
    134130%type<en> primary_expression                    postfix_expression                      unary_expression
     
    152148%type<sn> block_item_list                               block_item
    153149%type<sn> case_clause
    154 %type<en> case_value
    155 %type<sn> case_value_list                               case_label                                      case_label_list
     150%type<en> case_value                                    case_value_list
     151%type<sn> case_label                                    case_label_list
    156152%type<sn> switch_clause_list_opt                switch_clause_list                      choose_clause_list_opt          choose_clause_list
    157153%type<pn> handler_list                                  handler_clause                          finally_clause
     
    173169%type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type_name indirect_type_name
    174170
    175 %type<decl> trait_declaration trait_declaration_list trait_declaring_list trait_specifier
     171%type<decl> context_declaration context_declaration_list context_declaring_list context_specifier
    176172
    177173%type<decl> declaration declaration_list declaration_list_opt declaration_qualifier_list
     
    199195%type<decl> new_array_parameter_1st_dimension
    200196
    201 %type<decl> new_trait_declaring_list new_declaration new_field_declaring_list
     197%type<decl> new_context_declaring_list new_declaration new_field_declaring_list
    202198%type<decl> new_function_declaration new_function_return new_function_specifier
    203199
     
    226222%type<decl> typedef type_array typedef_declaration typedef_declaration_specifier typedef_expression
    227223%type<decl> type_function type_parameter_array type_parameter_function type_parameter_ptr
    228 %type<decl> type_parameter_redeclarator type_ptr variable_type_redeclarator typedef_type_specifier
     224%type<decl> type_parameter_redeclarator type_ptr type_redeclarator typedef_type_specifier
    229225%type<decl> typegen_declaration_specifier typegen_type_specifier typegen_name
    230226
     
    305301constant:
    306302                // ENUMERATIONconstant is not included here; it is treated as a variable with type "enumeration constant".
    307 INTEGERconstant                                                                 { $$ = makeConstantInteger( *$1 ); }
    308         | FLOATINGconstant                                                      { $$ = makeConstantFloat( *$1 ); }
    309         | CHARACTERconstant                                                     { $$ = makeConstantChar( *$1 ); }
     303        INTEGERconstant                                                         { $$ = new ConstantNode( ConstantNode::Integer, $1 ); }
     304        | FLOATINGconstant                                                      { $$ = new ConstantNode( ConstantNode::Float, $1 ); }
     305        | CHARACTERconstant                                                     { $$ = new ConstantNode( ConstantNode::Character, $1 ); }
    310306        ;
    311307
     
    323319no_attr_identifier:
    324320        IDENTIFIER
    325         | zero_one                                                                                      // CFA
    326321        ;
    327322
     
    332327
    333328string_literal_list:                                                                    // juxtaposed strings are concatenated
    334         STRINGliteral                                                           { $$ = makeConstantStr( *$1 ); }
     329        STRINGliteral                                                           { $$ = new ConstantNode( ConstantNode::String, $1 ); }
    335330        | string_literal_list STRINGliteral                     { $$ = $1->appendstr( $2 ); }
    336331        ;
     
    352347        primary_expression
    353348        | postfix_expression '[' push assignment_expression pop ']'
    354                 // CFA, comma_expression disallowed in this context because it results in a common user error: subscripting a
     349                // CFA, comma_expression disallowed in the context because it results in a commom user error: subscripting a
    355350                // matrix with x[i,j] instead of x[i][j]. While this change is not backwards compatible, there seems to be
    356351                // little advantage to this feature and many disadvantages. It is possible to write x[(i,j)] in CFA, which is
    357352                // equivalent to the old x[i,j].
    358                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Index, $1, $4 ) ); }
     353                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), $1, $4 ); }
    359354        | postfix_expression '(' argument_expression_list ')'
    360355                { $$ = 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;
    363356        | postfix_expression '.' no_attr_identifier
    364                 { $$ = new CompositeExprNode2( build_fieldSel( $1, new VarRefNode( $3 ) ) ); }
     357                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), $1, new VarRefNode( $3 )); }
    365358        | postfix_expression '.' '[' push field_list pop ']' // CFA, tuple field selector
    366359        | postfix_expression ARROW no_attr_identifier
    367                 { $$ = new CompositeExprNode2( build_pfieldSel( $1, new VarRefNode( $3 ) ) ); }
     360                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), $1, new VarRefNode( $3 )); }
    368361        | postfix_expression ARROW '[' push field_list pop ']' // CFA, tuple field selector
    369362        | postfix_expression ICR
    370                 { $$ = new CompositeExprNode2( build_opr1( OperatorNode::IncrPost, $1 ) ); }
     363                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), $1 ); }
    371364        | postfix_expression DECR
    372                 { $$ = new CompositeExprNode2( build_opr1( OperatorNode::DecrPost, $1 ) ); }
     365                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), $1 ); }
     366                // GCC has priority: cast_expression
    373367        | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
    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                 }
     368                { $$ = 0; }
    380369        ;
    381370
     
    409398        no_attr_identifier
    410399                { $$ = 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;
    413400        | no_attr_identifier '.' field
    414                 { $$ = new CompositeExprNode2( build_fieldSel( $3, new VarRefNode( $1 ) ) ); }
     401                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $3 ); }
    415402        | no_attr_identifier '.' '[' push field_list pop ']'
    416                 { $$ = new CompositeExprNode2( build_fieldSel( $5, new VarRefNode( $1 ) ) ); }
     403                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $5 ); }
    417404        | no_attr_identifier ARROW field
    418                 { $$ = new CompositeExprNode2( build_pfieldSel( $3, new VarRefNode( $1 ) ) ); }
     405                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $3 ); }
    419406        | no_attr_identifier ARROW '[' push field_list pop ']'
    420                 { $$ = new CompositeExprNode2( build_pfieldSel( $5, new VarRefNode( $1 ) ) ); }
     407                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( $1 ), $5 ); }
    421408        ;
    422409
    423410unary_expression:
    424411        postfix_expression
    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
     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
    427414        | constant
    428415                { $$ = $1; }
    429416        | string_literal_list
    430417                { $$ = $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 ); }
    431422        | EXTENSION cast_expression                                                     // GCC
    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 ); }
     423                { $$ = $2; }
    439424        | unary_operator cast_expression
    440425                { $$ = new CompositeExprNode( $1, $2 ); }
    441         | ICR unary_expression
    442                 { $$ = new CompositeExprNode2( build_opr1( OperatorNode::Incr, $2 ) ); }
    443         | DECR unary_expression
    444                 { $$ = new CompositeExprNode2( build_opr1( OperatorNode::Decr, $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.
    445434        | SIZEOF unary_expression
    446                 { $$ = new CompositeExprNode2( build_sizeOf( $2 ) ); }
     435                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), $2 ); }
    447436        | SIZEOF '(' type_name_no_function ')'
    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 ) ) ); }
     437                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( $3 )); }
    451438        | ATTR_IDENTIFIER
    452                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ) ); }
     439                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 )); }
    453440        | ATTR_IDENTIFIER '(' type_name ')'
    454                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), new TypeValueNode( $3 ) ); }
     441                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), new TypeValueNode( $3 )); }
    455442        | ATTR_IDENTIFIER '(' argument_expression ')'
    456443                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 ), $3 ); }
    457444        | ALIGNOF unary_expression                                                      // GCC, variable alignment
    458                 { $$ = new CompositeExprNode2( build_alignOf( $2 ) ); }
     445                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), $2 ); }
    459446        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    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 
    465 ptrref_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; }
     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 )); }
    470450        ;
    471451
    472452unary_operator:
    473         '+'                                                                                     { $$ = new OperatorNode( OperatorNode::UnPlus ); }
     453        '&'                                                                                     { $$ = new OperatorNode( OperatorNode::AddressOf ); }
     454        | '+'                                                                           { $$ = new OperatorNode( OperatorNode::UnPlus ); }
    474455        | '-'                                                                           { $$ = new OperatorNode( OperatorNode::UnMinus ); }
    475         | '!'                                                                           { $$ = new OperatorNode( OperatorNode::Neg ); }
    476456        | '~'                                                                           { $$ = new OperatorNode( OperatorNode::BitNeg ); }
    477457        ;
     
    480460        unary_expression
    481461        | '(' type_name_no_function ')' cast_expression
    482                 { $$ = new CompositeExprNode2( build_cast( new TypeValueNode( $2 ), $4 ) ); }
     462                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
    483463        | '(' type_name_no_function ')' tuple
    484                 { $$ = new CompositeExprNode2( build_cast( new TypeValueNode( $2 ), $4 ) ); }
     464                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( $2 ), $4 ); }
    485465        ;
    486466
     
    488468        cast_expression
    489469        | multiplicative_expression '*' cast_expression
    490                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Mul, $1, $3 ) ); }
     470                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), $1, $3 ); }
    491471        | multiplicative_expression '/' cast_expression
    492                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Div, $1, $3 ) ); }
     472                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), $1, $3 ); }
    493473        | multiplicative_expression '%' cast_expression
    494                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Mod, $1, $3 ) ); }
     474                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), $1, $3 ); }
    495475        ;
    496476
     
    498478        multiplicative_expression
    499479        | additive_expression '+' multiplicative_expression
    500                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Plus, $1, $3 ) ); }
     480                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), $1, $3 ); }
    501481        | additive_expression '-' multiplicative_expression
    502                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Minus, $1, $3 ) ); }
     482                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), $1, $3 ); }
    503483        ;
    504484
     
    506486        additive_expression
    507487        | shift_expression LS additive_expression
    508                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::LShift, $1, $3 ) ); }
     488                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), $1, $3 ); }
    509489        | shift_expression RS additive_expression
    510                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::RShift, $1, $3 ) ); }
     490                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), $1, $3 ); }
    511491        ;
    512492
     
    514494        shift_expression
    515495        | relational_expression '<' shift_expression
    516                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::LThan, $1, $3 ) ); }
     496                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), $1, $3 ); }
    517497        | relational_expression '>' shift_expression
    518                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::GThan, $1, $3 ) ); }
     498                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), $1, $3 ); }
    519499        | relational_expression LE shift_expression
    520                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::LEThan, $1, $3 ) ); }
     500                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), $1, $3 ); }
    521501        | relational_expression GE shift_expression
    522                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::GEThan, $1, $3 ) ); }
     502                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), $1, $3 ); }
    523503        ;
    524504
     
    526506        relational_expression
    527507        | equality_expression EQ relational_expression
    528                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Eq, $1, $3 ) ); }
     508                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), $1, $3 ); }
    529509        | equality_expression NE relational_expression
    530                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Neq, $1, $3 ) ); }
     510                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), $1, $3 ); }
    531511        ;
    532512
     
    534514        equality_expression
    535515        | AND_expression '&' equality_expression
    536                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::BitAnd, $1, $3 ) ); }
     516                { $$ =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), $1, $3 ); }
    537517        ;
    538518
     
    540520        AND_expression
    541521        | exclusive_OR_expression '^' AND_expression
    542                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Xor, $1, $3 ) ); }
     522                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), $1, $3 ); }
    543523        ;
    544524
     
    546526        exclusive_OR_expression
    547527        | inclusive_OR_expression '|' exclusive_OR_expression
    548                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::BitOr, $1, $3 ) ); }
     528                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), $1, $3 ); }
    549529        ;
    550530
     
    552532        inclusive_OR_expression
    553533        | logical_AND_expression ANDAND inclusive_OR_expression
    554                 { $$ = new CompositeExprNode2( build_and_or( $1, $3, true ) ); }
     534                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::And ), $1, $3 ); }
    555535        ;
    556536
     
    558538        logical_AND_expression
    559539        | logical_OR_expression OROR logical_AND_expression
    560                 { $$ = new CompositeExprNode2( build_and_or( $1, $3, false ) ); }
     540                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), $1, $3 ); }
    561541        ;
    562542
     
    564544        logical_OR_expression
    565545        | logical_OR_expression '?' comma_expression ':' conditional_expression
    566                 { $$ = new CompositeExprNode2( build_cond( $1, $3, $5 ) ); }
     546                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*$1, *$3, *$5 ) ) ); }
    567547        | logical_OR_expression '?' /* empty */ ':' conditional_expression // GCC, omitted first operand
    568                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), $1, $4 ); }
     548                { $$=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), $1, $4 ); }
    569549        | logical_OR_expression '?' comma_expression ':' tuple // CFA, tuple expression
    570                 { $$ = new CompositeExprNode2( build_cond( $1, $3, $5 ) ); }
     550                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*$1, *$3, *$5 ) ) ); }
    571551        ;
    572552
     
    579559        conditional_expression
    580560        | unary_expression '=' assignment_expression
    581                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $3 ); }
     561                { $$ =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $3 ); }
    582562        | unary_expression assignment_operator assignment_expression
    583                 { $$ = new CompositeExprNode( $2, $1, $3 ); }
     563                { $$ =new CompositeExprNode( $2, $1, $3 ); }
    584564        | tuple assignment_opt                                                          // CFA, tuple expression
    585565                { $$ = ( $2 == 0 ) ? $1 : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), $1, $2 ); }
     
    627607        assignment_expression
    628608        | comma_expression ',' assignment_expression    // { $$ = (ExpressionNode *)$1->add_to_list( $3 ); }
    629         //{ $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), $1, $3 ); }
    630                 { $$ = new CompositeExprNode2( build_comma( $1, $3 ) ); }
     609                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), $1, $3 ); }
    631610        ;
    632611
     
    648627        | exception_statement
    649628        | 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                 }
    656629        ;
    657630
    658631labeled_statement:
    659                 // labels cannot be identifiers 0 or 1
    660         IDENTIFIER ':' attribute_list_opt statement
     632        no_attr_identifier ':' attribute_list_opt statement
    661633                {
    662634                        $$ = $4->add_label( $1 );
     
    686658                { $$ = new StatementNode( $1 ); }
    687659        | EXTENSION declaration                                                         // GCC
    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                 }
     660                { $$ = new StatementNode( $2 ); }
    693661        | function_definition
    694662                { $$ = new StatementNode( $1 ); }
     
    716684                { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
    717685        | SWITCH '(' comma_expression ')' '{' push declaration_list_opt switch_clause_list_opt '}' // CFA
    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                 }
     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.
    727690        | CHOOSE '(' comma_expression ')' case_clause           // CFA
    728                 { $$ = new StatementNode( StatementNode::Switch, $3, $5 ); }
     691                { $$ = new StatementNode( StatementNode::Choose, $3, $5 ); }
    729692        | CHOOSE '(' comma_expression ')' '{' push declaration_list_opt choose_clause_list_opt '}' // CFA
    730                 {
    731                         StatementNode *sw = new StatementNode( StatementNode::Switch, $3, $8 );
    732                         $$ = $7 != 0 ? new CompoundStmtNode( (StatementNode *)((new StatementNode( $7 ))->set_link( sw )) ) : sw;
    733                 }
     693                { $$ = new StatementNode( StatementNode::Choose, $3, $8 ); }
    734694        ;
    735695
     
    740700        constant_expression                                                     { $$ = $1; }
    741701        | constant_expression ELLIPSIS constant_expression      // GCC, subrange
    742                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Range, $1, $3 ) ); }
     702                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $1, $3 ); }
    743703        | subrange                                                                                      // CFA, subrange
    744704        ;
    745705
    746706case_value_list:                                                                                // CFA
    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 ) ) ); }
     707        case_value
     708        | case_value_list ',' case_value
     709                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( $1 ))->set_link( $3 ) ); }
    750710        ;
    751711
    752712case_label:                                                                                             // CFA
    753         CASE case_value_list ':'                                        { $$ = $2; }
     713        CASE case_value_list ':'                                        { $$ = new StatementNode( StatementNode::Case, $2, 0 ); }
    754714        | DEFAULT ':'                                                           { $$ = new StatementNode( StatementNode::Default ); }
    755715                // A semantic check is required to ensure only one default clause per switch/choose statement.
     
    762722
    763723case_clause:                                                                                    // CFA
    764         case_label_list statement                                       { $$ = $1->append_last_case( new CompoundStmtNode( $2 ) ); }
     724        case_label_list statement                                       { $$ = $1->append_last_case( $2 ); }
    765725        ;
    766726
     
    773733switch_clause_list:                                                                             // CFA
    774734        case_label_list statement_list
    775                 { $$ = $1->append_last_case( new CompoundStmtNode( $2 ) ); }
     735                { $$ = $1->append_last_case( $2 ); }
    776736        | switch_clause_list case_label_list statement_list
    777                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( new CompoundStmtNode( $3 ) ) ) ); }
     737                { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
    778738        ;
    779739
     
    788748                { $$ = $1->append_last_case( $2 ); }
    789749        | case_label_list statement_list fall_through_opt
    790                 { $$ = $1->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$2, *$3 ) ) ) ); }
     750                { $$ = $1->append_last_case((StatementNode *)mkList((*$2,*$3 ))); }
    791751        | choose_clause_list case_label_list fall_through
    792752                { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( $3 ))); }
    793753        | choose_clause_list case_label_list statement_list fall_through_opt
    794                 { $$ = (StatementNode *)( $1->set_link( $2->append_last_case( new CompoundStmtNode( (StatementNode *)mkList( (*$3, *$4 ) ) ) ) ) ); }
     754                { $$ = (StatementNode *)( $1->set_link( $2->append_last_case((StatementNode *)mkList((*$3,*$4 ))))); }
    795755        ;
    796756
    797757fall_through_opt:                                                                               // CFA
    798758        // empty
    799                 { $$ = new StatementNode( StatementNode::Break ); }     // insert implicit break
     759                { $$ = 0; }
    800760        | fall_through
    801761        ;
    802762
    803763fall_through:                                                                                   // CFA
    804         FALLTHRU
    805                 { $$ = 0; }
    806         | FALLTHRU ';'
    807                 { $$ = 0; }
     764        FALLTHRU                                                                        { $$ = new StatementNode( StatementNode::Fallthru ); }
     765        | FALLTHRU ';'                                                          { $$ = new StatementNode( StatementNode::Fallthru ); }
    808766        ;
    809767
     
    825783
    826784jump_statement:
    827         GOTO IDENTIFIER ';'
     785        GOTO no_attr_identifier ';'
    828786                { $$ = new StatementNode( StatementNode::Goto, $2 ); }
    829787        | GOTO '*' comma_expression ';'                                         // GCC, computed goto
    830                 // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3);
     788                // The syntax for the GCC computed goto violates normal expression precedence, e.g., goto *i+3; => goto *(i+3 );
    831789                // whereas normal operator precedence yields goto (*i)+3;
    832790                { $$ = new StatementNode( StatementNode::Goto, $3 ); }
     
    834792                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    835793                { $$ = new StatementNode( StatementNode::Continue ); }
    836         | CONTINUE IDENTIFIER ';'                                                       // CFA, multi-level continue
     794        | CONTINUE no_attr_identifier ';'                                       // CFA, multi-level continue
    837795                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    838796                // the target of the transfer appears only at the start of an iteration statement.
     
    841799                // A semantic check is required to ensure this statement appears only in the body of an iteration statement.
    842800                { $$ = new StatementNode( StatementNode::Break ); }
    843         | BREAK IDENTIFIER ';'                                                          // CFA, multi-level exit
     801        | BREAK no_attr_identifier ';'                                          // CFA, multi-level exit
    844802                // A semantic check is required to ensure this statement appears only in the body of an iteration statement, and
    845803                // the target of the transfer appears only at the start of an iteration statement.
     
    847805        | RETURN comma_expression_opt ';'
    848806                { $$ = new StatementNode( StatementNode::Return, $2, 0 ); }
    849         | THROW assignment_expression_opt ';'
     807        | THROW assignment_expression ';'
    850808                { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    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 ); }
     809        | THROW ';'
     810                { $$ = new StatementNode( StatementNode::Throw ); }
    859811        ;
    860812
     
    879831        | handler_clause CATCH '(' ELLIPSIS ')' compound_statement
    880832                { $$ = $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 ) ); }
    885833        ;
    886834
     
    889837                { $$ = StatementNode::newCatchStmt( $5, $8 ); }
    890838        | 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
    895839                { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
    896840        ;
     
    965909        ;
    966910
    967 asm_clobbers_list_opt:                                                                  // GCC
     911asm_clobbers_list_opt:                                                                          // GCC
    968912        // empty
    969913                { $$ = 0; }                                                                             // use default argument
     
    1043987        | new_function_declaration pop ';'
    1044988        | type_declaring_list pop ';'
    1045         | trait_specifier pop ';'
     989        | context_specifier pop ';'
    1046990        ;
    1047991
     
    1050994                {
    1051995                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1052                         $$ = $1->addInitializer( $2 );
     996                        $$ = $1;
    1053997                }
    1054998        | declaration_qualifier_list new_variable_specifier initializer_opt
     
    10571001                {
    10581002                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1059                         $$ = $2->addQualifiers( $1 )->addInitializer( $3 );;
     1003                        $$ = $2->addQualifiers( $1 );
    10601004                }
    10611005        | new_variable_declaration pop ',' push identifier_or_type_name initializer_opt
    10621006                {
    10631007                        typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
    1064                         $$ = $1->appendList( $1->cloneType( $5 )->addInitializer( $6 ) );
     1008                        $$ = $1->appendList( $1->cloneType( $5 ) );
    10651009                }
    10661010        ;
     
    13681312        | IMAGINARY                                                                                     // C99
    13691313                { $$ = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    1370         | VALIST                                                                                        // GCC, __builtin_va_list
    1371                 { $$ = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    13721314        ;
    13731315
     
    14571399aggregate_name:
    14581400        aggregate_key '{' field_declaration_list '}'
    1459                 { $$ = DeclarationNode::newAggregate( $1, 0, 0, $3, true ); }
     1401                { $$ = DeclarationNode::newAggregate( $1, 0, 0, $3 ); }
    14601402        | aggregate_key no_attr_identifier_or_type_name
    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 ); }
     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 ); }
    14691406        | aggregate_key '(' type_name_list ')' '{' field_declaration_list '}' // CFA
    1470                 { $$ = DeclarationNode::newAggregate( $1, 0, $3, $6, false ); }
     1407                { $$ = DeclarationNode::newAggregate( $1, 0, $3, $6 ); }
    14711408        | aggregate_key typegen_name                                            // CFA, S/R conflict
    14721409                { $$ = $2; }
     
    14811418
    14821419field_declaration_list:
    1483         // empty
    1484                 { $$ = 0; }
     1420        field_declaration
     1421                { $$ = $1; }
    14851422        | field_declaration_list field_declaration
    1486                 { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
     1423                { $$ = $1->appendList( $2 ); }
    14871424        ;
    14881425
     
    14901427        new_field_declaring_list ';'                                            // CFA, new style field declaration
    14911428        | EXTENSION new_field_declaring_list ';'                        // GCC
    1492                 { $$ = $2->set_extension( true ); }
     1429                { $$ = $2; }
    14931430        | field_declaring_list ';'
    14941431        | EXTENSION field_declaring_list ';'                            // GCC
    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                 }
     1432                { $$ = $2; }
    15001433        ;
    15011434
     
    15251458                // A semantic check is required to ensure bit_subrange only appears on base type int.
    15261459                { $$ = $1->addBitfield( $2 ); }
    1527         | variable_type_redeclarator bit_subrange_size_opt
     1460        | type_redeclarator bit_subrange_size_opt
    15281461                // A semantic check is required to ensure bit_subrange only appears on base type int.
    15291462                { $$ = $1->addBitfield( $2 ); }
     
    15501483        enum_key '{' enumerator_list comma_opt '}'
    15511484                { $$ = DeclarationNode::newEnum( 0, $3 ); }
     1485        | enum_key no_attr_identifier_or_type_name '{' enumerator_list comma_opt '}'
     1486                { $$ = DeclarationNode::newEnum( $2, $4 ); }
    15521487        | enum_key no_attr_identifier_or_type_name
    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 ); }
     1488                { $$ = DeclarationNode::newEnum( $2, 0 ); }
    15611489        ;
    15621490
     
    17261654        | '=' initializer
    17271655                { $$ = $2; }
    1728         | ATassign initializer
    1729                 { $$ = $2->set_maybeConstructed( false ); }
    17301656        ;
    17311657
     
    17361662
    17371663initializer_list:
    1738         // empty
    1739                 { $$ = 0; }
    1740         | initializer
     1664        initializer
    17411665        | designation initializer                                       { $$ = $2->set_designators( $1 ); }
    17421666        | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_link( $3 ) ); }
     
    17691693
    17701694designator:
    1771                 // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0 only ".0" and ".1"
    1772                 // allowed => semantic check
     1695        // only ".0" and ".1" allowed => semantic check
    17731696        FLOATINGconstant
    17741697                { $$ = new DesignatorNode( new VarRefNode( $1 ) ); }
     
    17811704                { $$ = new DesignatorNode( $3, true ); }
    17821705        | '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
    1783                 { $$ = new DesignatorNode( new CompositeExprNode2( build_opr2( OperatorNode::Range, $3, $5 ) ), true ); }
     1706                { $$ = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $3, $5 ), true ); }
    17841707        | '.' '[' push field_list pop ']'                                       // CFA, tuple field selector
    17851708                { $$ = new DesignatorNode( $4 ); }
     
    18421765
    18431766type_class:                                                                                             // CFA
    1844         OTYPE
     1767        TYPE
    18451768                { $$ = DeclarationNode::Type; }
    18461769        | DTYPE
     
    18541777                { $$ = 0; }
    18551778        | assertion_list_opt assertion
    1856                 { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
     1779                { $$ = $1 == 0 ? $2 : $1->appendList( $2 ); }
    18571780        ;
    18581781
     
    18601783        '|' no_attr_identifier_or_type_name '(' type_name_list ')'
    18611784                {
    1862                         typedefTable.openTrait( *$2 );
    1863                         $$ = DeclarationNode::newTraitUse( $2, $4 );
    1864                 }
    1865         | '|' '{' push trait_declaration_list '}'
     1785                        typedefTable.openContext( *$2 );
     1786                        $$ = DeclarationNode::newContextUse( $2, $4 );
     1787                }
     1788        | '|' '{' push context_declaration_list '}'
    18661789                { $$ = $4; }
    1867         | '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')'
     1790        | '|' '(' push type_parameter_list pop ')' '{' push context_declaration_list '}' '(' type_name_list ')'
    18681791                { $$ = 0; }
    18691792        ;
     
    18801803
    18811804type_declaring_list:                                                                    // CFA
    1882         OTYPE type_declarator
    1883                 { $$ = $2; }
    1884         | storage_class_list OTYPE type_declarator
     1805        TYPE type_declarator
     1806                { $$ = $2; }
     1807        | storage_class_list TYPE type_declarator
    18851808                { $$ = $3->addQualifiers( $1 ); }
    18861809        | type_declaring_list ',' type_declarator
     
    19081831        ;
    19091832
    1910 trait_specifier:                                                                                // CFA
    1911         TRAIT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}'
     1833context_specifier:                                                                              // CFA
     1834        CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}'
    19121835                {
    19131836                        typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
    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 );
     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 );
    19191842                        typedefTable.enterScope();
    19201843                }
    1921           trait_declaration_list '}'
    1922                 {
    1923                         typedefTable.leaveTrait();
     1844          context_declaration_list '}'
     1845                {
     1846                        typedefTable.leaveContext();
    19241847                        typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
    1925                         $$ = DeclarationNode::newTrait( $2, $5, $10 );
    1926                 }
    1927         ;
    1928 
    1929 trait_declaration_list:                                                         // CFA
    1930         trait_declaration
    1931         | trait_declaration_list push trait_declaration
     1848                        $$ = DeclarationNode::newContext( $2, $5, $10 );
     1849                }
     1850        ;
     1851
     1852context_declaration_list:                                                               // CFA
     1853        context_declaration
     1854        | context_declaration_list push context_declaration
    19321855                { $$ = $1->appendList( $3 ); }
    19331856        ;
    19341857
    1935 trait_declaration:                                                                      // CFA
    1936         new_trait_declaring_list pop ';'
    1937         | trait_declaring_list pop ';'
    1938         ;
    1939 
    1940 new_trait_declaring_list:                                                               // CFA
     1858context_declaration:                                                                    // CFA
     1859        new_context_declaring_list pop ';'
     1860        | context_declaring_list pop ';'
     1861        ;
     1862
     1863new_context_declaring_list:                                                             // CFA
    19411864        new_variable_specifier
    19421865                {
     
    19491872                        $$ = $1;
    19501873                }
    1951         | new_trait_declaring_list pop ',' push identifier_or_type_name
     1874        | new_context_declaring_list pop ',' push identifier_or_type_name
    19521875                {
    19531876                        typedefTable.addToEnclosingScope2( *$5, TypedefTable::ID );
     
    19561879        ;
    19571880
    1958 trait_declaring_list:                                                                   // CFA
     1881context_declaring_list:                                                                 // CFA
    19591882        type_specifier declarator
    19601883                {
     
    19621885                        $$ = $2->addType( $1 );
    19631886                }
    1964         | trait_declaring_list pop ',' push declarator
     1887        | context_declaring_list pop ',' push declarator
    19651888                {
    19661889                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    20131936                }
    20141937        | EXTENSION external_definition
    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                 }
     1938                { $$ = $2; }
    20201939        ;
    20211940
     
    20231942        function_definition
    20241943                // These rules are a concession to the "implicit int" type_specifier because there is a significant amount of
    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)
     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)
    20291947        | function_declarator compound_statement
    20301948                {
     
    21042022declarator:
    21052023        variable_declarator
    2106         | variable_type_redeclarator
    21072024        | function_declarator
     2025        | type_redeclarator
    21082026        ;
    21092027
    21102028subrange:
    21112029        constant_expression '~' constant_expression                     // CFA, integer subrange
    2112                 { $$ = new CompositeExprNode2( build_opr2( OperatorNode::Range, $1, $3 ) ); }
     2030                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), $1, $3 ); }
    21132031        ;
    21142032
     
    22052123
    22062124variable_ptr:
    2207         ptrref_operator variable_declarator
     2125        '*' variable_declarator
    22082126                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2209         | ptrref_operator type_qualifier_list variable_declarator
     2127        | '*' type_qualifier_list variable_declarator
    22102128                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    22112129        | '(' variable_ptr ')'
     
    22312149        ;
    22322150
    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.
     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.
    22362155
    22372156function_declarator:
     
    22532172
    22542173function_ptr:
    2255         ptrref_operator function_declarator
     2174        '*' function_declarator
    22562175                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2257         | ptrref_operator type_qualifier_list function_declarator
     2176        | '*' type_qualifier_list function_declarator
    22582177                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    22592178        | '(' function_ptr ')'
     
    22902209
    22912210old_function_ptr:
    2292         ptrref_operator old_function_declarator
     2211        '*' old_function_declarator
    22932212                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2294         | ptrref_operator type_qualifier_list old_function_declarator
     2213        | '*' type_qualifier_list old_function_declarator
    22952214                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    22962215        | '(' old_function_ptr ')'
     
    23172236// and functions versus pointers to arrays and functions.
    23182237
    2319 variable_type_redeclarator:
     2238type_redeclarator:
    23202239        paren_type attribute_list_opt
    23212240                { $$ = $1->addQualifiers( $2 ); }
     
    23342253
    23352254type_ptr:
    2336         ptrref_operator variable_type_redeclarator
     2255        '*' type_redeclarator
    23372256                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2338         | ptrref_operator type_qualifier_list variable_type_redeclarator
     2257        | '*' type_qualifier_list type_redeclarator
    23392258                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    23402259        | '(' type_ptr ')'
     
    23782297
    23792298identifier_parameter_ptr:
    2380         ptrref_operator identifier_parameter_declarator
     2299        '*' identifier_parameter_declarator
    23812300                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2382         | ptrref_operator type_qualifier_list identifier_parameter_declarator
     2301        | '*' type_qualifier_list identifier_parameter_declarator
    23832302                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    23842303        | '(' identifier_parameter_ptr ')'
     
    24192338//              not as redundant parentheses around the identifier."
    24202339//
    2421 // For example:
     2340// which precludes the following cases:
    24222341//
    24232342//              typedef float T;
     
    24562375
    24572376type_parameter_ptr:
    2458         ptrref_operator type_parameter_redeclarator
     2377        '*' type_parameter_redeclarator
    24592378                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2460         | ptrref_operator type_qualifier_list type_parameter_redeclarator
     2379        | '*' type_qualifier_list type_parameter_redeclarator
    24612380                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    24622381        | '(' type_parameter_ptr ')'
     
    24962415
    24972416abstract_ptr:
    2498         ptrref_operator
     2417        '*'
    24992418                { $$ = DeclarationNode::newPointer( 0 ); }
    2500         | ptrref_operator type_qualifier_list
     2419        | '*' type_qualifier_list
    25012420                { $$ = DeclarationNode::newPointer( $2 ); }
    2502         | ptrref_operator abstract_declarator
     2421        | '*' abstract_declarator
    25032422                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2504         | ptrref_operator type_qualifier_list abstract_declarator
     2423        | '*' type_qualifier_list abstract_declarator
    25052424                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    25062425        | '(' abstract_ptr ')'
     
    25652484
    25662485abstract_parameter_ptr:
    2567         ptrref_operator
     2486        '*'
    25682487                { $$ = DeclarationNode::newPointer( 0 ); }
    2569         | ptrref_operator type_qualifier_list
     2488        | '*' type_qualifier_list
    25702489                { $$ = DeclarationNode::newPointer( $2 ); }
    2571         | ptrref_operator abstract_parameter_declarator
     2490        | '*' abstract_parameter_declarator
    25722491                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2573         | ptrref_operator type_qualifier_list abstract_parameter_declarator
     2492        | '*' type_qualifier_list abstract_parameter_declarator
    25742493                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    25752494        | '(' abstract_parameter_ptr ')'
     
    26432562
    26442563variable_abstract_ptr:
    2645         ptrref_operator
     2564        '*'
    26462565                { $$ = DeclarationNode::newPointer( 0 ); }
    2647         | ptrref_operator type_qualifier_list
     2566        | '*' type_qualifier_list
    26482567                { $$ = DeclarationNode::newPointer( $2 ); }
    2649         | ptrref_operator variable_abstract_declarator
     2568        | '*' variable_abstract_declarator
    26502569                { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }
    2651         | ptrref_operator type_qualifier_list variable_abstract_declarator
     2570        | '*' type_qualifier_list variable_abstract_declarator
    26522571                { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }
    26532572        | '(' variable_abstract_ptr ')'
     
    26882607
    26892608new_identifier_parameter_ptr:                                                   // CFA
    2690         ptrref_operator type_specifier
     2609        '*' type_specifier
    26912610                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2692         | type_qualifier_list ptrref_operator type_specifier
     2611        | type_qualifier_list '*' type_specifier
    26932612                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2694         | ptrref_operator new_abstract_function
     2613        | '*' new_abstract_function
    26952614                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2696         | type_qualifier_list ptrref_operator new_abstract_function
     2615        | type_qualifier_list '*' new_abstract_function
    26972616                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2698         | ptrref_operator new_identifier_parameter_declarator_tuple
     2617        | '*' new_identifier_parameter_declarator_tuple
    26992618                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2700         | type_qualifier_list ptrref_operator new_identifier_parameter_declarator_tuple
     2619        | type_qualifier_list '*' new_identifier_parameter_declarator_tuple
    27012620                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    27022621        ;
     
    27752694
    27762695new_abstract_ptr:                                                                               // CFA
    2777         ptrref_operator type_specifier
     2696        '*' type_specifier
    27782697                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2779         | type_qualifier_list ptrref_operator type_specifier
     2698        | type_qualifier_list '*' type_specifier
    27802699                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2781         | ptrref_operator new_abstract_function
     2700        | '*' new_abstract_function
    27822701                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2783         | type_qualifier_list ptrref_operator new_abstract_function
     2702        | type_qualifier_list '*' new_abstract_function
    27842703                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    2785         | ptrref_operator new_abstract_declarator_tuple
     2704        | '*' new_abstract_declarator_tuple
    27862705                { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    2787         | type_qualifier_list ptrref_operator new_abstract_declarator_tuple
     2706        | type_qualifier_list '*' new_abstract_declarator_tuple
    27882707                { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }
    27892708        ;
     
    28522771        std::cout << "Error ";
    28532772        if ( yyfilename ) {
    2854                 std::cout << "in file " << yyfilename << " ";
     2773            std::cout << "in file " << yyfilename << " ";
    28552774        } // if
    28562775        std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
  • src/ResolvExpr/AdjustExprType.cc

    r242d458 r679864e1  
    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 : Wed Mar  2 17:34:53 2016
    13 // Update Count     : 4
    14 //
     12// Last Modified On : Sat May 16 23:54:02 2015
     13// Update Count     : 3
     14// 
    1515
    1616#include "typeops.h"
     
    3333                virtual Type* mutate( UnionInstType *aggregateUseType );
    3434                virtual Type* mutate( EnumInstType *aggregateUseType );
    35                 virtual Type* mutate( TraitInstType *aggregateUseType );
     35                virtual Type* mutate( ContextInstType *aggregateUseType );
    3636                virtual Type* mutate( TypeInstType *aggregateUseType );
    3737                virtual Type* mutate( TupleType *tupleType );
    38                 virtual Type* mutate( VarArgsType *varArgsType );
    3938
    4039                const TypeEnvironment &env;
     
    6564
    6665        Type *AdjustExprType::mutate( ArrayType *arrayType ) {
    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 ) );
     66                PointerType *pointerType = new PointerType( arrayType->get_qualifiers(), arrayType->get_base()->clone() );
    6967                delete arrayType;
    7068                return pointerType;
     
    8886        }
    8987
    90         Type *AdjustExprType::mutate( TraitInstType *aggregateUseType ) {
     88        Type *AdjustExprType::mutate( ContextInstType *aggregateUseType ) {
    9189                return aggregateUseType;
    9290        }
     
    113111                return tupleType;
    114112        }
    115 
    116         Type *AdjustExprType::mutate( VarArgsType *varArgsType ) {
    117                 return varArgsType;
    118         }
    119113} // namespace ResolvExpr
    120114
  • src/ResolvExpr/Alternative.cc

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

    r242d458 r679864e1  
    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 : Mon Jul  4 17:02:51 2016
    13 // Update Count     : 29
     12// Last Modified On : Fri Jul  3 17:58:39 2015
     13// Update Count     : 22
    1414//
    1515
     
    1919#include <functional>
    2020#include <cassert>
    21 #include <unordered_map>
    22 #include <utility>
    23 #include <vector>
    2421
    2522#include "AlternativeFinder.h"
     
    4138#include "Tuples/TupleAssignment.h"
    4239#include "Tuples/NameMatcher.h"
    43 #include "Common/utility.h"
    44 #include "InitTweak/InitTweak.h"
     40#include "utility.h"
    4541
    4642extern bool resolvep;
    47 #define PRINT( text ) if ( resolvep ) { text }
     43#define PRINT( text ) if ( resolvep ) { text } 
    4844//#define DEBUG_COST
    4945
     
    111107                                        if ( candidate->cost < mapPlace->second.candidate->cost ) {
    112108                                                PRINT(
    113                                                         std::cerr << "cost " << candidate->cost << " beats " << mapPlace->second.candidate->cost << std::endl;
     109                                                        std::cout << "cost " << candidate->cost << " beats " << mapPlace->second.candidate->cost << std::endl;
    114110                                                )
    115111                                                selected[ mangleName ] = current;
    116112                                        } else if ( candidate->cost == mapPlace->second.candidate->cost ) {
    117113                                                PRINT(
    118                                                         std::cerr << "marking ambiguous" << std::endl;
     114                                                        std::cout << "marking ambiguous" << std::endl;
    119115                                                )
    120116                                                mapPlace->second.isAmbiguous = true;
     
    126122
    127123                        PRINT(
    128                                 std::cerr << "there are " << selected.size() << " alternatives before elimination" << std::endl;
     124                                std::cout << "there are " << selected.size() << " alternatives before elimination" << std::endl;
    129125                        )
    130126
     
    186182                        begin++;
    187183                        PRINT(
    188                                 std::cerr << "findSubExprs" << std::endl;
    189                                 printAlts( finder.alternatives, std::cerr );
     184                                std::cout << "findSubExprs" << std::endl;
     185                                printAlts( finder.alternatives, std::cout );
    190186                        )
    191187                        *out++ = finder;
     
    208204                }
    209205                PRINT(
    210                         std::cerr << "alternatives before prune:" << std::endl;
    211                         printAlts( alternatives, std::cerr );
     206                        std::cout << "alternatives before prune:" << std::endl;
     207                        printAlts( alternatives, std::cout );
    212208                )
    213209                AltList::iterator oldBegin = alternatives.begin();
     
    225221                alternatives.erase( oldBegin, alternatives.end() );
    226222                PRINT(
    227                         std::cerr << "there are " << alternatives.size() << " alternatives after elimination" << std::endl;
     223                        std::cout << "there are " << alternatives.size() << " alternatives after elimination" << std::endl;
    228224                )
    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
    234225        }
    235226
     
    270261                for ( std::list< Expression* >::iterator actualExpr = actuals.begin(); actualExpr != actuals.end(); ++actualExpr ) {
    271262                        PRINT(
    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 );
     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 );
    276267                        )
    277268                        std::list< DeclarationWithType* >::iterator startFormal = formal;
     
    287278                                }
    288279                                PRINT(
    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 );
     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 );
    293284                                )
    294285                                Cost newCost = conversionCost( *actual, (*formal)->get_type(), indexer, alt.env );
    295286                                PRINT(
    296                                         std::cerr << std::endl << "cost is" << newCost << std::endl;
     287                                        std::cout << std::endl << "cost is" << newCost << std::endl;
    297288                                )
    298289
     
    332323                for ( InferredParams::const_iterator assert = appExpr->get_inferParams().begin(); assert != appExpr->get_inferParams().end(); ++assert ) {
    333324                        PRINT(
    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 );
     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 );
    338329                                )
    339330                                Cost newCost = conversionCost( assert->second.actualType, assert->second.formalType, indexer, alt.env );
    340331                        PRINT(
    341                                 std::cerr << std::endl << "cost of conversion is " << newCost << std::endl;
     332                                std::cout << std::endl << "cost of conversion is " << newCost << std::endl;
    342333                                )
    343334                                if ( newCost == Cost::infinity ) {
     
    416407        }
    417408
    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
     409        static const int recursionLimit = 10;
    423410
    424411        void addToIndexer( AssertionSet &assertSet, SymTab::Indexer &indexer ) {
     
    429416                }
    430417        }
    431        
     418
    432419        template< typename ForwardIterator, typename OutputIterator >
    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 ) {
     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 ) {
    435421                if ( begin == end ) {
    436422                        if ( newNeed.empty() ) {
     
    445431                                        printAssertionSet( newNeed, std::cerr, 8 );
    446432                                )
    447                                 inferRecursive( newNeed.begin(), newNeed.end(), newAlt, openVars, decls, newerNeed, /*needParents,*/ level+1, indexer, out );
     433                                inferRecursive( newNeed.begin(), newNeed.end(), newAlt, openVars, decls, newerNeed, level+1, indexer, out );
    448434                                return;
    449435                        }
     
    452438                ForwardIterator cur = begin++;
    453439                if ( ! cur->second ) {
    454                         inferRecursive( begin, end, newAlt, openVars, decls, newNeed, /*needParents,*/ level, indexer, out );
     440                        inferRecursive( begin, end, newAlt, openVars, decls, newNeed, level, indexer, out );
    455441                }
    456442                DeclarationWithType *curDecl = cur->first;
     
    462448                std::list< DeclarationWithType* > candidates;
    463449                decls.lookupId( curDecl->get_name(), candidates );
    464 ///   if ( candidates.empty() ) { std::cerr << "no candidates!" << std::endl; }
     450///   if ( candidates.empty() ) { std::cout << "no candidates!" << std::endl; }
    465451                for ( std::list< DeclarationWithType* >::const_iterator candidate = candidates.begin(); candidate != candidates.end(); ++candidate ) {
    466452                        PRINT(
    467                                 std::cerr << "inferRecursive: candidate is ";
    468                                 (*candidate)->print( std::cerr );
    469                                 std::cerr << std::endl;
     453                                std::cout << "inferRecursive: candidate is ";
     454                                (*candidate)->print( std::cout );
     455                                std::cout << std::endl;
    470456                        )
    471                        
    472457                        AssertionSet newHave, newerNeed( newNeed );
    473458                        TypeEnvironment newEnv( newAlt.env );
     
    492477                                newerAlt.env = newEnv;
    493478                                assert( (*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 );
     479                                Expression *varExpr = new VariableExpr( static_cast< DeclarationWithType* >( Declaration::declFromId( (*candidate)->get_uniqueId() ) ) );
    500480                                deleteAll( varExpr->get_results() );
    501481                                varExpr->get_results().clear();
    502482                                varExpr->get_results().push_front( adjType->clone() );
    503483                                PRINT(
    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;
     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;
    509489                                )
    510490                                ApplicationExpr *appExpr = static_cast< ApplicationExpr* >( newerAlt.expr );
    511491                                // XXX: this is a memory leak, but adjType can't be deleted because it might contain assertions
    512492                                appExpr->get_inferParams()[ curDecl->get_uniqueId() ] = ParamEntry( (*candidate)->get_uniqueId(), adjType->clone(), curDecl->get_type()->clone(), varExpr );
    513                                 inferRecursive( begin, end, newerAlt, newOpenVars, newDecls, newerNeed, /*newNeedParents,*/ level, indexer, out );
     493                                inferRecursive( begin, end, newerAlt, newOpenVars, newDecls, newerNeed, level, indexer, out );
    514494                        } else {
    515495                                delete adjType;
     
    521501        void AlternativeFinder::inferParameters( const AssertionSet &need, AssertionSet &have, const Alternative &newAlt, OpenVarSet &openVars, OutputIterator out ) {
    522502//      PRINT(
    523 //          std::cerr << "inferParameters: assertions needed are" << std::endl;
    524 //          printAll( need, std::cerr, 8 );
     503//          std::cout << "inferParameters: assertions needed are" << std::endl;
     504//          printAll( need, std::cout, 8 );
    525505//          )
    526506                SymTab::Indexer decls( indexer );
    527507                PRINT(
    528                         std::cerr << "============= original indexer" << std::endl;
    529                         indexer.print( std::cerr );
    530                         std::cerr << "============= new indexer" << std::endl;
    531                         decls.print( std::cerr );
     508                        std::cout << "============= original indexer" << std::endl;
     509                        indexer.print( std::cout );
     510                        std::cout << "============= new indexer" << std::endl;
     511                        decls.print( std::cout );
    532512                )
    533513                addToIndexer( have, decls );
    534514                AssertionSet newNeed;
    535                 //AssertionParentSet needParents;
    536                 inferRecursive( need.begin(), need.end(), newAlt, openVars, decls, newNeed, /*needParents,*/ 0, indexer, out );
     515                inferRecursive( need.begin(), need.end(), newAlt, openVars, decls, newNeed, 0, indexer, out );
    537516//      PRINT(
    538 //          std::cerr << "declaration 14 is ";
     517//          std::cout << "declaration 14 is ";
    539518//          Declaration::declFromId
    540519//          *out++ = newAlt;
     
    553532                        makeExprList( actualAlt, appExpr->get_args() );
    554533                        PRINT(
    555                                 std::cerr << "need assertions:" << std::endl;
    556                                 printAssertionSet( resultNeed, std::cerr, 8 );
     534                                std::cout << "need assertions:" << std::endl;
     535                                printAssertionSet( resultNeed, std::cout, 8 );
    557536                        )
    558537                        inferParameters( resultNeed, resultHave, newAlt, openVars, out );
     
    564543                AlternativeFinder funcOpFinder( indexer, env );
    565544
    566                 AlternativeFinder funcFinder( indexer, env );
    567 
    568                 {
    569                         std::string fname = InitTweak::getFunctionName( untypedExpr );
    570                         if ( fname == "&&" ) {
     545                AlternativeFinder funcFinder( indexer, env ); {
     546                        NameExpr *fname = 0;;
     547                        if ( ( fname = dynamic_cast<NameExpr *>( untypedExpr->get_function()))
     548                                 && ( fname->get_name() == std::string("&&")) ) {
    571549                                VoidType v = Type::Qualifiers();                // resolve to type void *
    572550                                PointerType pt( Type::Qualifiers(), v.clone() );
     
    592570
    593571                AltList candidates;
    594                 SemanticError errors;
    595572
    596573                for ( AltList::const_iterator func = funcFinder.alternatives.begin(); func != funcFinder.alternatives.end(); ++func ) {
    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
     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
    619594                                                } // if
    620595                                        } // 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                                                 )
     596                                } // 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
    635606                                        }
    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
     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
    650625                                                } // if
    651                                         } // for
    652                                 } // if
    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; }
     626                                        } // if
     627                                } // for
     628                        } // if
     629                } // for
    660630
    661631                for ( AltList::iterator withFunc = candidates.begin(); withFunc != candidates.end(); ++withFunc ) {
     
    669639                                FunctionType *function = dynamic_cast< FunctionType* >( pointer->get_base() );
    670640                                assert( function );
    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;
     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;
    679649                        )
    680650                        if ( cvtCost != Cost::infinity ) {
     
    728698                        std::list< Type* >::iterator candidate_end = (*i).expr->get_results().begin();
    729699                        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 );
    734700                        Cost thisCost = castCostList( (*i).expr->get_results().begin(), candidate_end,
    735                                                                                   castExpr->get_results().begin(), castExpr->get_results().end(),
    736                                                                                   indexer, i->env );
     701                                                                                  castExpr->get_results().begin(), castExpr->get_results().end(), indexer, i->env );
    737702                        if ( thisCost != Cost::infinity ) {
    738703                                // count one safe conversion for each value that is thrown away
     
    822787        }
    823788
    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 
    874789        void AlternativeFinder::resolveAttr( DeclarationWithType *funcDecl, FunctionType *function, Type *argType, const TypeEnvironment &env ) {
    875790                // assume no polymorphism
     
    877792                assert( function->get_parameters().size() == 1 );
    878793                PRINT(
    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;
     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;
    884799                )
    885800                if ( typesCompatibleIgnoreQualifiers( argType, function->get_parameters().front()->get_type(), indexer, env ) ) {
     
    1002917                } // for
    1003918        }
    1004 
    1005         void AlternativeFinder::visit( ImplicitCopyCtorExpr * impCpCtorExpr ) {
    1006                 alternatives.push_back( Alternative( impCpCtorExpr->clone(), env, Cost::zero ) );
    1007         }
    1008919} // namespace ResolvExpr
    1009920
  • src/ResolvExpr/AlternativeFinder.h

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // AlternativeFinder.h --
     7// AlternativeFinder.h -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sat May 16 23:56:12 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Apr 19 11:44:53 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Sat May 16 23:58:43 2015
    1313// Update Count     : 2
    14 //
     14// 
    1515
    1616#ifndef ALTERNATIVEFINDER_H
     
    5454                virtual void visit( NameExpr *variableExpr );
    5555                virtual void visit( VariableExpr *variableExpr );
    56                 virtual void visit( ConstantExpr *constantExpr );
     56                virtual void visit( ConstantExpr *constantExpr ); 
    5757                virtual void visit( SizeofExpr *sizeofExpr );
    58                 virtual void visit( AlignofExpr *alignofExpr );
    59                 virtual void visit( UntypedOffsetofExpr *offsetofExpr );
    60                 virtual void visit( OffsetofExpr *offsetofExpr );
    61                 virtual void visit( OffsetPackExpr *offsetPackExpr );
    6258                virtual void visit( AttrExpr *attrExpr );
    6359                virtual void visit( LogicalExpr *logicalExpr );
     
    6561                virtual void visit( CommaExpr *commaExpr );
    6662                virtual void visit( TupleExpr *tupleExpr );
    67                 virtual void visit( ImplicitCopyCtorExpr * impCpCtorExpr );
    6863          public:  // xxx - temporary hack - should make Tuples::TupleAssignment a friend
    6964                template< typename InputIterator, typename OutputIterator >
     
    7166
    7267          private:
    73                 /// Adds alternatives for member expressions, given the aggregate, conversion cost for that aggregate, and name of the member
    7468                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 );
    7769                bool instantiateFunction( std::list< DeclarationWithType* >& formals, /*const*/ AltList &actuals, bool isVarArgs, OpenVarSet& openVars, TypeEnvironment &resultEnv, AssertionSet &resultNeed, AssertionSet &resultHave );
    7870                template< typename OutputIterator >
  • src/ResolvExpr/AlternativePrinter.cc

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

    r242d458 r679864e1  
    1010// Created On       : Sun May 17 06:57:43 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Feb  2 15:34:36 2016
    13 // Update Count     : 7
     12// Last Modified On : Sun May 17 06:59:10 2015
     13// Update Count     : 2
    1414//
    1515
     
    5656                                return Cost::infinity;
    5757                        } else {
    58                                 // xxx - why are we adding cost 0 here?
    5958                                return converter.get_cost() + Cost( 0, 0, 0 );
    6059                        } // if
     
    6968                PointerType *destAsPointer = dynamic_cast< PointerType* >( dest );
    7069                if ( destAsPointer && basicType->isInteger() ) {
    71                         // necessary for, e.g. unsigned long => void*
    7270                        cost = Cost( 1, 0, 0 );
    7371                } else {
     
    8482                                newEnv.add( pointerType->get_forall() );
    8583                                newEnv.add( pointerType->get_base()->get_forall() );
    86                                 int castResult = ptrsCastable( pointerType->get_base(), destAsPtr->get_base(), newEnv, indexer );
    87                                 if ( castResult > 0 ) {
     84                                int assignResult = ptrsCastable( pointerType->get_base(), destAsPtr->get_base(), newEnv, indexer );
     85                                if ( assignResult > 0 ) {
    8886                                        cost = Cost( 0, 0, 1 );
    89                                 } else if ( castResult < 0 ) {
    90                                         cost = Cost::infinity;
     87                                } else if ( assignResult < 0 ) {
     88                                        cost = Cost( 1, 0, 0 );
    9189                                } // if
    9290                        } // if
    9391                } else if ( BasicType *destAsBasic = dynamic_cast< BasicType* >( dest ) ) {
    9492                        if ( destAsBasic->isInteger() ) {
    95                                 // necessary for, e.g. void* => unsigned long
    9693                                cost = Cost( 1, 0, 0 );
    9794                        } // if
  • src/ResolvExpr/CommonType.cc

    r242d458 r679864e1  
    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 : Wed Mar  2 17:35:34 2016
    13 // Update Count     : 3
     12// Last Modified On : Sun May 17 07:04:50 2015
     13// Update Count     : 2
    1414//
    1515
     
    3535                virtual void visit( UnionInstType *aggregateUseType );
    3636                virtual void visit( EnumInstType *aggregateUseType );
    37                 virtual void visit( TraitInstType *aggregateUseType );
     37                virtual void visit( ContextInstType *aggregateUseType );
    3838                virtual void visit( TypeInstType *aggregateUseType );
    3939                virtual void visit( TupleType *tupleType );
    40                 virtual void visit( VarArgsType *varArgsType );
    4140
    4241                template< typename RefType > void handleRefType( RefType *inst, Type *other );
     
    134133                                result = new BasicType( basicType->get_qualifiers() + otherBasic->get_qualifiers(), newType );
    135134                        } // 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
    142135                } // if
    143136        }
     
    189182        }
    190183
    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 ) {
     184        void CommonType::visit( EnumInstType *aggregateUseType ) {
     185        }
     186
     187        void CommonType::visit( ContextInstType *aggregateUseType ) {
    202188        }
    203189
     
    227213        void CommonType::visit( TupleType *tupleType ) {
    228214        }
    229 
    230         void CommonType::visit( VarArgsType *varArgsType ) {
    231         }
    232215} // namespace ResolvExpr
    233216
  • src/ResolvExpr/ConversionCost.cc

    r242d458 r679864e1  
    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 : Wed Mar  2 17:35:46 2016
    13 // Update Count     : 6
     12// Last Modified On : Sun May 17 07:22:19 2015
     13// Update Count     : 4
    1414//
    1515
     
    157157                                cost = Cost( 0, 0, tableResult );
    158158                        } // if
    159                 } else if ( dynamic_cast< EnumInstType *>( dest ) ) {
    160                         // xxx - not positive this is correct, but appears to allow casting int => enum
    161                         cost = Cost( 1, 0, 0 );
    162     } // if
     159                } // if
    163160        }
    164161
     
    209206        }
    210207
    211         void ConversionCost::visit(TraitInstType *inst) {
     208        void ConversionCost::visit(ContextInstType *inst) {
    212209        }
    213210
     
    250247                } // if
    251248        }
    252 
    253         void ConversionCost::visit(VarArgsType *varArgsType) {
    254                 if ( dynamic_cast< VarArgsType* >( dest ) ) {
    255                         cost = Cost::zero;
    256                 }
    257         }
    258249} // namespace ResolvExpr
    259250
  • src/ResolvExpr/ConversionCost.h

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

    r242d458 r679864e1  
    1010// Created On       : Sun May 17 11:44:11 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:36:05 2016
    13 // Update Count     : 8
     12// Last Modified On : Sun May 17 11:47:36 2015
     13// Update Count     : 2
    1414//
    1515
     
    3535                virtual void visit( UnionInstType *inst );
    3636                virtual void visit( EnumInstType *inst );
    37                 virtual void visit( TraitInstType *inst );
     37                virtual void visit( ContextInstType *inst );
    3838                virtual void visit( TypeInstType *inst );
    3939                virtual void visit( TupleType *tupleType );
    40                 virtual void visit( VarArgsType *varArgsType );
    4140          private:
    4241                Type *dest;
     
    101100        }
    102101
    103         void PtrsAssignable::visit( TraitInstType *inst ) {
     102        void PtrsAssignable::visit( ContextInstType *inst ) {
    104103                // I definitely don't think we should be doing anything here
    105104        }
     
    107106        void PtrsAssignable::visit( TypeInstType *inst ) {
    108107                EqvClass eqvClass;
    109                 if ( env.lookup( inst->get_name(), eqvClass ) && eqvClass.type ) {
     108                if ( env.lookup( inst->get_name(), eqvClass ) ) {
    110109                        result = ptrsAssignable( eqvClass.type, dest, env );
    111110                } else {
     
    138137///   }
    139138        }
    140 
    141         void PtrsAssignable::visit( VarArgsType *varArgsType ) {
    142         }
    143139} // namespace ResolvExpr
    144140
  • src/ResolvExpr/PtrsCastable.cc

    r242d458 r679864e1  
    1010// Created On       : Sun May 17 11:48:00 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:36:18 2016
    13 // Update Count     : 8
     12// Last Modified On : Sun May 17 11:51:17 2015
     13// Update Count     : 2
    1414//
    1515
     
    3636                virtual void visit(UnionInstType *inst);
    3737                virtual void visit(EnumInstType *inst);
    38                 virtual void visit(TraitInstType *inst);
     38                virtual void visit(ContextInstType *inst);
    3939                virtual void visit(TypeInstType *inst);
    4040                virtual void visit(TupleType *tupleType);
    41                 virtual void visit(VarArgsType *varArgsType);
    4241          private:
    4342                Type *dest;
     
    116115
    117116        void PtrsCastable::visit(EnumInstType *inst) {
    118                 if ( dynamic_cast< EnumInstType* >( dest ) ) {
     117                if ( dynamic_cast< EnumInstType* >( inst ) ) {
    119118                        result = 1;
    120                 } else if ( BasicType *bt = dynamic_cast< BasicType* >( dest ) ) {
     119                } else if ( BasicType *bt = dynamic_cast< BasicType* >( inst ) ) {
    121120                        if ( bt->get_kind() == BasicType::SignedInt ) {
    122121                                result = 0;
     
    129128        }
    130129
    131         void PtrsCastable::visit(TraitInstType *inst) {
     130        void PtrsCastable::visit(ContextInstType *inst) {
    132131                // I definitely don't think we should be doing anything here
    133132        }
    134133
    135134        void PtrsCastable::visit(TypeInstType *inst) {
    136                 result = objectCast( inst, env, indexer ) > 0 && objectCast( dest, env, indexer ) > 0 ? 1 : -1;
     135                result = objectCast( inst, env, indexer ) && objectCast( dest, env, indexer ) ? 1 : -1;
    137136        }
    138137
    139138        void PtrsCastable::visit(TupleType *tupleType) {
    140                 result = objectCast( dest, env, indexer );
    141         }
    142 
    143         void PtrsCastable::visit(VarArgsType *varArgsType) {
    144139                result = objectCast( dest, env, indexer );
    145140        }
  • src/ResolvExpr/RenameVars.cc

    r242d458 r679864e1  
    1010// Created On       : Sun May 17 12:05:18 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:36:32 2016
    13 // Update Count     : 5
     12// Last Modified On : Mon Jun  8 14:51:35 2015
     13// Update Count     : 4
    1414//
    1515
     
    4545        void RenameVars::visit( PointerType *pointerType ) {
    4646                typeBefore( pointerType );
     47///   std::cout << "do pointer" << std::endl;
    4748                maybeAccept( pointerType->get_base(), *this );
     49///   std::cout << "done pointer" << std::endl;
    4850                typeAfter( pointerType );
    4951        }
     
    5860        void RenameVars::visit( FunctionType *functionType ) {
    5961                typeBefore( functionType );
     62///   std::cout << "return vals" << std::endl;
    6063                acceptAll( functionType->get_returnVals(), *this );
     64///   std::cout << functionType->get_parameters().size() << " parameters" << std::endl;
    6165                acceptAll( functionType->get_parameters(), *this );
     66///   std::cout << "done function" << std::endl;
    6267                typeAfter( functionType );
    6368        }
     
    8186        }
    8287
    83         void RenameVars::visit( TraitInstType *aggregateUseType ) {
     88        void RenameVars::visit( ContextInstType *aggregateUseType ) {
    8489                typeBefore( aggregateUseType );
    8590                acceptAll( aggregateUseType->get_parameters(), *this );
     
    9095        void RenameVars::visit( TypeInstType *instType ) {
    9196                typeBefore( instType );
     97///   std::cout << "instance of type " << instType->get_name() << std::endl;
    9298                std::map< std::string, std::string >::const_iterator i = mapStack.front().find( instType->get_name() );
    9399                if ( i != mapStack.front().end() ) {
     100///     std::cout << "found name " << i->second << std::endl;
    94101                        instType->set_name( i->second );
    95102                } else {
     103///     std::cout << "no name found" << std::endl;
    96104                } // if
    97105                acceptAll( instType->get_parameters(), *this );
     
    105113        }
    106114
    107         void RenameVars::visit( VarArgsType *varArgsType ) {
    108                 typeBefore( varArgsType );
    109                 typeAfter( varArgsType );
    110         }
    111 
    112115        void RenameVars::typeBefore( Type *type ) {
    113116                if ( ! type->get_forall().empty() ) {
     117///     std::cout << "type with forall: ";
     118///     type->print( std::cout );
     119///     std::cout << std::endl;
    114120                        // copies current name mapping into new mapping
    115121                        mapStack.push_front( mapStack.front() );
  • src/ResolvExpr/RenameVars.h

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

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Resolver.cc --
     7// Resolver.cc -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 12:17:01 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 17:45:42 2016
    13 // Update Count     : 204
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Sep 15 16:24:07 2015
     13// Update Count     : 181
    1414//
    1515
     
    2424#include "SynTree/Initializer.h"
    2525#include "SymTab/Indexer.h"
    26 #include "SymTab/Autogen.h"
    27 #include "Common/utility.h"
    28 #include "InitTweak/InitTweak.h"
     26#include "utility.h"
    2927
    3028#include <iostream>
     
    3533          public:
    3634                Resolver() : SymTab::Indexer( false ), switchType( 0 ) {}
    37 
     35 
    3836                virtual void visit( FunctionDecl *functionDecl );
    3937                virtual void visit( ObjectDecl *functionDecl );
    4038                virtual void visit( TypeDecl *typeDecl );
    41                 virtual void visit( EnumDecl * enumDecl );
    4239
    4340                virtual void visit( ArrayType * at );
    44                 virtual void visit( PointerType * at );
    4541
    4642                virtual void visit( ExprStmt *exprStmt );
     
    5147                virtual void visit( ForStmt *forStmt );
    5248                virtual void visit( SwitchStmt *switchStmt );
     49                virtual void visit( ChooseStmt *switchStmt );
    5350                virtual void visit( CaseStmt *caseStmt );
    5451                virtual void visit( BranchStmt *branchStmt );
     
    5754                virtual void visit( SingleInit *singleInit );
    5855                virtual void visit( ListInit *listInit );
    59                 virtual void visit( ConstructorInit *ctorInit );
    6056          private:
    6157        typedef std::list< Initializer * >::iterator InitIterator;
    6258
    63                 template< typename PtrType >
    64                 void handlePtrType( PtrType * type );
    65 
    6659          void resolveAggrInit( AggregateDecl *, InitIterator &, InitIterator & );
    6760          void resolveSingleAggrInit( Declaration *, InitIterator &, InitIterator & );
    68           void fallbackInit( ConstructorInit * ctorInit );
     61
    6962                std::list< Type * > functionReturn;
    7063                Type *initContext;
    7164                Type *switchType;
    72                 bool inEnumDecl = false;
    7365        };
    7466
     
    9082        }
    9183
    92 
    9384        namespace {
    9485                void finishExpr( Expression *expr, const TypeEnvironment &env ) {
     
    9687                        env.makeSubstitution( *expr->get_env() );
    9788                }
    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 {
     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 
    10998                Expression *findSingleExpression( Expression *untyped, const SymTab::Indexer &indexer ) {
    11099                        TypeEnvironment env;
     
    137126                        } // if
    138127                }
    139 
     128 
    140129                Expression *findIntegralExpression( Expression *untyped, const SymTab::Indexer &indexer ) {
    141130                        TypeEnvironment env;
     
    170159                        return newExpr;
    171160                }
    172 
    173         }
    174 
     161 
     162        }
     163 
    175164        void Resolver::visit( ObjectDecl *objectDecl ) {
    176165                Type *new_type = resolveTypeof( objectDecl->get_type(), *this );
    177166                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;
    184167                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                 }
    190168                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() );
     169        }
     170
     171        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() );
    202175                        Expression *newExpr = findSingleExpression( castExpr, *this );
    203                         delete type->get_dimension();
    204                         type->set_dimension( newExpr );
    205                 }
    206         }
    207 
    208         void Resolver::visit( ArrayType * at ) {
    209                 handlePtrType( at );
     176                        delete at->get_dimension();
     177                        at->set_dimension( newExpr );
     178                }
    210179                Visitor::visit( at );
    211         }
    212 
    213         void Resolver::visit( PointerType * pt ) {
    214                 handlePtrType( pt );
    215                 Visitor::visit( pt );
    216180        }
    217181
     
    241205        }
    242206
    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 
    251207        void Resolver::visit( ExprStmt *exprStmt ) {
    252208                if ( exprStmt->get_expr() ) {
     
    295251                        forStmt->set_condition( newExpr );
    296252                } // if
    297 
     253               
    298254                if ( forStmt->get_increment() ) {
    299255                        Expression * newExpr = findVoidExpression( forStmt->get_increment(), *this );
     
    309265                delete switchStmt->get_condition();
    310266                switchStmt->set_condition( newExpr );
    311 
     267 
    312268                visitor.Visitor::visit( switchStmt );
    313269        }
    314270
    315271        void Resolver::visit( SwitchStmt *switchStmt ) {
     272                handleSwitchStmt( switchStmt, *this );
     273        }
     274
     275        void Resolver::visit( ChooseStmt *switchStmt ) {
    316276                handleSwitchStmt( switchStmt, *this );
    317277        }
     
    347307        bool isCharType( T t ) {
    348308                if ( BasicType * bt = dynamic_cast< BasicType * >( t ) ) {
    349                         return bt->get_kind() == BasicType::Char || bt->get_kind() == BasicType::SignedChar ||
     309                        return bt->get_kind() == BasicType::Char || bt->get_kind() == BasicType::SignedChar || 
    350310                                bt->get_kind() == BasicType::UnsignedChar;
    351311                }
     
    359319                                string n = ne->get_name();
    360320                                if (n == "0") {
    361                                         initContext = new BasicType(Type::Qualifiers(),
     321                                        initContext = new BasicType(Type::Qualifiers(), 
    362322                                                                                                BasicType::SignedInt);
    363323                                } else {
    364                                         DeclarationWithType * decl = lookupId( n );
     324                                        DeclarationWithType * decl = lookupId(n);
    365325                                        initContext = decl->get_type();
    366326                                }
    367                         } else if (ConstantExpr * e =
     327                        } else if (ConstantExpr * e = 
    368328                                           dynamic_cast<ConstantExpr*>(singleInit->get_value())) {
    369329                                Constant *c = e->get_constant();
     
    384344                                        if ( PointerType * pt = dynamic_cast< PointerType *>( newExpr->get_results().front() ) ) {
    385345                                                if ( isCharType( pt->get_base() ) ) {
    386                                                         // strip cast if we're initializing a char[] with a char *, e.g.  char x[] = "hello";
     346                                                        // strip cast if we're initializing a char[] with a char *, e.g.
     347                                                        // char x[] = "hello";
    387348                                                        CastExpr *ce = dynamic_cast< CastExpr * >( newExpr );
    388349                                                        singleInit->set_value( ce->get_arg() );
    389350                                                        ce->set_arg( NULL );
    390                                                         delete ce;
     351                                                        delete ce;                                                                     
    391352                                                }
    392353                                        }
     
    435396
    436397        void Resolver::visit( ListInit * listInit ) {
    437                 InitIterator iter = listInit->begin();
    438                 InitIterator end = listInit->end();
     398                InitIterator iter = listInit->begin_initializers();
     399                InitIterator end = listInit->end_initializers();
    439400
    440401                if ( ArrayType * at = dynamic_cast< ArrayType * >( initContext ) ) {
     
    449410                        resolveAggrInit( st->get_baseUnion(), iter, end );
    450411                } else if ( TypeInstType * tt = dynamic_cast< TypeInstType * >( initContext ) ) {
    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                         }
     412                        // try again...
     413                        initContext = tt->get_baseType()->get_base();
     414                        visit(listInit);
    460415                } else {
    461                         assert( dynamic_cast< BasicType * >( initContext ) || dynamic_cast< PointerType * >( initContext ) );
     416                        assert( dynamic_cast< BasicType * >( initContext ) );
    462417                        // basic types are handled here
    463418                        Visitor::visit( listInit );
     
    515470#endif
    516471        }
    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         }
    563472} // namespace ResolvExpr
    564473
  • src/ResolvExpr/Resolver.h

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

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

    r242d458 r679864e1  
    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 : Wed Mar  2 17:37:05 2016
    13 // Update Count     : 37
     12// Last Modified On : Fri Jun 26 14:57:05 2015
     13// Update Count     : 7
    1414//
    1515
     
    2525#include "SynTree/Declaration.h"
    2626#include "SymTab/Indexer.h"
    27 #include "Common/utility.h"
    28 
    29 
    30 // #define DEBUG
     27#include "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(TraitInstType *aggregateUseType);
     58                virtual void visit(ContextInstType *aggregateUseType);
    5959                virtual void visit(TypeInstType *aggregateUseType);
    6060                virtual void visit(TupleType *tupleType);
    61                 virtual void visit(VarArgsType *varArgsType);
    6261
    6362                template< typename RefType > void handleRefType( RefType *inst, Type *other );
    64                 template< typename RefType > void handleGenericRefType( RefType *inst, Type *other );
    6563
    6664                bool result;
     
    7977        bool unifyInexact( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer, Type *&common );
    8078        bool unifyExact( Type *type1, Type *type2, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, WidenMode widenMode, const SymTab::Indexer &indexer );
    81 
     79 
    8280        bool typesCompatible( Type *first, Type *second, const SymTab::Indexer &indexer, const TypeEnvironment &env ) {
    8381                TypeEnvironment newEnv;
    84                 OpenVarSet openVars, closedVars; // added closedVars
     82                OpenVarSet openVars;
    8583                AssertionSet needAssertions, haveAssertions;
    8684                Type *newFirst = first->clone(), *newSecond = second->clone();
    8785                env.apply( newFirst );
    8886                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 
    9587                bool result = unifyExact( newFirst, newSecond, newEnv, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer );
    9688                delete newFirst;
     
    137129                  case TypeDecl::Dtype:
    138130                        return ! isFtype( type, indexer );
    139 
     131 
    140132                  case TypeDecl::Ftype:
    141133                        return isFtype( type, indexer );
     
    196188                bool widen1 = false, widen2 = false;
    197189                Type *type1 = 0, *type2 = 0;
    198 
     190 
    199191                if ( env.lookup( var1->get_name(), class1 ) ) {
    200192                        hasClass1 = true;
     
    217209                        widen2 = widenMode.widenSecond && class2.allowWidening;
    218210                } // if
    219 
     211 
    220212                if ( type1 && type2 ) {
    221213//    std::cout << "has type1 && type2" << std::endl;
     
    433425
    434426        void Unify::visit(ArrayType *arrayType) {
     427                // XXX -- compare array dimension
    435428                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
    438429                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 
    463430                        result = unifyExact( arrayType->get_base(), otherArray->get_base(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer );
    464431                } // if
     
    468435        bool unifyDeclList( Iterator1 list1Begin, Iterator1 list1End, Iterator2 list2Begin, Iterator2 list2End, TypeEnvironment &env, AssertionSet &needAssertions, AssertionSet &haveAssertions, const OpenVarSet &openVars, const SymTab::Indexer &indexer ) {
    469436                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 ) ) {
    472437                        if ( ! unifyExact( (*list1Begin)->get_type(), (*list2Begin)->get_type(), env, needAssertions, haveAssertions, openVars, WidenMode( false, false ), indexer ) ) {
    473438                                return false;
     
    484449                FunctionType *otherFunction = dynamic_cast< FunctionType* >( type2 );
    485450                if ( otherFunction && functionType->get_isVarArgs() == otherFunction->get_isVarArgs() ) {
    486 
     451 
    487452                        if ( unifyDeclList( functionType->get_parameters().begin(), functionType->get_parameters().end(), otherFunction->get_parameters().begin(), otherFunction->get_parameters().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) {
    488 
     453       
    489454                                if ( unifyDeclList( functionType->get_returnVals().begin(), functionType->get_returnVals().end(), otherFunction->get_returnVals().begin(), otherFunction->get_returnVals().end(), env, needAssertions, haveAssertions, openVars, indexer ) ) {
    490455
     
    499464
    500465        template< typename RefType >
    501         void Unify::handleRefType( RefType *inst, Type *other ) {
    502                 // check that other type is compatible and named the same
     466        void Unify::handleRefType( RefType *inst, Type *other ) { 
    503467                RefType *otherStruct = dynamic_cast< RefType* >( other );
    504468                result = otherStruct && inst->get_name() == otherStruct->get_name();
    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         }
     469        } 
    530470
    531471        void Unify::visit(StructInstType *structInst) {
    532                 handleGenericRefType( structInst, type2 );
     472                handleRefType( structInst, type2 );
    533473        }
    534474
    535475        void Unify::visit(UnionInstType *unionInst) {
    536                 handleGenericRefType( unionInst, type2 );
     476                handleRefType( unionInst, type2 );
    537477        }
    538478
     
    541481        }
    542482
    543         void Unify::visit(TraitInstType *contextInst) {
     483        void Unify::visit(ContextInstType *contextInst) {
    544484                handleRefType( contextInst, type2 );
    545485        }
     
    584524        }
    585525
    586         void Unify::visit(VarArgsType *varArgsType) {
    587                 result = dynamic_cast< VarArgsType* >( type2 );
    588         }
    589 
    590526} // namespace ResolvExpr
    591527
  • src/ResolvExpr/Unify.h

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

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

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // AddVisit.h --
     7// AddVisit.h -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 16:14:32 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Aug  4 11:22:01 2016
    13 // Update Count     : 9
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Jul 14 12:26:17 2015
     13// Update Count     : 4
    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 >
    2939        inline void addVisit(CompoundStmt *compoundStmt, Visitor &visitor) {
    3040                addVisitStatementList( compoundStmt->get_kids(), visitor );
     
    3242
    3343        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 >
    3465        inline void addVisit(SwitchStmt *switchStmt, Visitor &visitor) {
    35                 addVisitStatementList( switchStmt->get_statements(), visitor );
     66                addVisitStatementList( switchStmt->get_branches(), visitor );
    3667                maybeAccept( switchStmt->get_condition(), visitor );
    3768        }
    3869
    3970        template< typename 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
     71        inline void addVisit(ChooseStmt *switchStmt, Visitor &visitor) {
     72                addVisitStatementList( switchStmt->get_branches(), visitor );
     73                maybeAccept( switchStmt->get_condition(), visitor );
    5174        }
    5275
     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        }
    5387} // namespace SymTab
    5488
  • src/SymTab/FixFunction.cc

    r242d458 r679864e1  
    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 : Wed Mar  2 17:31:10 2016
    13 // Update Count     : 3
     12// Last Modified On : Sun May 17 16:22:54 2015
     13// Update Count     : 2
    1414//
    1515
     
    1818#include "SynTree/Type.h"
    1919#include "SynTree/Expression.h"
    20 #include "Common/utility.h"
     20#include "utility.h"
    2121
    2222namespace SymTab {
     
    4444
    4545        Type * FixFunction::mutate(ArrayType *arrayType) {
    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() );
     46                PointerType *pointerType = new PointerType( arrayType->get_qualifiers(), maybeClone( arrayType->get_base()->clone() ), maybeClone( arrayType->get_dimension() ), arrayType->get_isVarLen(), arrayType->get_isStatic() );
    4847                delete arrayType;
    4948                return pointerType;
     
    6261        }
    6362
    64         Type * FixFunction::mutate(TraitInstType *aggregateUseType) {
     63        Type * FixFunction::mutate(ContextInstType *aggregateUseType) {
    6564                return aggregateUseType;
    6665        }
     
    7372                return tupleType;
    7473        }
    75 
    76         Type * FixFunction::mutate(VarArgsType *varArgsType) {
    77                 return varArgsType;
    78         }
    7974} // namespace SymTab
    8075
  • src/SymTab/FixFunction.h

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

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

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Indexer.cc --
     7// Indexer.cc -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:37:33 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : 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"
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 05 13:52:42 2015
     13// Update Count     : 10
     14//
    2915
    3016#include "SynTree/Declaration.h"
     
    3319#include "SynTree/Initializer.h"
    3420#include "SynTree/Statement.h"
     21#include "Indexer.h"
     22#include <typeinfo>
     23#include "utility.h"
    3524
    3625#define debugPrint(x) if ( doDebug ) { std::cout << x; }
     
    4433        }
    4534
    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         }
     35        Indexer::Indexer( bool useDebug ) : doDebug( useDebug ) {}
     36
     37        Indexer::~Indexer() {}
    14638
    14739        void Indexer::visit( ObjectDecl *objectDecl ) {
     
    15345                if ( objectDecl->get_name() != "" ) {
    15446                        debugPrint( "Adding object " << objectDecl->get_name() << std::endl );
    155                         addId( objectDecl );
     47                        idTable.addDecl( objectDecl );
    15648                } // if
    15749        }
     
    16052                if ( functionDecl->get_name() == "" ) return;
    16153                debugPrint( "Adding function " << functionDecl->get_name() << std::endl );
    162                 addId( functionDecl );
     54                idTable.addDecl( functionDecl );
    16355                enterScope();
    16456                maybeAccept( functionDecl->get_functionType(), *this );
     
    19890                leaveScope();
    19991                debugPrint( "Adding type " << typeDecl->get_name() << std::endl );
    200                 addType( typeDecl );
     92                typeTable.add( typeDecl );
    20193                acceptAll( typeDecl->get_assertions(), *this );
    20294        }
     
    208100                leaveScope();
    209101                debugPrint( "Adding typedef " << typeDecl->get_name() << std::endl );
    210                 addType( typeDecl );
     102                typeTable.add( typeDecl );
    211103        }
    212104
    213105        void Indexer::visit( StructDecl *aggregateDecl ) {
    214106                // make up a forward declaration and add it before processing the members
    215                 // needs to be on the heap because addStruct saves the pointer
    216                 StructDecl &fwdDecl = *new StructDecl( aggregateDecl->get_name() );
     107                StructDecl fwdDecl( aggregateDecl->get_name() );
    217108                cloneAll( aggregateDecl->get_parameters(), fwdDecl.get_parameters() );
    218109                debugPrint( "Adding fwd decl for struct " << fwdDecl.get_name() << std::endl );
    219                 addStruct( &fwdDecl );
    220 
     110                structTable.add( &fwdDecl );
     111 
    221112                enterScope();
    222113                acceptAll( aggregateDecl->get_parameters(), *this );
    223114                acceptAll( aggregateDecl->get_members(), *this );
    224115                leaveScope();
    225 
     116 
    226117                debugPrint( "Adding struct " << aggregateDecl->get_name() << std::endl );
    227118                // this addition replaces the forward declaration
    228                 addStruct( aggregateDecl );
     119                structTable.add( aggregateDecl );
    229120        }
    230121
     
    234125                cloneAll( aggregateDecl->get_parameters(), fwdDecl.get_parameters() );
    235126                debugPrint( "Adding fwd decl for union " << fwdDecl.get_name() << std::endl );
    236                 addUnion( &fwdDecl );
    237 
     127                unionTable.add( &fwdDecl );
     128 
    238129                enterScope();
    239130                acceptAll( aggregateDecl->get_parameters(), *this );
    240131                acceptAll( aggregateDecl->get_members(), *this );
    241132                leaveScope();
    242 
     133 
    243134                debugPrint( "Adding union " << aggregateDecl->get_name() << std::endl );
    244                 addUnion( aggregateDecl );
     135                unionTable.add( aggregateDecl );
    245136        }
    246137
    247138        void Indexer::visit( EnumDecl *aggregateDecl ) {
    248139                debugPrint( "Adding enum " << aggregateDecl->get_name() << std::endl );
    249                 addEnum( aggregateDecl );
     140                enumTable.add( aggregateDecl );
    250141                // unlike structs, contexts, and unions, enums inject their members into the global scope
    251142                acceptAll( aggregateDecl->get_members(), *this );
    252143        }
    253144
    254         void Indexer::visit( TraitDecl *aggregateDecl ) {
     145        void Indexer::visit( ContextDecl *aggregateDecl ) {
    255146                enterScope();
    256147                acceptAll( aggregateDecl->get_parameters(), *this );
    257148                acceptAll( aggregateDecl->get_members(), *this );
    258149                leaveScope();
    259 
     150 
    260151                debugPrint( "Adding context " << aggregateDecl->get_name() << std::endl );
    261                 addTrait( aggregateDecl );
     152                contextTable.add( aggregateDecl );
    262153        }
    263154
     
    327218        }
    328219
    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 );
    352         }
    353 
    354220        void Indexer::visit( AttrExpr *attrExpr ) {
    355221                acceptAllNewScope( attrExpr->get_results(), *this );
     
    407273
    408274
    409         void Indexer::visit( TraitInstType *contextInst ) {
     275        void Indexer::visit( ContextInstType *contextInst ) {
    410276                acceptAll( contextInst->get_parameters(), *this );
    411277                acceptAll( contextInst->get_members(), *this );
     
    413279
    414280        void Indexer::visit( StructInstType *structInst ) {
    415                 if ( ! lookupStruct( structInst->get_name() ) ) {
     281                if ( ! structTable.lookup( structInst->get_name() ) ) {
    416282                        debugPrint( "Adding struct " << structInst->get_name() << " from implicit forward declaration" << std::endl );
    417                         addStruct( structInst->get_name() );
     283                        structTable.add( structInst->get_name() );
    418284                }
    419285                enterScope();
     
    423289
    424290        void Indexer::visit( UnionInstType *unionInst ) {
    425                 if ( ! lookupUnion( unionInst->get_name() ) ) {
     291                if ( ! unionTable.lookup( unionInst->get_name() ) ) {
    426292                        debugPrint( "Adding union " << unionInst->get_name() << " from implicit forward declaration" << std::endl );
    427                         addUnion( unionInst->get_name() );
     293                        unionTable.add( unionInst->get_name() );
    428294                }
    429295                enterScope();
     
    440306
    441307
    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                 }
     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);
    463314        }
    464315
    465316        NamedTypeDecl *Indexer::lookupType( const std::string &id ) const {
    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 );
     317                return typeTable.lookup( id );
    470318        }
    471319
    472320        StructDecl *Indexer::lookupStruct( const std::string &id ) const {
    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 );
     321                return structTable.lookup( id );
    477322        }
    478323
    479324        EnumDecl *Indexer::lookupEnum( const std::string &id ) const {
    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 );
     325                return enumTable.lookup( id );
    484326        }
    485327
    486328        UnionDecl *Indexer::lookupUnion( const std::string &id ) const {
    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                 }
     329                return unionTable.lookup( id );
     330        }
     331
     332        ContextDecl  * Indexer::lookupContext( const std::string &id ) const {
     333                return contextTable.lookup( id );
    776334        }
    777335
    778336        void Indexer::enterScope() {
    779                 ++scope;
    780 
    781337                if ( doDebug ) {
    782                         std::cout << "--- Entering scope " << scope << std::endl;
    783                 }
     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();
    784346        }
    785347
    786348        void Indexer::leaveScope() {
    787349                using std::cout;
    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                 }
     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();
    808367        }
    809368
    810369        void Indexer::print( std::ostream &os, int indent ) const {
    811370            using std::cerr;
    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 
     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
    834393        }
    835394} // namespace SymTab
  • src/SymTab/Indexer.h

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:34:14 2016
    13 // Update Count     : 6
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Sep 17 16:05:38 2015
     13// Update Count     : 5
    1414//
    1515
     
    2121
    2222#include "SynTree/Visitor.h"
     23#include "IdTable.h"
     24#include "AggregateTable.h"
     25#include "TypeTable.h"
    2326
    2427namespace SymTab {
     
    2629          public:
    2730                Indexer( bool useDebug = false );
     31                virtual ~Indexer();
    2832
    29                 Indexer( const Indexer &that );
    30                 Indexer( Indexer &&that );
    31                 virtual ~Indexer();
    32                 Indexer& operator= ( const Indexer &that );
    33                 Indexer& operator= ( Indexer &&that );
    34 
    35                 using Visitor::visit;
     33                //using Visitor::visit;
    3634                virtual void visit( ObjectDecl *objectDecl );
    3735                virtual void visit( FunctionDecl *functionDecl );
     
    4139                virtual void visit( UnionDecl *aggregateDecl );
    4240                virtual void visit( EnumDecl *aggregateDecl );
    43                 virtual void visit( TraitDecl *aggregateDecl );
     41                virtual void visit( ContextDecl *aggregateDecl );
    4442
    4543                virtual void visit( CompoundStmt *compoundStmt );
     
    5452                virtual void visit( MemberExpr *memberExpr );
    5553                virtual void visit( VariableExpr *variableExpr );
    56                 virtual void visit( ConstantExpr *constantExpr );
     54                virtual void visit( ConstantExpr *constantExpr ); 
    5755                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 );
    6256                virtual void visit( AttrExpr *attrExpr );
    6357                virtual void visit( LogicalExpr *logicalExpr );
     
    7064                virtual void visit( UntypedValofExpr *valofExpr );
    7165
    72                 virtual void visit( TraitInstType *contextInst );
     66                virtual void visit( ContextInstType *contextInst );
    7367                virtual void visit( StructInstType *contextInst );
    7468                virtual void visit( UnionInstType *contextInst );
     
    8175                void leaveScope();
    8276
    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
     77                void lookupId( const std::string &id, std::list< DeclarationWithType* >& ) const;
     78                DeclarationWithType* lookupId( const std::string &id) const;
    8679                NamedTypeDecl *lookupType( const std::string &id ) const;
    87                 /// Gets the top-most struct declaration with the given ID
    8880                StructDecl *lookupStruct( const std::string &id ) const;
    89                 /// Gets the top-most enum declaration with the given ID
    9081                EnumDecl *lookupEnum( const std::string &id ) const;
    91                 /// Gets the top-most union declaration with the given ID
    9282                UnionDecl *lookupUnion( const std::string &id ) const;
    93                 /// Gets the top-most trait declaration with the given ID
    94                 TraitDecl *lookupTrait( const std::string &id ) const;
    95 
     83                ContextDecl *lookupContext( const std::string &id ) const;
     84 
    9685                void print( std::ostream &os, int indent = 0 ) const;
    9786          private:
    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();
     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
    13295        };
    13396} // namespace SymTab
  • src/SymTab/Mangler.cc

    r242d458 r679864e1  
    3030
    3131namespace SymTab {
    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                
     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//}
    4139        Mangler::Mangler( const Mangler &rhs ) : mangleName() {
    4240                varNums = rhs.varNums;
     
    4442                isTopLevel = rhs.isTopLevel;
    4543                mangleOverridable = rhs.mangleOverridable;
    46                 typeMode = rhs.typeMode;
    4744        }
    4845
     
    155152        void Mangler::mangleRef( ReferenceToType *refType, std::string prefix ) {
    156153                printQualifiers( refType );
    157 
    158154                mangleName << ( refType->get_name().length() + prefix.length() ) << prefix << refType->get_name();
    159155        }
    160156
    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 
    184157        void Mangler::visit( StructInstType *aggregateUseType ) {
    185                 if ( typeMode ) mangleGenericRef( aggregateUseType, "s" );
    186                 else mangleRef( aggregateUseType, "s" );
     158                mangleRef( aggregateUseType, "s" );
    187159        }
    188160
    189161        void Mangler::visit( UnionInstType *aggregateUseType ) {
    190                 if ( typeMode ) mangleGenericRef( aggregateUseType, "u" );
    191                 else mangleRef( aggregateUseType, "u" );
     162                mangleRef( aggregateUseType, "u" );
    192163        }
    193164
     
    226197        }
    227198
    228         void Mangler::visit( VarArgsType *varArgsType ) {
    229                 printQualifiers( varArgsType );
    230                 mangleName << "VARGS";
    231         }
    232 
    233199        void Mangler::visit( TypeDecl *decl ) {
    234200                static const char *typePrefix[] = { "BT", "BD", "BF" };
     
    243209
    244210        void Mangler::printQualifiers( Type *type ) {
    245                 // skip if not including qualifiers
    246                 if ( typeMode ) return;
    247                
    248211                if ( ! type->get_forall().empty() ) {
    249212                        std::list< std::string > assertionNames;
     
    264227                                varNums[ (*i )->get_name() ] = std::pair< int, int >( nextVarNum++, (int )(*i )->get_kind() );
    265228                                for ( std::list< DeclarationWithType* >::iterator assert = (*i )->get_assertions().begin(); assert != (*i )->get_assertions().end(); ++assert ) {
    266                                         Mangler sub_mangler( mangleOverridable, typeMode );
     229                                        Mangler sub_mangler( mangleOverridable );
    267230                                        sub_mangler.nextVarNum = nextVarNum;
    268231                                        sub_mangler.isTopLevel = false;
     
    282245                        mangleName << "V";
    283246                } // if
    284                 // Removed due to restrict not affecting function compatibility in GCC
    285 //              if ( type->get_isRestrict() ) {
    286 //                      mangleName << "R";
    287 //              } // if
     247                if ( type->get_isRestrict() ) {
     248                        mangleName << "R";
     249                } // if
    288250                if ( type->get_isLvalue() ) {
    289251                        mangleName << "L";
  • src/SymTab/Mangler.h

    r242d458 r679864e1  
    2222
    2323namespace SymTab {
    24         /// Mangles names to a unique C identifier
    2524        class Mangler : public Visitor {
    2625          public:
    27                 /// Mangle syntax tree object; primary interface to clients
    2826                template< typename SynTreeClass >
    29             static std::string mangle( SynTreeClass *decl, bool mangleOverridable = true );
    30                 /// Mangle a type name; secondary interface
    31                 static std::string mangleType( Type* ty );
     27            static std::string mangle( SynTreeClass *decl, bool mangleOverridable = true ); // interface to clients
    3228
     29///   using Visitor::visit;
    3330                virtual void visit( ObjectDecl *declaration );
    3431                virtual void visit( FunctionDecl *declaration );
     
    4542                virtual void visit( TypeInstType *aggregateUseType );
    4643                virtual void visit( TupleType *tupleType );
    47                 virtual void visit( VarArgsType *varArgsType );
    4844 
    4945                std::string get_mangleName() { return mangleName.str(); }
    5046          private:
    51                 std::ostringstream mangleName;  ///< Mangled name being constructed
     47                std::ostringstream mangleName;
    5248                typedef std::map< std::string, std::pair< int, int > > VarMapType;
    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
     49                VarMapType varNums;
     50                int nextVarNum;
     51                bool isTopLevel;
     52                bool mangleOverridable;
    5853 
    59                 Mangler( bool mangleOverridable, bool typeMode );
     54                Mangler( bool mangleOverridable );
    6055                Mangler( const Mangler & );
    6156 
    6257                void mangleDecl( DeclarationWithType *declaration );
    6358                void mangleRef( ReferenceToType *refType, std::string prefix );
    64                 void mangleGenericRef( ReferenceToType *refType, std::string prefix );
    6559 
    6660                void printQualifiers( Type *type );
     
    6963        template< typename SynTreeClass >
    7064        std::string Mangler::mangle( SynTreeClass *decl, bool mangleOverridable ) {
    71                 Mangler mangler( mangleOverridable, false );
     65                Mangler mangler( mangleOverridable );
    7266                maybeAccept( decl, mangler );
    7367                return mangler.get_mangleName();
  • src/SymTab/TypeEquality.cc

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

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 17:49:21 2016
    13 // Update Count     : 298
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Oct 06 15:40:35 2015
     13// Update Count     : 219
    1414//
    1515
     
    4040#include <list>
    4141#include <iterator>
    42 #include "Common/utility.h"
    43 #include "Common/UniqueName.h"
    4442#include "Validate.h"
    4543#include "SynTree/Visitor.h"
    4644#include "SynTree/Mutator.h"
    4745#include "SynTree/Type.h"
    48 #include "SynTree/Expression.h"
    4946#include "SynTree/Statement.h"
    5047#include "SynTree/TypeSubstitution.h"
     
    5249#include "FixFunction.h"
    5350// #include "ImplementationType.h"
    54 #include "GenPoly/DeclMutator.h"
     51#include "utility.h"
     52#include "UniqueName.h"
    5553#include "AddVisit.h"
    5654#include "MakeLibCfa.h"
    5755#include "TypeEquality.h"
    58 #include "Autogen.h"
    59 #include "ResolvExpr/typeops.h"
    6056
    6157#define debugPrint( x ) if ( doDebug ) { std::cout << x; }
     
    6662                /// Flattens nested struct types
    6763                static void hoistStruct( std::list< Declaration * > &translationUnit );
    68 
     64 
    6965                std::list< Declaration * > &get_declsToAdd() { return declsToAdd; }
    70 
     66 
    7167                virtual void visit( StructDecl *aggregateDecl );
    7268                virtual void visit( UnionDecl *aggregateDecl );
    7369
    7470                virtual void visit( CompoundStmt *compoundStmt );
     71                virtual void visit( IfStmt *ifStmt );
     72                virtual void visit( WhileStmt *whileStmt );
     73                virtual void visit( ForStmt *forStmt );
    7574                virtual void visit( SwitchStmt *switchStmt );
     75                virtual void visit( ChooseStmt *chooseStmt );
     76                virtual void visit( CaseStmt *caseStmt );
     77                virtual void visit( CatchStmt *catchStmt );
    7678          private:
    7779                HoistStruct();
     
    8385        };
    8486
    85         /// Replaces enum types by int, and function or array types in function parameter and return lists by appropriate pointers.
     87        /// Replaces enum types by int, and function or array types in function parameter and return lists by appropriate pointers
    8688        class Pass1 : public Visitor {
    8789                typedef Visitor Parent;
     
    98100                virtual void visit( StructInstType *structInst );
    99101                virtual void visit( UnionInstType *unionInst );
    100                 virtual void visit( TraitInstType *contextInst );
     102                virtual void visit( ContextInstType *contextInst );
    101103                virtual void visit( StructDecl *structDecl );
    102104                virtual void visit( UnionDecl *unionDecl );
     
    104106
    105107                const Indexer *indexer;
    106 
     108 
    107109                typedef std::map< std::string, std::list< StructInstType * > > ForwardStructsType;
    108110                typedef std::map< std::string, std::list< UnionInstType * > > ForwardUnionsType;
     
    123125        };
    124126
    125         class ReturnChecker : public Visitor {
     127        class AddStructAssignment : public Visitor {
    126128          public:
    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 );
     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 ) {}
    130154          private:
    131                 virtual void visit( FunctionDecl * functionDecl );
    132 
    133                 virtual void visit( ReturnStmt * returnStmt );
    134 
    135                 std::list< DeclarationWithType * > returnVals;
     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
    136160        };
    137161
    138162        class EliminateTypedef : public Mutator {
    139163          public:
    140                 EliminateTypedef() : scopeLevel( 0 ) {}
    141                 /// Replaces typedefs by forward declarations
     164          EliminateTypedef() : scopeLevel( 0 ) {}
     165            /// Replaces typedefs by forward declarations
    142166                static void eliminateTypedef( std::list< Declaration * > &translationUnit );
    143167          private:
     
    153177                virtual Declaration *mutate( UnionDecl * unionDecl );
    154178                virtual Declaration *mutate( EnumDecl * enumDecl );
    155                 virtual Declaration *mutate( TraitDecl * contextDecl );
     179                virtual Declaration *mutate( ContextDecl * contextDecl );
    156180
    157181                template<typename AggDecl>
    158182                AggDecl *handleAggregate( AggDecl * aggDecl );
    159 
    160                 template<typename AggDecl>
    161                 void addImplicitTypedef( AggDecl * aggDecl );
    162183
    163184                typedef std::map< std::string, std::pair< TypedefDecl *, int > > TypedefMap;
     
    168189        };
    169190
    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 
    187191        void validate( std::list< Declaration * > &translationUnit, bool doDebug ) {
    188192                Pass1 pass1;
    189193                Pass2 pass2( doDebug, 0 );
    190194                Pass3 pass3( 0 );
    191                 CompoundLiteral compoundliteral;
    192 
    193195                EliminateTypedef::eliminateTypedef( translationUnit );
    194196                HoistStruct::hoistStruct( translationUnit );
    195                 autogenerateRoutines( translationUnit ); // moved up, used to be below compoundLiteral - currently needs Pass1
    196197                acceptAll( translationUnit, pass1 );
    197198                acceptAll( translationUnit, pass2 );
    198                 ReturnChecker::checkFunctionReturns( translationUnit );
    199                 compoundliteral.mutateDeclarationList( translationUnit );
     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 );
    200202                acceptAll( translationUnit, pass3 );
    201                 VerifyCtorDtor::verify( translationUnit );
    202         }
    203 
     203        }
     204       
    204205        void validateType( Type *type, const Indexer *indexer ) {
    205206                Pass1 pass1;
     
    209210                type->accept( pass2 );
    210211                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
    211226        }
    212227
     
    265280        }
    266281
     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
    267294        void HoistStruct::visit( SwitchStmt *switchStmt ) {
    268295                addVisit( switchStmt, *this );
    269296        }
    270297
     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
    271310        void Pass1::visit( EnumDecl *enumDecl ) {
    272311                // Set the type of each member of the enumeration to be EnumConstant
     312 
    273313                for ( std::list< Declaration * >::iterator i = enumDecl->get_members().begin(); i != enumDecl->get_members().end(); ++i ) {
    274314                        ObjectDecl * obj = dynamic_cast< ObjectDecl * >( *i );
    275315                        assert( obj );
    276                         obj->set_type( new EnumInstType( Type::Qualifiers( true, false, false, false, false, false ), enumDecl->get_name() ) );
     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 ) ;
    277319                } // for
    278320                Parent::visit( enumDecl );
     
    280322
    281323        namespace {
    282                 template< typename DWTList >
    283                 void fixFunctionList( DWTList & dwts, FunctionType * func ) {
     324                template< typename DWTIterator >
     325                void fixFunctionList( DWTIterator begin, DWTIterator end, FunctionType *func ) {
    284326                        // the only case in which "void" is valid is where it is the only one in the list; then it should be removed
    285327                        // entirely other fix ups are handled by the FixFunction class
    286                         typedef typename DWTList::iterator DWTIterator;
    287                         DWTIterator begin( dwts.begin() ), end( dwts.end() );
    288328                        if ( begin == end ) return;
    289329                        FixFunction fixer;
    290330                        DWTIterator i = begin;
    291                         *i = (*i)->acceptMutator( fixer );
     331                        *i = (*i )->acceptMutator( fixer );
    292332                        if ( fixer.get_isVoid() ) {
    293333                                DWTIterator j = i;
    294334                                ++i;
    295                                 dwts.erase( j );
    296                                 if ( i != end ) {
     335                                func->get_parameters().erase( j );
     336                                if ( i != end ) { 
    297337                                        throw SemanticError( "invalid type void in function type ", func );
    298338                                } // if
     
    312352        void Pass1::visit( FunctionType *func ) {
    313353                // Fix up parameters and return types
    314                 fixFunctionList( func->get_parameters(), func );
    315                 fixFunctionList( func->get_returnVals(), func );
     354                fixFunctionList( func->get_parameters().begin(), func->get_parameters().end(), func );
     355                fixFunctionList( func->get_returnVals().begin(), func->get_returnVals().end(), func );
    316356                Visitor::visit( func );
    317357        }
     
    330370                // it's not a semantic error if the struct is not found, just an implicit forward declaration
    331371                if ( st ) {
    332                         //assert( ! structInst->get_baseStruct() || structInst->get_baseStruct()->get_members().empty() || ! st->get_members().empty() );
     372                        assert( ! structInst->get_baseStruct() || structInst->get_baseStruct()->get_members().empty() || ! st->get_members().empty() );
    333373                        structInst->set_baseStruct( st );
    334374                } // if
     
    352392        }
    353393
    354         void Pass2::visit( TraitInstType *contextInst ) {
     394        void Pass2::visit( ContextInstType *contextInst ) {
    355395                Parent::visit( contextInst );
    356                 TraitDecl *ctx = indexer->lookupTrait( contextInst->get_name() );
     396                ContextDecl *ctx = indexer->lookupContext( contextInst->get_name() );
    357397                if ( ! ctx ) {
    358398                        throw SemanticError( "use of undeclared context " + contextInst->get_name() );
     
    360400                for ( std::list< TypeDecl * >::const_iterator i = ctx->get_parameters().begin(); i != ctx->get_parameters().end(); ++i ) {
    361401                        for ( std::list< DeclarationWithType * >::const_iterator assert = (*i )->get_assertions().begin(); assert != (*i )->get_assertions().end(); ++assert ) {
    362                                 if ( TraitInstType *otherCtx = dynamic_cast< TraitInstType * >(*assert ) ) {
     402                                if ( ContextInstType *otherCtx = dynamic_cast< ContextInstType * >(*assert ) ) {
    363403                                        cloneAll( otherCtx->get_members(), contextInst->get_members() );
    364404                                } else {
     
    376416
    377417        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 );
    380418                if ( ! structDecl->get_members().empty() ) {
    381419                        ForwardStructsType::iterator fwds = forwardStructs.find( structDecl->get_name() );
     
    387425                        } // if
    388426                } // if
     427                Indexer::visit( structDecl );
    389428        }
    390429
    391430        void Pass2::visit( UnionDecl *unionDecl ) {
    392                 Parent::visit( unionDecl );
    393431                if ( ! unionDecl->get_members().empty() ) {
    394432                        ForwardUnionsType::iterator fwds = forwardUnions.find( unionDecl->get_name() );
     
    400438                        } // if
    401439                } // if
     440                Indexer::visit( unionDecl );
    402441        }
    403442
     
    425464                        while ( ! toBeDone.empty() ) {
    426465                                for ( std::list< DeclarationWithType * >::iterator assertion = toBeDone.begin(); assertion != toBeDone.end(); ++assertion ) {
    427                                         if ( TraitInstType *ctx = dynamic_cast< TraitInstType * >( (*assertion )->get_type() ) ) {
     466                                        if ( ContextInstType *ctx = dynamic_cast< ContextInstType * >( (*assertion )->get_type() ) ) {
    428467                                                for ( std::list< Declaration * >::const_iterator i = ctx->get_members().begin(); i != ctx->get_members().end(); ++i ) {
    429468                                                        DeclarationWithType *dwt = dynamic_cast< DeclarationWithType * >( *i );
     
    462501        }
    463502
    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 );
     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 );
    483708                }
    484709        }
    485710
     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        }
    486814
    487815        bool isTypedef( Declaration *decl ) {
     
    492820                EliminateTypedef eliminator;
    493821                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                 }
    502822                filter( translationUnit, isTypedef, true );
    503 
    504823        }
    505824
    506825        Type *EliminateTypedef::mutate( TypeInstType * typeInst ) {
    507                 // instances of typedef types will come here. If it is an instance
     826                // instances of typedef types will come here. If it is an instance 
    508827                // of a typdef type, link the instance to its actual type.
    509828                TypedefMap::const_iterator def = typedefNames.find( typeInst->get_name() );
     
    518837                                }
    519838                                rtt->get_parameters().clear();
    520                                 cloneAll( typeInst->get_parameters(), rtt->get_parameters() );
    521                                 mutateAll( rtt->get_parameters(), *this );  // recursively fix typedefs on parameters
     839                                cloneAll(typeInst->get_parameters(), rtt->get_parameters());
    522840                        } // if
    523841                        delete typeInst;
     
    533851        Declaration *EliminateTypedef::mutate( TypedefDecl * tyDecl ) {
    534852                Declaration *ret = Mutator::mutate( tyDecl );
    535 
    536853                if ( typedefNames.count( tyDecl->get_name() ) == 1 && typedefNames[ tyDecl->get_name() ].second == scopeLevel ) {
    537                         // typedef to the same name from the same scope
     854                        // typedef to the same name from the same scope 
    538855                        // must be from the same type
    539856
    540857                        Type * t1 = tyDecl->get_base();
    541858                        Type * t2 = typedefNames[ tyDecl->get_name() ].first->get_base();
    542                         if ( ! ResolvExpr::typesCompatible( t1, t2, Indexer() ) ) {
     859                        if ( ! typeEquals( t1, t2, true ) ) {
    543860                                throw SemanticError( "cannot redefine typedef: " + tyDecl->get_name() );
    544861                        }
     
    559876                } else if ( UnionInstType *aggDecl = dynamic_cast< UnionInstType * >( tyDecl->get_base() ) ) {
    560877                        return new UnionDecl( aggDecl->get_name() );
    561                 } else if ( EnumInstType *enumDecl = dynamic_cast< EnumInstType * >( tyDecl->get_base() ) ) {
    562                         return new EnumDecl( enumDecl->get_name() );
    563878                } else {
    564879                        return ret;
     
    587902                DeclarationWithType *ret = Mutator::mutate( objDecl );
    588903                typedefNames = oldNames;
    589                 // is the type a function?
    590904                if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) {
    591                         // replace the current object declaration with a function declaration
    592905                        return new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn() );
    593906                } else if ( objDecl->get_isInline() || objDecl->get_isNoreturn() ) {
     
    624937        }
    625938
    626         // there may be typedefs nested within aggregates in order for everything to work properly, these should be removed
    627         // as well
     939        // there may be typedefs nested within aggregates
     940        // in order for everything to work properly, these
     941        // should be removed as well
    628942        template<typename AggDecl>
    629943        AggDecl *EliminateTypedef::handleAggregate( AggDecl * aggDecl ) {
     
    640954        }
    641955
    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 
    658956        Declaration *EliminateTypedef::mutate( StructDecl * structDecl ) {
    659                 addImplicitTypedef( structDecl );
    660957                Mutator::mutate( structDecl );
    661958                return handleAggregate( structDecl );
     
    663960
    664961        Declaration *EliminateTypedef::mutate( UnionDecl * unionDecl ) {
    665                 addImplicitTypedef( unionDecl );
    666962                Mutator::mutate( unionDecl );
    667963                return handleAggregate( unionDecl );
     
    669965
    670966        Declaration *EliminateTypedef::mutate( EnumDecl * enumDecl ) {
    671                 addImplicitTypedef( enumDecl );
    672967                Mutator::mutate( enumDecl );
    673968                return handleAggregate( enumDecl );
    674969        }
    675970
    676         Declaration *EliminateTypedef::mutate( TraitDecl * contextDecl ) {
     971                Declaration *EliminateTypedef::mutate( ContextDecl * contextDecl ) {
    677972                Mutator::mutate( contextDecl );
    678973                return handleAggregate( contextDecl );
    679974        }
    680975
    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         }
    726976} // namespace SymTab
    727977
  • src/SymTab/module.mk

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

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

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

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // ApplicationExpr.cc.cc --
     7// ApplicationExpr.cc.cc -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Apr 26 12:41:06 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon May 18 07:54:17 2015
    1313// Update Count     : 4
    1414//
     
    2020#include "Type.h"
    2121#include "TypeSubstitution.h"
    22 #include "Common/utility.h"
     22#include "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 << "Application of" << std::endl << std::string(indent+2, ' ');
     66        os << std::string( indent, ' ' ) << "Application of" << std::endl;
    6767        function->print( os, indent+2 );
    6868        if ( ! args.empty() ) {
  • src/SynTree/ArrayType.cc

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

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

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // CommaExpr.cc --
     7// CommaExpr.cc -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Mon May 02 15:19:44 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon May 18 08:09:58 2015
    1313// Update Count     : 1
    1414//
     
    1616#include "Expression.h"
    1717#include "Type.h"
    18 #include "Common/utility.h"
     18#include "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.
    2522        cloneAll( arg2->get_results(), get_results() );
    26         // for ( Type *& type : get_results() ) {
    27         //      type->set_isLvalue( false );
    28         // }
    2923}
    3024
     
    3933
    4034void CommaExpr::print( std::ostream &os, int indent ) const {
    41         os << "Comma Expression:" << std::endl;
    42         os << std::string( indent+2, ' ' );
     35        os << std::string( indent, ' ' ) << "Comma Expression:" << std::endl;
    4336        arg1->print( os, indent+2 );
    4437        os << std::endl;
    45         os << std::string( indent+2, ' ' );
    4638        arg2->print( os, indent+2 );
    4739        Expression::print( os, indent );
  • src/SynTree/CompoundStmt.cc

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

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

    r242d458 r679864e1  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun 30 13:33:17 2016
    13 // Update Count     : 6
     12// Last Modified On : Thu Jul 30 15:19:16 2015
     13// Update Count     : 5
    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 );
    4033
    4134        virtual Constant *clone() const;
  • src/SynTree/DeclStmt.cc

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

    r242d458 r679864e1  
    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 : Rob Schluntz
    12 // Last Modified On : Wed Dec 09 14:08:29 2015
    13 // Update Count     : 12
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jul 13 17:58:38 2015
     13// Update Count     : 10
    1414//
    1515
     
    2020#include "Initializer.h"
    2121#include "Type.h"
    22 #include "Attribute.h"
    23 #include "Common/utility.h"
     22#include "utility.h"
    2423
    2524static UniqueId lastUniqueId = 0;
     
    5655}
    5756
    58 std::ostream & operator<<( std::ostream & out, Declaration * decl ) {
    59         decl->print( out );
    60         return out;
    61 }
    62 
    63 
    6457// Local Variables: //
    6558// tab-width: 4 //
  • src/SynTree/Declaration.h

    r242d458 r679864e1  
    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 : Tue Jul 12 21:03:17 2016
    13 // Update Count     : 39
     12// Last Modified On : Mon Jul 13 18:15:59 2015
     13// Update Count     : 28
    1414//
    1515
     
    2222#include "Parser/LinkageSpec.h"
    2323#include "Parser/ParseNode.h"
    24 #include <string>
    2524
    2625class Declaration {
     
    4140        void set_isNoreturn( bool newValue ) { isNoreturn = newValue; }
    4241        UniqueId get_uniqueId() const { return uniqueId; }
    43         bool get_extension() const { return extension; }
    44         Declaration *set_extension( bool exten ) { extension = exten; return this; }
    4542
    4643        void fixUniqueId( void );
     
    5956        bool isInline, isNoreturn;
    6057        UniqueId uniqueId;
    61         bool extension = false;
    6258};
    6359
    6460class DeclarationWithType : public Declaration {
    6561  public:
    66         DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, const std::list< Attribute * > & attributes );
     62        DeclarationWithType( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage );
    6763        DeclarationWithType( const DeclarationWithType &other );
    6864        virtual ~DeclarationWithType();
     
    7167        void set_mangleName( std::string newValue ) { mangleName = newValue; }
    7268
    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 
    8169        virtual DeclarationWithType *clone() const = 0;
    8270        virtual DeclarationWithType *acceptMutator( Mutator &m ) = 0;
     
    8775        // this represents the type with all types and typedefs expanded it is generated by SymTab::Validate::Pass2
    8876        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;
    9477};
    9578
     
    9780        typedef DeclarationWithType Parent;
    9881  public:
    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 );
     82        ObjectDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, Expression *bitfieldWidth, Type *type, Initializer *init, bool isInline = false, bool isNoreturn = false );
    10083        ObjectDecl( const ObjectDecl &other );
    10184        virtual ~ObjectDecl();
     
    123106        typedef DeclarationWithType Parent;
    124107  public:
    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 * >() );
     108        FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn );
    126109        FunctionDecl( const FunctionDecl &other );
    127110        virtual ~FunctionDecl();
     
    213196        std::list<TypeDecl*>& get_parameters() { return parameters; }
    214197
    215         bool has_body() const { return body; }
    216         AggregateDecl * set_body( bool body ) { AggregateDecl::body = body; return this; }
    217 
    218198        virtual void print( std::ostream &os, int indent = 0 ) const;
    219199        virtual void printShort( std::ostream &os, int indent = 0 ) const;
     
    224204        std::list<Declaration*> members;
    225205        std::list<TypeDecl*> parameters;
    226         bool body;
    227206};
    228207
     
    236215        virtual void accept( Visitor &v ) { v.visit( this ); }
    237216        virtual Declaration *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     217
    238218  private:
    239219        virtual std::string typeString() const;
     
    266246};
    267247
    268 class 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 
    281 std::ostream & operator<<( std::ostream & out, Declaration * decl );
     248class 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};
    282260
    283261#endif // DECLARATION_H
  • src/SynTree/DeclarationWithType.cc

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

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Wed Aug  3 17:06:51 2016
    13 // Update Count     : 45
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Sep 02 12:07:10 2015
     13// Update Count     : 33
    1414//
    1515
     
    2222
    2323#include "Type.h"
    24 #include "Initializer.h"
    2524#include "Expression.h"
    2625#include "Declaration.h"
    2726#include "Statement.h"
    2827#include "TypeSubstitution.h"
    29 #include "Common/utility.h"
     28#include "utility.h"
    3029
    3130
    3231Expression::Expression( Expression *_aname ) : env( 0 ), argName( _aname ) {}
    3332
    34 Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ), extension( other.extension ) {
     33Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ) {
    3534        cloneAll( other.results, results );
    3635}
     
    6059                argName->print( os, indent+2 );
    6160        } // if
    62 
    63         if ( extension ) {
    64                 os << std::string( indent, ' ' ) << "with extension:";
    65         } // if
    6661}
    6762
     
    7671
    7772void ConstantExpr::print( std::ostream &os, int indent ) const {
    78         os << "constant expression " ;
     73        os << std::string( indent, ' ' ) << "constant expression " ;
    7974        constant.print( os );
    8075        Expression::print( os, indent );
     76        os << std::endl;
    8177}
    8278
    8379VariableExpr::VariableExpr( DeclarationWithType *_var, Expression *_aname ) : Expression( _aname ), var( _var ) {
    84         assert( var );
    85         assert( var->get_type() );
    8680        add_result( var->get_type()->clone() );
    8781        for ( std::list< Type* >::iterator i = get_results().begin(); i != get_results().end(); ++i ) {
     
    9892
    9993void VariableExpr::print( std::ostream &os, int indent ) const {
    100         os << "Variable Expression: ";
     94        os << std::string( indent, ' ' ) << "Variable Expression: ";
    10195
    10296        Declaration *decl = get_var();
     
    109103SizeofExpr::SizeofExpr( Expression *expr_, Expression *_aname ) :
    110104                Expression( _aname ), expr(expr_), type(0), isType(false) {
    111         add_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
     105        add_result( new BasicType( Type::Qualifiers(), BasicType::UnsignedInt ) );
    112106}
    113107
    114108SizeofExpr::SizeofExpr( Type *type_, Expression *_aname ) :
    115109                Expression( _aname ), expr(0), type(type_), isType(true) {
    116         add_result( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ) );
     110        add_result( new BasicType( Type::Qualifiers(), BasicType::UnsignedInt ) );
    117111}
    118112
     
    127121
    128122void SizeofExpr::print( std::ostream &os, int indent) const {
    129         os << "Sizeof Expression on: ";
     123        os << std::string( indent, ' ' ) << "Sizeof Expression on: ";
    130124
    131125        if (isType)
     
    133127        else
    134128                expr->print(os, indent + 2);
    135 
    136         os << std::endl;
    137         Expression::print( os, indent );
    138 }
    139 
    140 AlignofExpr::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 
    145 AlignofExpr::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 
    150 AlignofExpr::AlignofExpr( const AlignofExpr &other ) :
    151         Expression( other ), expr( maybeClone( other.expr ) ), type( maybeClone( other.type ) ), isType( other.isType ) {
    152 }
    153 
    154 AlignofExpr::~AlignofExpr() {
    155         delete expr;
    156         delete type;
    157 }
    158 
    159 void 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 
    171 UntypedOffsetofExpr::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 
    176 UntypedOffsetofExpr::UntypedOffsetofExpr( const UntypedOffsetofExpr &other ) :
    177         Expression( other ), type( maybeClone( other.type ) ), member( other.member ) {}
    178 
    179 UntypedOffsetofExpr::~UntypedOffsetofExpr() {
    180         delete type;
    181 }
    182 
    183 void 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 
    196 OffsetofExpr::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 
    201 OffsetofExpr::OffsetofExpr( const OffsetofExpr &other ) :
    202         Expression( other ), type( maybeClone( other.type ) ), member( maybeClone( other.member ) ) {}
    203 
    204 OffsetofExpr::~OffsetofExpr() {
    205         delete type;
    206         delete member;
    207 }
    208 
    209 void 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 
    230 OffsetPackExpr::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 
    234 OffsetPackExpr::OffsetPackExpr( const OffsetPackExpr &other ) : Expression( other ), type( maybeClone( other.type ) ) {}
    235 
    236 OffsetPackExpr::~OffsetPackExpr() { delete type; }
    237 
    238 void 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         }
    246129
    247130        os << std::endl;
     
    300183
    301184void CastExpr::print( std::ostream &os, int indent ) const {
    302         os << "Cast of:" << std::endl << std::string( indent+2, ' ' );
     185        os << std::string( indent, ' ' ) << "Cast of:" << std::endl;
    303186        arg->print(os, indent+2);
    304187        os << std::endl << std::string( indent, ' ' ) << "to:" << std::endl;
     
    323206
    324207void UntypedMemberExpr::print( std::ostream &os, int indent ) const {
    325         os << "Untyped Member Expression, with field: " << get_member();
     208        os << std::string( indent, ' ' ) << "Member Expression, with field: " << get_member();
    326209
    327210        Expression *agg = get_aggregate();
    328         os << ", from aggregate: ";
    329         if (agg != 0) {
    330                 os << std::string( indent + 2, ' ' );
    331                 agg->print(os, indent + 2);
    332         }
    333         os << std::string( indent+2, ' ' );
     211        os << std::string( indent, ' ' ) << "from aggregate: ";
     212        if (agg != 0) agg->print(os, indent + 2);
    334213        Expression::print( os, indent );
    335214}
     
    344223}
    345224
    346 //// is this right? It's cloning the member, but the member is a declaration so probably shouldn't be cloned...
    347225MemberExpr::MemberExpr( const MemberExpr &other ) :
    348                 Expression( other ), member( other.member ), aggregate( maybeClone( other.aggregate ) ) {
     226                Expression( other ), member( maybeClone( other.member ) ), aggregate( maybeClone( other.aggregate ) ) {
    349227}
    350228
    351229MemberExpr::~MemberExpr() {
    352         // delete member;
     230        delete member;
    353231        delete aggregate;
    354232}
    355233
    356234void MemberExpr::print( std::ostream &os, int indent ) const {
    357         os << "Member Expression, with field: " << std::endl;
     235        os << std::string( indent, ' ' ) << "Member Expression, with field: " << std::endl;
    358236
    359237        assert( member );
     
    364242        Expression *agg = get_aggregate();
    365243        os << std::string( indent, ' ' ) << "from aggregate: " << std::endl;
    366         if (agg != 0) {
    367                 os << std::string( indent + 2, ' ' );
    368                 agg->print(os, indent + 2);
    369         }
    370         os << std::string( indent+2, ' ' );
     244        if (agg != 0) agg->print(os, indent + 2);
    371245        Expression::print( os, indent );
    372246}
     
    386260
    387261void UntypedExpr::print( std::ostream &os, int indent ) const {
    388         os << "Applying untyped: " << std::endl;
    389         os << std::string( indent+2, ' ' );
    390         function->print(os, indent + 2);
     262        os << std::string( indent, ' ' ) << "Applying untyped: " << std::endl;
     263        function->print(os, indent + 4);
    391264        os << std::string( indent, ' ' ) << "...to: " << std::endl;
    392         printAll(args, os, indent + 2);
     265        printArgs(os, indent + 4);
    393266        Expression::print( os, indent );
    394267}
     
    396269void UntypedExpr::printArgs( std::ostream &os, int indent ) const {
    397270        std::list<Expression *>::const_iterator i;
    398         for (i = args.begin(); i != args.end(); i++) {
    399                 os << std::string(indent, ' ' );
     271        for (i = args.begin(); i != args.end(); i++)
    400272                (*i)->print(os, indent);
    401         }
    402273}
    403274
     
    410281
    411282void NameExpr::print( std::ostream &os, int indent ) const {
    412         os << "Name: " << get_name() << std::endl;
     283        os << std::string( indent, ' ' ) << "Name: " << get_name() << std::endl;
    413284        Expression::print( os, indent );
    414285}
     
    461332}
    462333
    463 AsmExpr::AsmExpr( const AsmExpr & other ) : inout( maybeClone( other.inout ) ), constraint( maybeClone( other.constraint ) ), operand( maybeClone( other.operand ) ) {}
    464 
    465 
    466334void AsmExpr::print( std::ostream &os, int indent ) const {
    467335        os << "Asm Expression: " << std::endl;
     
    471339}
    472340
    473 
    474 ImplicitCopyCtorExpr::ImplicitCopyCtorExpr( ApplicationExpr * callExpr ) : callExpr( callExpr ) {
    475         assert( callExpr );
    476         cloneAll( callExpr->get_results(), results );
    477 }
    478 
    479 ImplicitCopyCtorExpr::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 
    485 ImplicitCopyCtorExpr::~ImplicitCopyCtorExpr() {
    486         delete callExpr;
    487         deleteAll( tempDecls );
    488         deleteAll( returnDecls );
    489         deleteAll( dtors );
    490 }
    491 
    492 void 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 
    503 UntypedValofExpr::UntypedValofExpr( const UntypedValofExpr & other ) : Expression( other ), body ( maybeClone( other.body ) ) {}
    504 
    505 UntypedValofExpr::~UntypedValofExpr() { delete body; }
    506 
    507341void UntypedValofExpr::print( std::ostream &os, int indent ) const {
    508342        os << std::string( indent, ' ' ) << "Valof Expression: " << std::endl;
    509343        if ( get_body() != 0 )
    510344                get_body()->print( os, indent + 2 );
    511 }
    512 
    513 
    514 CompoundLiteralExpr::CompoundLiteralExpr( Type * type, Initializer * initializer ) : type( type ), initializer( initializer ) {
    515         add_result( type->clone() );
    516 }
    517 
    518 CompoundLiteralExpr::CompoundLiteralExpr( const CompoundLiteralExpr &other ) : Expression( other ), type( maybeClone( other.type ) ), initializer( maybeClone( other.initializer ) ) {}
    519 
    520 CompoundLiteralExpr::~CompoundLiteralExpr() {
    521         delete initializer;
    522         delete type;
    523 }
    524 
    525 void 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 
    531 RangeExpr::RangeExpr( ConstantExpr *low, ConstantExpr *high ) : low( low ), high( high ) {}
    532 RangeExpr::RangeExpr( const RangeExpr &other ) : low( other.low->clone() ), high( other.high->clone() ) {}
    533 void 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 
    540 std::ostream & operator<<( std::ostream & out, Expression * expr ) {
    541         expr->print( out );
    542         return out;
    543345}
    544346
  • src/SynTree/Expression.h

    r242d458 r679864e1  
    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 : Wed Aug  3 17:08:44 2016
    13 // Update Count     : 27
     12// Last Modified On : Fri Jul 24 13:49:28 2015
     13// Update Count     : 18
    1414//
    1515
     
    1818
    1919#include <map>
    20 #include <memory>
    2120#include "SynTree.h"
    2221#include "Visitor.h"
    2322#include "Mutator.h"
    2423#include "Constant.h"
    25 #include "Common/UniqueName.h"
    26 
    27 /// Expression is the root type for all expressions
     24
    2825class Expression {
    2926  public:
     
    3936        Expression *get_argName() const { return argName; }
    4037        void set_argName( Expression *name ) { argName = name; }
    41         bool get_extension() const { return extension; }
    42         Expression * set_extension( bool exten ) { extension = exten; return this; }
    4338
    4439        virtual Expression *clone() const = 0;
     
    5045        TypeSubstitution *env;
    5146        Expression* argName; // if expression is used as an argument, it can be "designated" by this name
    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
     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
    5752struct ParamEntry {
    5853        ParamEntry(): decl( 0 ), actualType( 0 ), formalType( 0 ), expr( 0 ) {}
     
    7065typedef std::map< UniqueId, ParamEntry > InferredParams;
    7166
    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.
     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
    7470class ApplicationExpr : public Expression {
    7571  public:
     
    9389};
    9490
    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.
     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
    9895class UntypedExpr : public Expression {
    9996  public:
     
    121118};
    122119
    123 /// NameExpr contains a name whose meaning is still not determined
     120// this class contains a name whose meaning is still not determined
    124121class NameExpr : public Expression {
    125122  public:
     
    142139// function-call format.
    143140
    144 /// AddressExpr represents a address-of expression, e.g. &e
     141// AddressExpr represents a address-of expression, e.g. &e
    145142class AddressExpr : public Expression {
    146143  public:
     
    160157};
    161158
    162 // xxx - this doesn't appear to actually be hooked in anywhere. We should use this instead of the "&&"" UntypedExpr hack
    163159class LabelAddressExpr : public Expression {
    164160  public:
    165161        LabelAddressExpr( Expression *arg );
    166         LabelAddressExpr( const LabelAddressExpr &other );
     162        LabelAddressExpr( const AddressExpr &other );
    167163        virtual ~LabelAddressExpr();
    168164
     
    178174};
    179175
    180 /// CastExpr represents a type cast expression, e.g. (int)e
     176// CastExpr represents a type cast expression, e.g. (int)e
    181177class CastExpr : public Expression {
    182178  public:
     
    197193};
    198194
    199 /// UntypedMemberExpr represents a member selection operation, e.g. q.p before processing by the expression analyzer
     195// UntypedMemberExpr represents a member selection operation, e.g. q.p before processing by the expression analyzer
    200196class UntypedMemberExpr : public Expression {
    201197  public:
     
    218214};
    219215
    220 /// MemberExpr represents a member selection operation, e.g. q.p after processing by the expression analyzer
     216// MemberExpr represents a member selection operation, e.g. q.p after processing by the expression analyzer
    221217class MemberExpr : public Expression {
    222218  public:
     
    239235};
    240236
    241 /// VariableExpr represents an expression that simply refers to the value of a named variable
     237// VariableExpr represents an expression that simply refers to the value of a named variable
    242238class VariableExpr : public Expression {
    243239  public:
     
    257253};
    258254
    259 /// ConstantExpr represents an expression that simply refers to the value of a constant
     255// ConstantExpr represents an expression that simply refers to the value of a constant
    260256class ConstantExpr : public Expression {
    261257  public:
     
    275271};
    276272
    277 /// SizeofExpr represents a sizeof expression (could be sizeof(int) or sizeof 3+4)
     273// SizeofExpr represents a sizeof expression (could be sizeof(int) or sizeof 3+4)
    278274class SizeofExpr : public Expression {
    279275  public:
     
    300296};
    301297
    302 /// AlignofExpr represents an alignof expression
    303 class 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
    328 class 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
    349 class 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
    370 class OffsetPackExpr : public Expression {
    371 public:
    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 
    385 private:
    386         StructInstType *type;
    387 };
    388 
    389 /// AttrExpr represents an @attribute expression (like sizeof, but user-defined)
     298// AttrExpr represents an @attribute expression (like sizeof, but user-defined)
    390299class AttrExpr : public Expression {
    391300  public:
     
    415324};
    416325
    417 /// LogicalExpr represents a short-circuit boolean expression (&& or ||)
     326// LogicalExpr represents a short-circuit boolean expression (&& or ||)
    418327class LogicalExpr : public Expression {
    419328  public:
     
    438347};
    439348
    440 /// ConditionalExpr represents the three-argument conditional ( p ? a : b )
     349// ConditionalExpr represents the three-argument conditional ( p ? a : b )
    441350class ConditionalExpr : public Expression {
    442351  public:
     
    462371};
    463372
    464 /// CommaExpr represents the sequence operator ( a, b )
     373// CommaExpr represents the sequence operator ( a, b )
    465374class CommaExpr : public Expression {
    466375  public:
     
    483392};
    484393
    485 /// TupleExpr represents a tuple expression ( [a, b, c] )
     394// TupleExpr represents a tuple expression ( [a, b, c] )
    486395class TupleExpr : public Expression {
    487396  public:
     
    501410};
    502411
    503 /// SolvedTupleExpr represents a TupleExpr whose components have been type-resolved. It is effectively a shell for the code generator to work on
     412// SolvedTupleExpr represents a TupleExpr whose components have been type-resolved. It is effectively a shell for the code generator to work on
    504413class SolvedTupleExpr : public Expression {
    505414  public:
     
    519428};
    520429
    521 /// TypeExpr represents a type used in an expression (e.g. as a type generator parameter)
     430// TypeExpr represents a type used in an expression (e.g. as a type generator parameter)
    522431class TypeExpr : public Expression {
    523432  public:
     
    537446};
    538447
    539 /// AsmExpr represents a GCC 'asm constraint operand' used in an asm statement: [output] "=f" (result)
     448// AsmExpr represents a GCC 'asm constraint operand' used in an asm statement: [output] "=f" (result)
    540449class AsmExpr : public Expression {
    541450  public:
    542451        AsmExpr( Expression *inout, ConstantExpr *constraint, Expression *operand ) : inout( inout ), constraint( constraint ), operand( operand ) {}
    543         AsmExpr( const AsmExpr & other );
    544452        virtual ~AsmExpr() { delete inout; delete constraint; delete operand; };
    545453
     
    564472};
    565473
    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.
    568 class ImplicitCopyCtorExpr : public Expression {
    569 public:
    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'
     474// ValofExpr represents a GCC 'lambda expression'
    598475class UntypedValofExpr : public Expression {
    599476  public:
    600477        UntypedValofExpr( Statement *_body, Expression *_aname = 0 ) : Expression( _aname ), body ( _body ) {}
    601         UntypedValofExpr( const UntypedValofExpr & other );
    602         virtual ~UntypedValofExpr();
     478        virtual ~UntypedValofExpr() {}
    603479
    604480        Expression *get_value();
     
    612488        Statement *body;
    613489};
    614 
    615 /// CompoundLiteralExpr represents a C99 'compound literal'
    616 class 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 
    637 class 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 
    655 std::ostream & operator<<( std::ostream & out, Expression * expr );
    656490
    657491#endif // EXPRESSION_H
  • src/SynTree/FunctionDecl.cc

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // FunctionDecl.cc --
     7// FunctionDecl.cc -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 06 15:59:48 2016
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jul 13 18:11:44 2015
    1313// Update Count     : 19
    1414//
     
    1919#include "Statement.h"
    2020#include "Type.h"
    21 #include "Attribute.h"
    22 #include "Common/utility.h"
     21#include "utility.h"
    2322
    24 FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn, std::list< Attribute * > attributes )
    25                 : Parent( name, sc, linkage, attributes ), type( type ), statements( statements ) {
     23FunctionDecl::FunctionDecl( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Type linkage, FunctionType *type, CompoundStmt *statements, bool isInline, bool isNoreturn )
     24                : Parent( name, sc, linkage ), type( type ), statements( statements ) {
    2625        set_isInline( isInline );
    2726        set_isNoreturn( isNoreturn );
     
    5352        using std::endl;
    5453        using std::string;
    55 
     54       
    5655        if ( get_name() != "" ) {
    5756                os << get_name() << ": ";
     
    6665                os << "_Noreturn ";
    6766        } // if
    68 
    69         printAll( get_attributes(), os, indent );
    70 
    7167        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    7268                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
     
    9187        if ( statements ) {
    9288                os << string( indent + 2, ' ' ) << "with body " << endl;
    93                 os << string( indent + 4, ' ' );
    9489                statements->print( os, indent + 4 );
    9590        } // if
     
    9994        using std::endl;
    10095        using std::string;
    101 
     96       
    10297        if ( get_name() != "" ) {
    10398                os << get_name() << ": ";
     
    109104                os << "_Noreturn ";
    110105        } // if
    111 
    112         // xxx - should printShort print attributes?
    113 
    114106        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    115107                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
  • src/SynTree/FunctionType.cc

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

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Initializer.cc --
     7// Initializer.cc -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri May 13 13:23:03 2016
    13 // Update Count     : 28
     12// Last Modified On : Wed Aug 12 14:05:25 2015
     13// Update Count     : 14
    1414//
    1515
    1616#include "Initializer.h"
    1717#include "Expression.h"
    18 #include "Statement.h"
    19 #include "Common/utility.h"
     18#include "utility.h"
    2019
    21 Initializer::Initializer( bool maybeConstructed ) : maybeConstructed( maybeConstructed ) {}
    22 Initializer::Initializer( const Initializer & other ) : maybeConstructed( other.maybeConstructed ) {
    23 }
    24 
     20Initializer::Initializer() {}
    2521
    2622Initializer::~Initializer() {}
     
    3531void Initializer::print( std::ostream &os, int indent ) {}
    3632
    37 SingleInit::SingleInit( Expression *v, const std::list< Expression *> &_designators, bool maybeConstructed ) : Initializer( maybeConstructed ), value ( v ), designators( _designators ) {
     33SingleInit::SingleInit( Expression *v, std::list< Expression *> &_designators ) : value ( v ), designators( _designators ) {
    3834}
    3935
    40 SingleInit::SingleInit( const SingleInit &other ) : Initializer(other), value ( maybeClone( other.value ) ) {
     36SingleInit::SingleInit( const SingleInit &other ) : value ( other.value ) {
    4137        cloneAll(other.designators, designators );
    4238}
    4339
    44 SingleInit::~SingleInit() {
    45         deleteAll(designators);
    46 }
     40SingleInit::~SingleInit() {}
     41
     42SingleInit *SingleInit::clone() const { return new SingleInit( *this); }
    4743
    4844void SingleInit::print( std::ostream &os, int indent ) {
    4945        os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: " << std::endl;
    50         os << std::string(indent+4, ' ' );
    5146        value->print( os, indent+4 );
    5247
    5348        if ( ! designators.empty() ) {
    54                 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: " << std::endl;
     49                os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "   << std::endl;
    5550                for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) {
    56                         os << std::string(indent + 4, ' ' );
    5751                        ( *i )->print(os, indent + 4 );
    5852                }
     
    6054}
    6155
    62 ListInit::ListInit( const std::list<Initializer*> &_initializers, const std::list<Expression *> &_designators, bool maybeConstructed )
    63         : Initializer( maybeConstructed ), initializers( _initializers ), designators( _designators ) {
     56ListInit::ListInit( std::list<Initializer*> &_initializers, std::list<Expression *> &_designators )
     57        : initializers( _initializers ), designators( _designators ) {
    6458}
    6559
    66 ListInit::~ListInit() {
    67         deleteAll( initializers );
    68         deleteAll( designators );
     60ListInit::~ListInit() {}
     61
     62ListInit *ListInit::clone() const {
     63        return new ListInit( *this );
    6964}
    7065
    7166void ListInit::print( std::ostream &os, int indent ) {
    72         os << std::endl << std::string(indent, ' ') << "Compound initializer:  ";
     67        os << std::endl << std::string(indent, ' ') << "Compound initializer:  "; 
    7368        if ( ! designators.empty() ) {
    7469                os << std::string(indent + 2, ' ' ) << "designated by: [";
    7570                for ( std::list < Expression * >::iterator i = designators.begin();
    7671                          i != designators.end(); i++ ) {
    77                         ( *i )->print(os, indent + 4 );
     72                        ( *i )->print(os, indent + 4 ); 
    7873                } // for
    79 
     74       
    8075                os << std::string(indent + 2, ' ' ) << "]";
    8176        } // if
    8277
    83         for ( std::list<Initializer *>::iterator i = initializers.begin(); i != initializers.end(); i++ )
     78        for ( std::list<Initializer *>::iterator i = initializers.begin(); i != initializers.end(); i++ ) 
    8479                (*i)->print( os, indent + 2 );
    8580}
    86 
    87 
    88 ConstructorInit::ConstructorInit( Statement * ctor, Statement * dtor, Initializer * init ) : Initializer( true ), ctor( ctor ), dtor( dtor ), init( init ) {}
    89 ConstructorInit::ConstructorInit( const ConstructorInit &other ) : Initializer( other ), ctor( maybeClone( other.ctor ) ), dtor( maybeClone( other.dtor ) ), init( maybeClone( other.init ) ) {
    90 }
    91 
    92 ConstructorInit::~ConstructorInit() {
    93         delete ctor;
    94         delete dtor;
    95         delete init;
    96 }
    97 
    98 void ConstructorInit::print( std::ostream &os, int indent ) {
    99         os << std::endl << std::string(indent, ' ') << "Constructor initializer: " << std::endl;
    100         if ( ctor ) {
    101                 os << std::string(indent+2, ' ');
    102                 os << "initially constructed with ";
    103                 ctor->print( os, indent+4 );
    104         } // if
    105 
    106         if ( dtor ) {
    107                 os << std::string(indent+2, ' ');
    108                 os << "destructed with ";
    109                 dtor->print( os, indent+4 );
    110         }
    111 
    112         if ( init ) {
    113                 os << std::string(indent+2, ' ');
    114                 os << "with fallback C-style initializer: ";
    115                 init->print( os, indent+4 );
    116         }
    117 }
    118 
    119 std::ostream & operator<<( std::ostream & out, Initializer * init ) {
    120         init->print( out );
    121         return out;
    122 }
    123 
    12481// Local Variables: //
    12582// tab-width: 4 //
  • src/SynTree/Initializer.h

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // Initializer.h --
     7// Initializer.h -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Apr 12 13:49:13 2016
    13 // Update Count     : 19
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon May 18 09:03:48 2015
     13// Update Count     : 1
    1414//
    1515
     
    2020#include "Visitor.h"
    2121#include "Mutator.h"
    22 #include "Type.h"
    2322
    2423#include <cassert>
     
    2827  public:
    2928        //      Initializer( std::string _name = std::string(""), int _pos = 0 );
    30         Initializer( bool maybeConstructed );
    31         Initializer( const Initializer & other );
     29        Initializer( );
    3230        virtual ~Initializer();
    3331
     
    4543        }
    4644
    47         bool get_maybeConstructed() { return maybeConstructed; }
    48 
    4945        virtual Initializer *clone() const = 0;
    5046        virtual void accept( Visitor &v ) = 0;
     
    5450        //      std::string name;
    5551        //      int pos;
    56         bool maybeConstructed;
    5752};
    5853
     
    6055class SingleInit : public Initializer {
    6156  public:
    62         SingleInit( Expression *value, const std::list< Expression *> &designators = std::list< Expression * >(), bool maybeConstructed = false );
     57        SingleInit( Expression *value, std::list< Expression *> &designators );
    6358        SingleInit( const SingleInit &other );
    6459        virtual ~SingleInit();
    65 
     60       
    6661        Expression *get_value() { return value; }
    6762        void set_value( Expression *newValue ) { value = newValue; }
     
    7065        std::list<Expression *> &get_designators() { return designators; }
    7166
    72         virtual SingleInit *clone() const { return new SingleInit( *this); }
     67        virtual SingleInit *clone() const;
    7368        virtual void accept( Visitor &v ) { v.visit( this ); }
    7469        virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     
    8479class ListInit : public Initializer {
    8580  public:
    86         ListInit( const std::list<Initializer*> &initializers,
    87                           const std::list<Expression *> &designators = std::list< Expression * >(), bool maybeConstructed = false );
     81        ListInit( std::list<Initializer*> &,
     82                          std::list<Expression *> &designators = *(new std::list<Expression *>()) );
    8883        virtual ~ListInit();
    8984
     
    9388        std::list<Initializer*> &get_initializers() { return initializers; }
    9489
    95         typedef std::list<Initializer*>::iterator iterator;
    96         iterator begin() { return initializers.begin(); }
    97         iterator end() { return initializers.end(); }
     90        std::list<Initializer*>::iterator begin_initializers() { return initializers.begin(); }
     91        std::list<Initializer*>::iterator end_initializers() { return initializers.end(); }
    9892
    99         virtual ListInit *clone() const { return new ListInit( *this ); }
     93        virtual ListInit *clone() const;
    10094        virtual void accept( Visitor &v ) { v.visit( this ); }
    10195        virtual Initializer *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     
    106100};
    107101
    108 // ConstructorInit represents an initializer that is either a constructor expression or
    109 // a C-style initializer.
    110 class 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 
    136 std::ostream & operator<<( std::ostream & out, Initializer * init );
    137 
    138102#endif // INITIALIZER_H
    139103
  • src/SynTree/Mutator.cc

    r242d458 r679864e1  
    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 : Thu Aug  4 11:23:21 2016
    13 // Update Count     : 19
     12// Last Modified On : Sat Jul 25 19:21:33 2015
     13// Update Count     : 11
    1414//
    1515
     
    2222#include "Expression.h"
    2323#include "Constant.h"
    24 #include "Common/utility.h"
     24#include "utility.h"
    2525
    2626Mutator::Mutator() {}
     
    6363}
    6464
    65 Declaration *Mutator::mutate( TraitDecl *aggregateDecl ) {
     65Declaration *Mutator::mutate( ContextDecl *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_statements(), *this );
     128        mutateAll( switchStmt->get_branches(), *this );
    129129        return switchStmt;
     130}
     131
     132Statement *Mutator::mutate( ChooseStmt *switchStmt ) {
     133        switchStmt->set_condition( maybeMutate( switchStmt->get_condition(), *this ) );
     134        mutateAll( switchStmt->get_branches(), *this );
     135        return switchStmt;
     136}
     137
     138Statement *Mutator::mutate( FallthruStmt *fallthruStmt ) {
     139        return fallthruStmt;
    130140}
    131141
     
    170180        declStmt->set_decl( maybeMutate( declStmt->get_decl(), *this ) );
    171181        return declStmt;
    172 }
    173 
    174 Statement *Mutator::mutate( ImplicitCtorDtorStmt *impCtorDtorStmt ) {
    175         impCtorDtorStmt->set_callStmt( maybeMutate( impCtorDtorStmt->get_callStmt(), *this ) );
    176         return impCtorDtorStmt;
    177182}
    178183
     
    246251}
    247252
    248 Expression *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 
    258 Expression *Mutator::mutate( UntypedOffsetofExpr *offsetofExpr ) {
    259         mutateAll( offsetofExpr->get_results(), *this );
    260         offsetofExpr->set_type( maybeMutate( offsetofExpr->get_type(), *this ) );
    261         return offsetofExpr;
    262 }
    263 
    264 Expression *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 
    271 Expression *Mutator::mutate( OffsetPackExpr *offsetPackExpr ) {
    272         mutateAll( offsetPackExpr->get_results(), *this );
    273         offsetPackExpr->set_type( maybeMutate( offsetPackExpr->get_type(), *this ) );
    274         return offsetPackExpr;
    275 }
    276 
    277253Expression *Mutator::mutate( AttrExpr *attrExpr ) {
    278254        mutateAll( attrExpr->get_results(), *this );
     
    332308}
    333309
    334 Expression* 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 
    341310Expression *Mutator::mutate( UntypedValofExpr *valofExpr ) {
    342311        mutateAll( valofExpr->get_results(), *this );
    343312        return valofExpr;
    344 }
    345 
    346 Expression *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 
    353 Expression *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;
    357313}
    358314
     
    408364}
    409365
    410 Type *Mutator::mutate( TraitInstType *aggregateUseType ) {
     366Type *Mutator::mutate( ContextInstType *aggregateUseType ) {
    411367        handleReferenceToType( aggregateUseType );
    412368        mutateAll( aggregateUseType->get_members(), *this );
     
    442398}
    443399
    444 Type *Mutator::mutate( VarArgsType *varArgsType ) {
    445         mutateAll( varArgsType->get_forall(), *this );
    446         return varArgsType;
    447 }
    448 
    449400Initializer *Mutator::mutate( SingleInit *singleInit ) {
    450401        singleInit->set_value( singleInit->get_value()->acceptMutator( *this ) );
     
    456407        mutateAll( listInit->get_initializers(), *this );
    457408        return listInit;
    458 }
    459 
    460 Initializer *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;
    464409}
    465410
  • src/SynTree/Mutator.h

    r242d458 r679864e1  
    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 : Wed Aug  3 16:59:45 2016
    13 // Update Count     : 12
     12// Last Modified On : Thu Jul 23 23:24:18 2015
     13// Update Count     : 7
    1414//
    1515#include <cassert>
    1616
    1717#include "SynTree.h"
    18 #include "Common/SemanticError.h"
     18#include "SemanticError.h"
    1919
    2020#ifndef MUTATOR_H
     
    3131        virtual Declaration* mutate( UnionDecl *aggregateDecl );
    3232        virtual Declaration* mutate( EnumDecl *aggregateDecl );
    33         virtual Declaration* mutate( TraitDecl *aggregateDecl );
     33        virtual Declaration* mutate( ContextDecl *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 );
    4446        virtual Statement* mutate( CaseStmt *caseStmt );
    4547        virtual Statement* mutate( BranchStmt *branchStmt );
     
    5052        virtual NullStmt* mutate( NullStmt *nullStmt );
    5153        virtual Statement* mutate( DeclStmt *declStmt );
    52         virtual Statement* mutate( ImplicitCtorDtorStmt *impCtorDtorStmt );
    5354
    5455        virtual Expression* mutate( ApplicationExpr *applicationExpr );
     
    6162        virtual Expression* mutate( MemberExpr *memberExpr );
    6263        virtual Expression* mutate( VariableExpr *variableExpr );
    63         virtual Expression* mutate( ConstantExpr *constantExpr );
     64        virtual Expression* mutate( ConstantExpr *constantExpr ); 
    6465        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 );
    6966        virtual Expression* mutate( AttrExpr *attrExpr );
    7067        virtual Expression* mutate( LogicalExpr *logicalExpr );
     
    7572        virtual Expression* mutate( TypeExpr *typeExpr );
    7673        virtual Expression* mutate( AsmExpr *asmExpr );
    77         virtual Expression* mutate( ImplicitCopyCtorExpr *impCpCtorExpr );
    7874        virtual Expression* mutate( UntypedValofExpr *valofExpr );
    79         virtual Expression* mutate( CompoundLiteralExpr *compLitExpr );
    80         virtual Expression* mutate( RangeExpr *rangeExpr );
    8175
    8276        virtual Type* mutate( VoidType *basicType );
     
    8882        virtual Type* mutate( UnionInstType *aggregateUseType );
    8983        virtual Type* mutate( EnumInstType *aggregateUseType );
    90         virtual Type* mutate( TraitInstType *aggregateUseType );
     84        virtual Type* mutate( ContextInstType *aggregateUseType );
    9185        virtual Type* mutate( TypeInstType *aggregateUseType );
    9286        virtual Type* mutate( TupleType *tupleType );
    9387        virtual Type* mutate( TypeofType *typeofType );
    9488        virtual Type* mutate( AttrType *attrType );
    95         virtual Type* mutate( VarArgsType *varArgsType );
    9689
    9790        virtual Initializer* mutate( SingleInit *singleInit );
    9891        virtual Initializer* mutate( ListInit *listInit );
    99         virtual Initializer* mutate( ConstructorInit *ctorInit );
    10092
    10193        virtual Subrange *mutate( Subrange *subrange );
     
    111103inline TreeType *maybeMutate( TreeType *tree, MutatorType &mutator ) {
    112104        if ( tree ) {
    113                 TreeType *newnode = dynamic_cast< TreeType * >( tree->acceptMutator( mutator ) );
     105                TreeType *newnode = dynamic_cast< TreeType* >( tree->acceptMutator( mutator ) );
    114106                assert( newnode );
    115107                return newnode;
  • src/SynTree/NamedTypeDecl.cc

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

    r242d458 r679864e1  
    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 : Rob Schluntz
    12 // Last Modified On : Fri May 13 13:23:32 2016
    13 // Update Count     : 30
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon Jul 13 18:08:27 2015
     13// Update Count     : 16
    1414//
    1515
     
    1818#include "Initializer.h"
    1919#include "Expression.h"
    20 #include "Attribute.h"
    21 #include "Common/utility.h"
    22 #include "Statement.h"
     20#include "utility.h"
    2321
    24 ObjectDecl::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 ) {
     22ObjectDecl::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 ) {
    2624        set_isInline( isInline );
    2725        set_isNoreturn( isNoreturn );
     
    4745        } // if
    4846
    49         printAll( get_attributes(), os, indent );
    50 
    5147        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
    5248                os << DeclarationNode::storageName[ get_storageClass() ] << ' ';
     
    5652                get_type()->print( os, indent );
    5753        } else {
    58                 os << " untyped entity ";
     54                os << "untyped entity ";
    5955        } // if
    6056
    6157        if ( init ) {
    62                 os << " with initializer ";
     58                os << "with initializer ";
    6359                init->print( os, indent );
    64                 os << std::endl << std::string(indent, ' ');
    65                 os << "maybeConstructed? " << init->get_maybeConstructed();
    6660        } // if
    6761
    6862        if ( bitfieldWidth ) {
    69                 os << std::string(indent, ' ');
    70                 os << " with bitfield width ";
     63                os << "with bitfield width ";
    7164                bitfieldWidth->print( os );
    7265        } // if
     
    7669#if 0
    7770        if ( get_mangleName() != "") {
    78                 os << get_mangleName() << ": ";
    79         } else
     71                os << get_mangleName() << ": "; 
     72        } else 
    8073#endif
    8174        if ( get_name() != "" ) {
    8275                os << get_name() << ": ";
    8376        } // if
    84 
    85         // xxx - should printShort print attributes?
    8677
    8778        if ( get_storageClass() != DeclarationNode::NoStorageClass ) {
  • src/SynTree/PointerType.cc

    r242d458 r679864e1  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 15 15:39:10 2015
    13 // Update Count     : 5
     12// Last Modified On : Mon May 18 10:15:16 2015
     13// Update Count     : 2
    1414//
    1515
    1616#include "Type.h"
    1717#include "Expression.h"
    18 #include "Common/utility.h"
     18#include "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 );
    2223}
    2324
    2425PointerType::PointerType( const Type::Qualifiers &tq, Type *base, Expression *dimension, bool isVarLen, bool isStatic )
    2526        : Type( tq ), base( base ), dimension( dimension ), isVarLen( isVarLen ), isStatic( isStatic ) {
     27        base->set_isLvalue( false );
    2628}
    2729
  • src/SynTree/ReferenceToType.cc

    r242d458 r679864e1  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Jul 13 18:03:30 2016
    13 // Update Count     : 9
     12// Last Modified On : Sun Jun  7 08:31:48 2015
     13// Update Count     : 4
    1414//
    1515
     
    2121#include "Expression.h"
    2222#include "TypeSubstitution.h"
    23 #include "Common/utility.h"
     23#include "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
    61 std::list<TypeDecl*>* StructInstType::get_baseParameters() {
    62         if ( ! baseStruct ) return NULL;
    63         return &baseStruct->get_parameters();
    64 }
    65 
    6661void StructInstType::lookup( const std::string &name, std::list< Declaration* > &foundDecls ) const {
    6762        assert( baseStruct );
     
    6964}
    7065
    71 void 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 
    8566std::string UnionInstType::typeString() const { return "union"; }
    86 
    87 std::list<TypeDecl*>* UnionInstType::get_baseParameters() {
    88         if ( ! baseUnion ) return NULL;
    89         return &baseUnion->get_parameters();
    90 }
    9167
    9268void UnionInstType::lookup( const std::string &name, std::list< Declaration* > &foundDecls ) const {
     
    9571}
    9672
    97 void 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 
    11173std::string EnumInstType::typeString() const { return "enum"; }
    11274
    113 std::string TraitInstType::typeString() const { return "context"; }
     75std::string ContextInstType::typeString() const { return "context"; }
    11476
    115 TraitInstType::TraitInstType( const TraitInstType &other ) : Parent( other ) {
     77ContextInstType::ContextInstType( const ContextInstType &other ) : Parent( other ) {
    11678        cloneAll( other.members, members );
    11779}
    11880
    119 TraitInstType::~TraitInstType() {
     81ContextInstType::~ContextInstType() {
    12082        deleteAll( members );
    12183}
  • src/SynTree/Statement.cc

    r242d458 r679864e1  
    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 : Thu Aug  4 11:25:20 2016
    13 // Update Count     : 61
     12// Last Modified On : Sat Jul 25 12:19:50 2015
     13// Update Count     : 53
    1414//
    1515
     
    3636ExprStmt::ExprStmt( std::list<Label> _labels, Expression *_expr ) : Statement( _labels ), expr( _expr ) {}
    3737
    38 ExprStmt::ExprStmt( const ExprStmt &other ) : Statement( other ), expr( maybeClone( other.expr ) ) {}
    39 
    40 ExprStmt::~ExprStmt() {
    41         delete expr;
    42 }
     38ExprStmt::~ExprStmt() {}
    4339
    4440void ExprStmt::print( std::ostream &os, int indent ) const {
    45         os << "Expression Statement:" << endl << std::string( indent + 2, ' ' );
     41        os << string( indent, ' ' ) << "Expression Statement:" << endl;
    4642        expr->print( os, indent + 2 );
    47 }
     43} 
    4844
    4945
    5046AsmStmt::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 
    52 AsmStmt::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 }
    5747
    5848AsmStmt::~AsmStmt() {
     
    7060                os << endl << std::string( indent, ' ' ) << "output: " << endl;
    7161                printAll( output, os, indent + 2 );
    72         } // if
     62        } // if 
    7363        if ( ! input.empty() ) {
    7464                os << std::string( indent, ' ' ) << "input: " << endl << std::string( indent, ' ' );
     
    7969                printAll( clobber, os, indent + 2 );
    8070        } // if
    81 }
     71} 
    8272
    8373
     
    8777        Statement( labels ), originalTarget( _target ), target( _target ), computedTarget( NULL ), type( _type ) {
    8878        //actually this is a syntactic error signaled by the parser
    89         if ( type == BranchStmt::Goto && target.empty() )
     79        if ( type == BranchStmt::Goto && target.size() == 0 )
    9080                throw SemanticError("goto without target");
    9181}
     
    10393ReturnStmt::ReturnStmt( std::list<Label> labels, Expression *_expr, bool throwP ) : Statement( labels ), expr( _expr ), isThrow( throwP ) {}
    10494
    105 ReturnStmt::ReturnStmt( const ReturnStmt & other ) : Statement( other ), expr( maybeClone( other.expr ) ), isThrow( other.isThrow ) {}
    106 
    10795ReturnStmt::~ReturnStmt() {
    10896        delete expr;
     
    11098
    11199void ReturnStmt::print( std::ostream &os, int indent ) const {
    112         os << string ( isThrow? "Throw":"Return" ) << " Statement, returning: ";
    113         if ( expr != 0 ) {
    114                 os << endl << string( indent+2, ' ' );
    115                 expr->print( os, indent + 2 );
    116         }
     100        os << std::string( indent, ' ' ) << string ( isThrow? "Throw":"Return" ) << " Statement, returning: ";
     101        if ( expr != 0 ) expr->print( os );
    117102        os << endl;
    118103}
     
    121106        Statement( _labels ), condition( _condition ), thenPart( _thenPart ), elsePart( _elsePart ) {}
    122107
    123 IfStmt::IfStmt( const IfStmt & other ) :
    124         Statement( other ), condition( maybeClone( other.condition ) ), thenPart( maybeClone( other.thenPart ) ), elsePart( maybeClone( other.elsePart ) ) {}
    125 
    126108IfStmt::~IfStmt() {}
    127109
    128110void IfStmt::print( std::ostream &os, int indent ) const {
    129         os << "If on condition: " << endl ;
    130         os << string( indent+4, ' ' );
     111        os << string( indent, ' ' ) << "If on condition: " << endl ;
    131112        condition->print( os, indent + 4 );
    132113
    133         os << string( indent+2, ' ' ) << "... then: " << endl;
    134 
    135         os << string( indent+4, ' ' );
     114        os << string( indent, ' ' ) << ".... and branches: " << endl;
     115
    136116        thenPart->print( os, indent + 4 );
    137117
    138118        if ( elsePart != 0 ) {
    139                 os << string( indent+2, ' ' ) << "... else: " << endl;
    140                 os << string( indent+4, ' ' );
    141119                elsePart->print( os, indent + 4 );
    142120        } // if
    143121}
    144122
    145 SwitchStmt::SwitchStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_statements ):
    146         Statement( _labels ), condition( _condition ), statements( _statements ) {
    147 }
    148 
    149 SwitchStmt::SwitchStmt( const SwitchStmt & other ):
    150         Statement( other ), condition( maybeClone( other.condition ) ) {
    151         cloneAll( other.statements, statements );
     123SwitchStmt::SwitchStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_branches ):
     124        Statement( _labels ), condition( _condition ), branches( _branches ) {
    152125}
    153126
    154127SwitchStmt::~SwitchStmt() {
    155128        delete condition;
    156         // destroy statements
    157 }
     129        // destroy branches
     130}
     131
     132void SwitchStmt::add_case( CaseStmt *c ) {}
    158133
    159134void SwitchStmt::print( std::ostream &os, int indent ) const {
    160         os << "Switch on condition: ";
     135        os << string( indent, ' ' ) << "Switch on condition: ";
    161136        condition->print( os );
    162137        os << endl;
    163138
    164         // statements
     139        // branches
    165140        std::list<Statement *>::const_iterator i;
    166         for ( i = statements.begin(); i != statements.end(); i++)
     141        for ( i = branches.begin(); i != branches.end(); i++)
    167142                (*i)->print( os, indent + 4 );
    168143
    169         //for_each( statements.begin(), statements.end(), mem_fun( bind1st(&Statement::print ), os ));
    170 }
    171 
    172 CaseStmt::CaseStmt( std::list<Label> _labels, Expression *_condition, std::list<Statement *> &_statements, bool deflt ) throw ( SemanticError ) :
     144        //for_each( branches.begin(), branches.end(), mem_fun( bind1st(&Statement::print ), os ));
     145}
     146
     147CaseStmt::CaseStmt( std::list<Label> _labels, Expression *_condition, std::list<Statement *> &_statements, bool deflt ) throw ( SemanticError ) : 
    173148        Statement( _labels ), condition( _condition ), stmts( _statements ), _isDefault( deflt ) {
    174149        if ( isDefault() && condition != 0 )
     
    176151}
    177152
    178 CaseStmt::CaseStmt( const CaseStmt & other ) :
    179         Statement( other ), condition( maybeClone(other.condition ) ), _isDefault( other._isDefault ) {
    180         cloneAll( other.stmts, stmts );
    181 }
    182 
    183153CaseStmt::~CaseStmt() {
    184154        delete condition;
    185155}
    186156
    187 CaseStmt * CaseStmt::makeDefault( std::list<Label> labels, std::list<Statement *> stmts ) {
    188         return new CaseStmt( labels, 0, stmts, true );
     157CaseStmt * CaseStmt::makeDefault( std::list<Label> labels, std::list<Statement *> branches ) {
     158        return new CaseStmt( labels, 0, branches, true );
    189159}
    190160
     
    206176}
    207177
     178//ChooseStmt::ChooseStmt( std::list<Label> labels, Expression *condition, Statement *body ) {}
     179ChooseStmt::ChooseStmt( std::list<Label> _labels, Expression * _condition, std::list<Statement *> &_branches ):
     180        Statement( _labels ), condition( _condition ), branches( _branches ) {
     181}
     182
     183ChooseStmt::~ChooseStmt() {
     184        delete condition;
     185}
     186
     187void ChooseStmt::add_case( CaseStmt *c ) {}
     188
     189void 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
     202void FallthruStmt::print( std::ostream &os, int indent ) const {
     203        os << string( indent, ' ' ) << "Fall-through statement" << endl;
     204}
     205
    208206WhileStmt::WhileStmt( std::list<Label> labels, Expression *condition_, Statement *body_, bool isDoWhile_ ):
    209207        Statement( labels ), condition( condition_), body( body_), isDoWhile( isDoWhile_) {
    210208}
    211209
    212 WhileStmt::WhileStmt( const WhileStmt & other ):
    213         Statement( other ), condition( maybeClone( other.condition ) ), body( maybeClone( other.body ) ), isDoWhile( other.isDoWhile ) {
    214 }
    215 
    216210WhileStmt::~WhileStmt() {
    217211        delete body;
     
    219213
    220214void WhileStmt::print( std::ostream &os, int indent ) const {
    221         os << "While on condition: " << endl ;
     215        os << string( indent, ' ' ) << "While on condition: " << endl ;
    222216        condition->print( os, indent + 4 );
    223217
     
    229223ForStmt::ForStmt( std::list<Label> labels, std::list<Statement *> initialization_, Expression *condition_, Expression *increment_, Statement *body_ ):
    230224        Statement( labels ), initialization( initialization_ ), condition( condition_ ), increment( increment_ ), body( body_ ) {
    231 }
    232 
    233 ForStmt::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 
    237225}
    238226
     
    245233
    246234void ForStmt::print( std::ostream &os, int indent ) const {
    247         os << "Labels: {";
     235        os << string( indent, ' ' ) << "Labels: {";
    248236        for ( std::list<Label>::const_iterator it = get_labels().begin(); it != get_labels().end(); ++it) {
    249237                os << *it << ",";
     
    253241        os << string( indent, ' ' ) << "For Statement" << endl ;
    254242
    255         os << string( indent + 2, ' ' ) << "initialization: \n";
     243        os << string( indent + 2, ' ' ) << "initialization: \n"; 
    256244        for ( std::list<Statement *>::const_iterator it = initialization.begin(); it != initialization.end(); ++it ) {
    257                 os << string( indent + 4, ' ' );
    258245                (*it)->print( os, indent + 4 );
    259246        }
    260247
    261         os << "\n" << string( indent + 2, ' ' ) << "condition: \n";
    262         if ( condition != 0 ) {
    263                 os << string( indent + 4, ' ' );
     248        os << "\n" << string( indent + 2, ' ' ) << "condition: \n";
     249        if ( condition != 0 )
    264250                condition->print( os, indent + 4 );
    265         }
    266 
    267         os << "\n" << string( indent + 2, ' ' ) << "increment: \n";
    268         if ( increment != 0 ) {
    269                 os << string( indent + 4, ' ' );
     251
     252        os << "\n" << string( indent + 2, ' ' ) << "increment: \n";
     253        if ( increment != 0 )
    270254                increment->print( os, indent + 4 );
    271         }
    272 
    273         os << "\n" << string( indent + 2, ' ' ) << "statement block: \n";
    274         if ( body != 0 ) {
    275                 os << string( indent + 4, ' ' );
     255
     256        os << "\n" << string( indent + 2, ' ' ) << "statement block: \n";
     257        if ( body != 0 )
    276258                body->print( os, indent + 4 );
    277         }
    278259
    279260        os << endl;
     
    284265}
    285266
    286 TryStmt::TryStmt( const TryStmt &other ) : Statement( other ), block( maybeClone( other.block ) ), finallyBlock( maybeClone( other.finallyBlock ) ) {
    287         cloneAll( other.handlers, handlers );
     267TryStmt::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;
    288271}
    289272
     
    293276
    294277void TryStmt::print( std::ostream &os, int indent ) const {
    295         os << "Try Statement" << endl;
     278        os << string( indent, ' ' ) << "Try Statement" << endl;
    296279        os << string( indent + 2, ' ' ) << "with block: " << endl;
    297280        block->print( os, indent + 4 );
     
    313296}
    314297
    315 CatchStmt::CatchStmt( const CatchStmt & other ) :
    316         Statement( other ), decl ( maybeClone( other.decl ) ), body( maybeClone( other.body ) ), catchRest ( other.catchRest ) {
    317 }
    318 
    319298CatchStmt::~CatchStmt() {
    320299        delete decl;
     
    323302
    324303void CatchStmt::print( std::ostream &os, int indent ) const {
    325         os << "Catch Statement" << endl;
     304        os << string( indent, ' ' ) << "Catch Statement" << endl;
    326305
    327306        os << string( indent, ' ' ) << "... catching" << endl;
     
    340319}
    341320
    342 FinallyStmt::FinallyStmt( const FinallyStmt & other ) : Statement( other ), block( maybeClone( other.block ) ) {
    343 }
    344 
    345321FinallyStmt::~FinallyStmt() {
    346322        delete block;
     
    348324
    349325void FinallyStmt::print( std::ostream &os, int indent ) const {
    350         os << "Finally Statement" << endl;
     326        os << string( indent, ' ' ) << "Finally Statement" << endl;
    351327        os << string( indent + 2, ' ' ) << "with block: " << endl;
    352328        block->print( os, indent + 4 );
     
    355331NullStmt::NullStmt( std::list<Label> labels ) : CompoundStmt( labels ) {}
    356332NullStmt::NullStmt() : CompoundStmt( std::list<Label>() ) {}
     333NullStmt::~NullStmt() {}
    357334
    358335void NullStmt::print( std::ostream &os, int indent ) const {
    359         os << "Null Statement" << endl ;
    360 }
    361 
    362 ImplicitCtorDtorStmt::ImplicitCtorDtorStmt( Statement * callStmt ) : Statement( std::list<Label>() ), callStmt( callStmt ) {
    363         assert( callStmt );
    364 }
    365 
    366 ImplicitCtorDtorStmt::ImplicitCtorDtorStmt( const ImplicitCtorDtorStmt & other ) : Statement( other ), callStmt( maybeClone( other.callStmt ) ) {
    367 }
    368 
    369 ImplicitCtorDtorStmt::~ImplicitCtorDtorStmt() {
    370         delete callStmt;
    371 }
    372 
    373 void 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 
    380 std::ostream & operator<<( std::ostream & out, Statement * statement ) {
    381         statement->print( out );
    382         return out;
     336        os << string( indent, ' ' ) << "Null Statement" << endl ;
    383337}
    384338
  • src/SynTree/Statement.h

    r242d458 r679864e1  
    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 : Thu Aug  4 11:26:02 2016
    13 // Update Count     : 64
     12// Last Modified On : Sat Jul 25 18:25:37 2015
     13// Update Count     : 44
    1414//
    1515
     
    2121#include "Mutator.h"
    2222#include "Common/SemanticError.h"
    23 #include "Type.h"
    24 #include "Label.h"
    2523
    2624class Statement {
     
    5957  public:
    6058        ExprStmt( std::list<Label> labels, Expression *expr );
    61         ExprStmt( const ExprStmt &other );
    6259        virtual ~ExprStmt();
    6360
     
    7673  public:
    7774        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 );
    7975        virtual ~AsmStmt();
    8076
     
    107103  public:
    108104        IfStmt( std::list<Label> labels, Expression *condition, Statement *thenPart, Statement *elsePart );
    109         IfStmt( const IfStmt &other );
    110105        virtual ~IfStmt();
    111106
     
    116111        Statement *get_elsePart() { return elsePart; }
    117112        void set_elsePart( Statement *newValue ) { elsePart = newValue; }
    118 
     113       
    119114        virtual IfStmt *clone() const { return new IfStmt( *this ); }
    120115        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    129124class SwitchStmt : public Statement {
    130125  public:
    131         SwitchStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &statements );
    132         SwitchStmt( const SwitchStmt &other );
     126        SwitchStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &branches );
    133127        virtual ~SwitchStmt();
    134128
     
    136130        void set_condition( Expression *newValue ) { condition = newValue; }
    137131
    138         std::list<Statement *> & get_statements() { return statements; }
     132        std::list<Statement *> & get_branches() { return branches; }
     133        void add_case( CaseStmt * );
    139134
    140135        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    145140  private:
    146141        Expression * condition;
    147         std::list<Statement *> statements;
     142        std::list<Statement *> branches; // should be list of CaseStmt
     143};
     144
     145class 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
     166class 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;
    148175};
    149176
    150177class CaseStmt : public Statement {
    151178  public:
    152         CaseStmt( std::list<Label> labels, Expression *conditions, std::list<Statement *> &stmts, bool isdef = false ) throw(SemanticError);
    153         CaseStmt( const CaseStmt &other );
     179        CaseStmt( std::list<Label> labels, Expression *conditions,
     180              std::list<Statement *> &stmts, bool isdef = false ) throw(SemanticError);
    154181        virtual ~CaseStmt();
    155182
    156         static CaseStmt * makeDefault( std::list<Label> labels = std::list<Label>(), std::list<Statement *> stmts = std::list<Statement *>() );
     183        static CaseStmt * makeDefault( std::list<Label> labels = std::list<Label>(),
     184                std::list<Statement *> stmts = std::list<Statement *>() );
    157185
    158186        bool isDefault() const { return _isDefault; }
     
    164192        std::list<Statement *> &get_statements() { return stmts; }
    165193        void set_statements( std::list<Statement *> &newValue ) { stmts = newValue; }
    166 
     194       
    167195        virtual void accept( Visitor &v ) { v.visit( this ); }
    168196        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
     
    180208        WhileStmt( std::list<Label> labels, Expression *condition,
    181209               Statement *body, bool isDoWhile = false );
    182         WhileStmt( const WhileStmt &other );
    183210        virtual ~WhileStmt();
    184211
     
    189216        bool get_isDoWhile() { return isDoWhile; }
    190217        void set_isDoWhile( bool newValue ) { isDoWhile = newValue; }
    191 
     218       
    192219        virtual WhileStmt *clone() const { return new WhileStmt( *this ); }
    193220        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    204231        ForStmt( std::list<Label> labels, std::list<Statement *> initialization,
    205232             Expression *condition = 0, Expression *increment = 0, Statement *body = 0 );
    206         ForStmt( const ForStmt &other );
    207233        virtual ~ForStmt();
    208234
     
    215241        Statement *get_body() { return body; }
    216242        void set_body( Statement *newValue ) { body = newValue; }
    217 
     243       
    218244        virtual ForStmt *clone() const { return new ForStmt( *this ); }
    219245        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    233259        BranchStmt( std::list<Label> labels, Label target, Type ) throw (SemanticError);
    234260        BranchStmt( std::list<Label> labels, Expression *computedTarget, Type ) throw (SemanticError);
     261        virtual ~BranchStmt() {}
    235262
    236263        Label get_originalTarget() { return originalTarget; }
    237264        Label get_target() { return target; }
    238265        void set_target( Label newValue ) { target = newValue; }
    239 
     266       
    240267        Expression *get_computedTarget() { return computedTarget; }
    241268        void set_target( Expression * newValue ) { computedTarget = newValue; }
     
    259286  public:
    260287        ReturnStmt( std::list<Label> labels, Expression *expr, bool throwP = false );
    261         ReturnStmt( const ReturnStmt &other );
    262288        virtual ~ReturnStmt();
    263289
    264290        Expression *get_expr() { return expr; }
    265291        void set_expr( Expression *newValue ) { expr = newValue; }
    266 
     292       
    267293        virtual ReturnStmt *clone() const { return new ReturnStmt( *this ); }
    268294        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    279305        NullStmt();
    280306        NullStmt( std::list<Label> labels );
     307        virtual ~NullStmt();
    281308
    282309        virtual NullStmt *clone() const { return new NullStmt( *this ); }
     
    284311        virtual NullStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    285312        virtual void print( std::ostream &os, int indent = 0 ) const;
    286 
    287   private:
    288 };
    289 
    290 class TryStmt : public Statement {
     313       
     314  private:
     315};
     316
     317class TryStmt : public Statement { 
    291318  public:
    292319        TryStmt( std::list<Label> labels, CompoundStmt *tryBlock, std::list<Statement *> &handlers, FinallyStmt *finallyBlock = 0 );
     
    305332        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    306333        virtual void print( std::ostream &os, int indent = 0 ) const;
    307 
     334       
    308335  private:
    309336        CompoundStmt *block;
    310337        std::list<Statement *> handlers;
    311338        FinallyStmt *finallyBlock;
    312 };
     339}; 
    313340
    314341class CatchStmt : public Statement {
    315342  public:
    316343        CatchStmt( std::list<Label> labels, Declaration *decl, Statement *body, bool isCatchRest = false );
    317         CatchStmt( const CatchStmt &other );
    318344        virtual ~CatchStmt();
    319345
     
    323349        Statement *get_body() { return body; }
    324350        void set_body( Statement *newValue ) { body = newValue; }
    325 
     351       
    326352        virtual CatchStmt *clone() const { return new CatchStmt( *this ); }
    327353        virtual void accept( Visitor &v ) { v.visit( this ); }
    328354        virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    329355        virtual void print( std::ostream &os, int indent = 0 ) const;
    330 
     356       
    331357  private:
    332358        Declaration *decl;
     
    335361};
    336362
    337 class FinallyStmt : public Statement {
     363class FinallyStmt : public Statement { 
    338364  public:
    339365        FinallyStmt( std::list<Label> labels, CompoundStmt *block );
    340         FinallyStmt( const FinallyStmt &other );
    341366        virtual ~FinallyStmt();
    342367
    343368        CompoundStmt *get_block() const { return block; }
    344369        void set_block( CompoundStmt *newValue ) { block = newValue; }
    345 
     370       
    346371        virtual FinallyStmt *clone() const { return new FinallyStmt( *this ); }
    347372        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    350375  private:
    351376        CompoundStmt *block;
    352 };
     377}; 
    353378
    354379
     
    360385        virtual ~DeclStmt();
    361386
    362         Declaration *get_decl() const { return decl; }
     387        Declaration *get_decl() { return decl; }
    363388        void set_decl( Declaration *newValue ) { decl = newValue; }
    364389
     
    370395        Declaration *decl;
    371396};
    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.
    377 class 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 
    397 std::ostream & operator<<( std::ostream & out, Statement * statement );
    398397
    399398#endif // STATEMENT_H
  • src/SynTree/SynTree.h

    r242d458 r679864e1  
    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 : Wed Aug  3 17:02:34 2016
    13 // Update Count     : 7
     12// Last Modified On : Thu Jul 23 23:25:04 2015
     13// Update Count     : 3
    1414//
    1515
     
    3030class UnionDecl;
    3131class EnumDecl;
    32 class TraitDecl;
     32class ContextDecl;
    3333class NamedTypeDecl;
    3434class TypeDecl;
     
    4545class ForStmt;
    4646class SwitchStmt;
     47class ChooseStmt;
     48class FallthruStmt;
    4749class CaseStmt;
    4850class BranchStmt;
     
    5456class DeclStmt;
    5557class NullStmt;
    56 class ImplicitCtorDtorStmt;
    5758
    5859class Expression;
     
    6869class ConstantExpr;
    6970class SizeofExpr;
    70 class AlignofExpr;
    71 class UntypedOffsetofExpr;
    72 class OffsetofExpr;
    73 class OffsetPackExpr;
    7471class AttrExpr;
    7572class LogicalExpr;
     
    8077class TypeExpr;
    8178class AsmExpr;
    82 class ImplicitCopyCtorExpr;
    8379class UntypedValofExpr;
    84 class CompoundLiteralExpr;
    85 class RangeExpr;
    8680
    8781class Type;
     
    9589class UnionInstType;
    9690class EnumInstType;
    97 class TraitInstType;
     91class ContextInstType;
    9892class TypeInstType;
    9993class TupleType;
    10094class TypeofType;
    10195class AttrType;
    102 class VarArgsType;
    10396
    10497class Initializer;
    10598class SingleInit;
    10699class ListInit;
    107 class ConstructorInit;
    108100
    109101class Subrange;
     
    112104class Constant;
    113105
    114 // typedef std::string Label;
    115 class Label;
     106typedef std::string Label;
    116107typedef unsigned int UniqueId;
    117108
    118109class TypeSubstitution;
    119 
    120 // gcc attribute
    121 class Attribute;
    122110
    123111#endif // SYNTREE_H
  • src/SynTree/TupleExpr.cc

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

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

    r242d458 r679864e1  
    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 : Rob Schluntz
    12 // Last Modified On : Wed Dec 09 14:08:48 2015
    13 // Update Count     : 4
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Thu Jul  9 16:45:13 2015
     13// Update Count     : 3
    1414//
    1515
     
    1818#include "Type.h"
    1919#include "Declaration.h"
    20 #include "Common/utility.h"
     20#include "utility.h"
    2121
    2222const char *BasicType::typeNames[BasicType::NUMBER_OF_BASIC_TYPES] = {
     
    5454}
    5555
    56 void Type::Qualifiers::print( std::ostream &os, int indent ) const {
    57         if ( isConst ) {
    58                 os << "const ";
    59         } // if
    60         if ( isVolatile ) {
    61                 os << "volatile ";
    62         } // if
    63         if ( isRestrict ) {
    64                 os << "restrict ";
    65         } // if
    66         if ( isLvalue ) {
    67                 os << "lvalue ";
    68         } // if
    69         if ( isAtomic ) {
    70                 os << "_Atomic ";
    71         } // if
    72         if ( isAttribute ) {
    73                 os << "__attribute(( )) ";
    74         } // if
    75 }
    76 
    7756void Type::print( std::ostream &os, int indent ) const {
    7857        if ( ! forall.empty() ) {
     
    8160                os << std::string( indent+2, ' ' );
    8261        } // if
    83         tq.print( os, indent );
    84 }
    85 
    86 std::ostream & operator<<( std::ostream & out, Type * type ) {
    87         type->print( out );
    88         return out;
     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
    8980}
    9081
  • src/SynTree/Type.h

    r242d458 r679864e1  
    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 : Wed Jul 13 11:46:54 2016
    13 // Update Count     : 23
     12// Last Modified On : Thu Jul  9 16:46:15 2015
     13// Update Count     : 14
    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                 void print( std::ostream &os, int indent = 0 ) const;
    39 
     38       
    4039                bool isConst;
    4140                bool isVolatile;
     
    4443                bool isAtomic;
    4544                bool isAttribute;
    46         };
     45        };     
    4746
    4847        Type( const Qualifiers &tq );
     
    8685class BasicType : public Type {
    8786  public:
    88         enum Kind {
     87        enum Kind { 
    8988                Bool,
    9089                Char,
     
    109108                LongDoubleImaginary,
    110109                NUMBER_OF_BASIC_TYPES
    111         };
     110        }; 
    112111
    113112        static const char *typeNames[];                                         // string names for basic types, MUST MATCH with Kind
     
    150149  private:
    151150        Type *base;
    152 
     151       
    153152        // In C99, pointer types can be qualified in many ways e.g., int f( int a[ static 3 ] )
    154153        Expression *dimension;
     
    189188        virtual ~FunctionType();
    190189
    191         std::list<DeclarationWithType*> & get_returnVals() { return returnVals; }
    192         std::list<DeclarationWithType*> & get_parameters() { return parameters; }
     190        std::list<DeclarationWithType*>& get_returnVals() { return returnVals; }
     191        std::list<DeclarationWithType*>& get_parameters() { return parameters; }
    193192        bool get_isVarArgs() { return isVarArgs; }
    194193        void set_isVarArgs( bool newValue ) { isVarArgs = newValue; }
     
    202201        std::list<DeclarationWithType*> parameters;
    203202
    204         // Does the function accept a variable number of arguments following the arguments specified in the parameters list.
    205         // This could be because of
     203        // does the function accept a variable number of arguments following the arguments
     204        // specified in the parameters list.    This could be because of
    206205        // - an ellipsis in a prototype declaration
    207206        // - an unprototyped declaration
     
    218217        void set_name( std::string newValue ) { name = newValue; }
    219218        std::list< Expression* >& get_parameters() { return parameters; }
    220 
     219       
    221220        virtual ReferenceToType *clone() const = 0;
    222221        virtual void accept( Visitor &v ) = 0;
     
    226225        virtual std::string typeString() const = 0;
    227226        std::list< Expression* > parameters;
     227  private:
    228228        std::string name;
    229   private:
    230229};
    231230
     
    238237        StructDecl *get_baseStruct() const { return baseStruct; }
    239238        void set_baseStruct( StructDecl *newValue ) { baseStruct = newValue; }
    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
     239       
     240        // a utility function
    246241        void lookup( const std::string &name, std::list< Declaration* > &foundDecls ) const;
    247242
     
    249244        virtual void accept( Visitor &v ) { v.visit( this ); }
    250245        virtual Type *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    251 
    252         virtual void print( std::ostream &os, int indent = 0 ) const;
    253246  private:
    254247        virtual std::string typeString() const;
    255 
     248       
    256249        // this decl is not "owned" by the struct inst; it is merely a pointer to elsewhere in the tree,
    257250        // where the structure used in this type is actually defined
     
    267260        UnionDecl *get_baseUnion() const { return baseUnion; }
    268261        void set_baseUnion( UnionDecl *newValue ) { baseUnion = newValue; }
    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
     262       
     263        // a utility function
    275264        void lookup( const std::string &name, std::list< Declaration* > &foundDecls ) const;
    276265
     
    278267        virtual void accept( Visitor &v ) { v.visit( this ); }
    279268        virtual Type *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    280 
    281         virtual void print( std::ostream &os, int indent = 0 ) const;
    282269  private:
    283270        virtual std::string typeString() const;
    284 
     271       
    285272        // this decl is not "owned" by the union inst; it is merely a pointer to elsewhere in the tree,
    286273        // where the union used in this type is actually defined
     
    301288};
    302289
    303 class TraitInstType : public ReferenceToType {
     290class ContextInstType : public ReferenceToType {
    304291        typedef ReferenceToType Parent;
    305292  public:
    306         TraitInstType( const Type::Qualifiers &tq, const std::string &name ) : Parent( tq, name ) {}
    307         TraitInstType( const TraitInstType &other );
    308         ~TraitInstType();
     293        ContextInstType( const Type::Qualifiers &tq, const std::string &name ) : Parent( tq, name ) {}
     294        ContextInstType( const ContextInstType &other );
     295        ~ContextInstType();
    309296
    310297        std::list< Declaration* >& get_members() { return members; }
    311298
    312         virtual TraitInstType *clone() const { return new TraitInstType( *this ); }
     299        virtual ContextInstType *clone() const { return new ContextInstType( *this ); }
    313300        virtual void accept( Visitor &v ) { v.visit( this ); }
    314301        virtual Type *acceptMutator( Mutator &m ) { return m.mutate( this ); }
    315302  private:
    316303        virtual std::string typeString() const;
    317 
     304       
    318305        // this member is filled in by the validate pass, which instantiates the members of the correponding
    319306        // aggregate with the actual type parameters specified for this use of the context
     
    332319        bool get_isFtype() const { return isFtype; }
    333320        void set_isFtype( bool newValue ) { isFtype = newValue; }
    334 
     321       
    335322        virtual TypeInstType *clone() const { return new TypeInstType( *this ); }
    336323        virtual void accept( Visitor &v ) { v.visit( this ); }
     
    405392};
    406393
    407 /// Represents the GCC built-in varargs type
    408 class 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 
    419394inline Type::Qualifiers &Type::Qualifiers::operator+=( const Type::Qualifiers &other ) {
    420395        isConst |= other.isConst;
     
    443418        return isConst == other.isConst
    444419                && isVolatile == other.isVolatile
    445 //              && isRestrict == other.isRestrict
    446 //              && isLvalue == other.isLvalue
     420                && isRestrict == other.isRestrict
     421//      && isLvalue == other.isLvalue
    447422                && isAtomic == other.isAtomic;
    448423}
     
    451426        return isConst != other.isConst
    452427                || isVolatile != other.isVolatile
    453 //              || isRestrict != other.isRestrict
    454 //              || isLvalue != other.isLvalue
     428                || isRestrict != other.isRestrict
     429//      || isLvalue != other.isLvalue
    455430                || isAtomic != other.isAtomic;
    456431}
     
    459434        return isConst <= other.isConst
    460435                && isVolatile <= other.isVolatile
    461 //              && isRestrict <= other.isRestrict
    462 //              && isLvalue >= other.isLvalue
     436                && isRestrict <= other.isRestrict
     437//      && isLvalue >= other.isLvalue
    463438                && isAtomic == other.isAtomic;
    464439}
     
    467442        return isConst >= other.isConst
    468443                && isVolatile >= other.isVolatile
    469 //              && isRestrict >= other.isRestrict
    470 //              && isLvalue <= other.isLvalue
     444                && isRestrict >= other.isRestrict
     445//      && isLvalue <= other.isLvalue
    471446                && isAtomic == other.isAtomic;
    472447}
     
    479454        return operator!=( other ) && operator>=( other );
    480455}
    481 
    482 std::ostream & operator<<( std::ostream & out, Type * type );
    483456
    484457#endif // TYPE_H
  • src/SynTree/TypeDecl.cc

    r242d458 r679864e1  
    1616#include "Declaration.h"
    1717#include "Type.h"
    18 #include "Common/utility.h"
     18#include "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

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

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TypeSubstitution.cc --
     7// TypeSubstitution.cc -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Tue Apr 26 11:15:29 2016
    13 // Update Count     : 3
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon May 18 11:10:04 2015
     13// Update Count     : 2
    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
    9474        if ( i == typeEnv.end() ) {
    9575                return 0;
     
    9777                return i->second;
    9878        } // if
    99 #endif
    10079}
    10180
     
    11796        BoundVarsType::const_iterator bound = boundVars.find( inst->get_name() );
    11897        if ( bound != boundVars.end() ) return inst;
    119 
     98       
    12099        TypeEnvType::const_iterator i = typeEnv.find( inst->get_name() );
    121100        if ( i == typeEnv.end() ) {
     
    147126Type *TypeSubstitution::handleType( TypeClass *type ) {
    148127        BoundVarsType oldBoundVars( boundVars );
    149         // bind type variables from forall-qualifiers
    150128        if ( freeOnly ) {
    151129                for ( std::list< TypeDecl* >::const_iterator tyvar = type->get_forall().begin(); tyvar != type->get_forall().end(); ++tyvar ) {
    152130                        boundVars.insert( (*tyvar )->get_name() );
    153                 } // for
    154         } // if
    155         Type *ret = Mutator::mutate( type );
    156         boundVars = oldBoundVars;
    157         return ret;
    158 }
    159 
    160 template< typename TypeClass >
    161 Type *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() );
    174131                } // for
    175132        } // if
     
    200157
    201158Type * TypeSubstitution::mutate( StructInstType *aggregateUseType ) {
    202         return handleAggregateType( aggregateUseType );
     159        return handleType( aggregateUseType );
    203160}
    204161
    205162Type * TypeSubstitution::mutate( UnionInstType *aggregateUseType ) {
    206         return handleAggregateType( aggregateUseType );
     163        return handleType( aggregateUseType );
    207164}
    208165
     
    211168}
    212169
    213 Type * TypeSubstitution::mutate( TraitInstType *aggregateUseType ) {
     170Type * TypeSubstitution::mutate( ContextInstType *aggregateUseType ) {
    214171        return handleType( aggregateUseType );
    215172}
     
    217174Type * TypeSubstitution::mutate( TupleType *tupleType ) {
    218175        return handleType( tupleType );
    219 }
    220 
    221 Type * TypeSubstitution::mutate( VarArgsType *varArgsType ) {
    222         return handleType( varArgsType );
    223176}
    224177
     
    238191}
    239192
    240 std::ostream & operator<<( std::ostream & out, const TypeSubstitution & sub ) {
    241         sub.print( out );
    242         return out;
    243 }
    244 
    245 
    246193// Local Variables: //
    247194// tab-width: 4 //
  • src/SynTree/TypeSubstitution.h

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // TypeSubstitution.h --
     7// TypeSubstitution.h -- 
    88//
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Fri Apr 29 15:00:20 2016
    13 // Update Count     : 2
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Mon May 18 11:12:30 2015
     13// Update Count     : 1
    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 
    50         /// this function is unused...
     49       
    5150        template< typename TypeInstListIterator >
    5251        void extract( TypeInstListIterator begin, TypeInstListIterator end, TypeSubstitution &result );
    53 
     52       
    5453        void normalize();
    5554
     
    5958        virtual Type* mutate(TypeInstType *aggregateUseType);
    6059        virtual Expression* mutate(NameExpr *nameExpr);
    61 
    62         /// Records type variable bindings from forall-statements
     60       
    6361        template< typename TypeClass > Type *handleType( TypeClass *type );
    64         /// Records type variable bindings from forall-statements and instantiations of generic types
    65         template< typename TypeClass > Type *handleAggregateType( TypeClass *type );
    66 
     62       
    6763        virtual Type* mutate(VoidType *basicType);
    6864        virtual Type* mutate(BasicType *basicType);
     
    7369        virtual Type* mutate(UnionInstType *aggregateUseType);
    7470        virtual Type* mutate(EnumInstType *aggregateUseType);
    75         virtual Type* mutate(TraitInstType *aggregateUseType);
     71        virtual Type* mutate(ContextInstType *aggregateUseType);
    7672        virtual Type* mutate(TupleType *tupleType);
    77         virtual Type* mutate(VarArgsType *varArgsType);
    78 
     73       
    7974        // TODO: worry about traversing into a forall-qualified function type or type decl with assertions
    80 
     75       
    8176        void initialize( const TypeSubstitution &src, TypeSubstitution &dest );
    8277
     
    137132        return subCount;
    138133}
    139 
     134       
    140135template< typename SynTreeClass >
    141136int TypeSubstitution::applyFree( SynTreeClass *&input ) {
     
    150145        return subCount;
    151146}
    152 
     147       
    153148template< typename TypeInstListIterator >
    154149void TypeSubstitution::extract( TypeInstListIterator begin, TypeInstListIterator end, TypeSubstitution &result ) {
    155         // xxx - this function doesn't extract varEnv - is this intentional?
    156150        while ( begin != end ) {
    157151                TypeEnvType::iterator cur = typeEnv.find( (*begin++)->get_name() );
     
    175169}
    176170
    177 std::ostream & operator<<( std::ostream & out, const TypeSubstitution & sub );
    178 
    179171#endif // TYPESUBSTITUTION_H
    180172
  • src/SynTree/TypeofType.cc

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

    r242d458 r679864e1  
    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 : Thu Aug  4 11:24:25 2016
    13 // Update Count     : 21
     12// Last Modified On : Fri Jul 24 16:11:05 2015
     13// Update Count     : 15
    1414//
    1515
     
    3939}
    4040
    41 void Visitor::handleAggregateDecl( AggregateDecl *aggregateDecl ) {
     41void Visitor::visit( AggregateDecl *aggregateDecl ) {
    4242        acceptAll( aggregateDecl->get_parameters(), *this );
    4343        acceptAll( aggregateDecl->get_members(), *this );
     
    4545
    4646void Visitor::visit( StructDecl *aggregateDecl ) {
    47         handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
     47        visit( static_cast< AggregateDecl* >( aggregateDecl ) );
    4848}
    4949
    5050void Visitor::visit( UnionDecl *aggregateDecl ) {
    51         handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
     51        visit( static_cast< AggregateDecl* >( aggregateDecl ) );
    5252}
    5353
    5454void Visitor::visit( EnumDecl *aggregateDecl ) {
    55         handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
    56 }
    57 
    58 void Visitor::visit( TraitDecl *aggregateDecl ) {
    59         handleAggregateDecl( static_cast< AggregateDecl* >( aggregateDecl ) );
    60 }
    61 
    62 void Visitor::handleNamedTypeDecl( NamedTypeDecl *typeDecl ) {
     55        visit( static_cast< AggregateDecl* >( aggregateDecl ) );
     56}
     57
     58void Visitor::visit( ContextDecl *aggregateDecl ) {
     59        visit( static_cast< AggregateDecl* >( aggregateDecl ) );
     60}
     61
     62void Visitor::visit( NamedTypeDecl *typeDecl ) {
    6363        acceptAll( typeDecl->get_parameters(), *this );
    6464        acceptAll( typeDecl->get_assertions(), *this );
     
    6767
    6868void Visitor::visit( TypeDecl *typeDecl ) {
    69         handleNamedTypeDecl( static_cast< NamedTypeDecl* >( typeDecl ) );
     69        visit( static_cast< NamedTypeDecl* >( typeDecl ) );
    7070}
    7171
    7272void Visitor::visit( TypedefDecl *typeDecl ) {
    73         handleNamedTypeDecl( static_cast< NamedTypeDecl* >( typeDecl ) );
     73        visit( static_cast< NamedTypeDecl* >( typeDecl ) );
    7474}
    7575
     
    109109void Visitor::visit( SwitchStmt *switchStmt ) {
    110110        maybeAccept( switchStmt->get_condition(), *this );
    111         acceptAll( switchStmt->get_statements(), *this );
    112 }
     111        acceptAll( switchStmt->get_branches(), *this );
     112}
     113
     114void Visitor::visit( ChooseStmt *switchStmt ) {
     115        maybeAccept( switchStmt->get_condition(), *this );
     116        acceptAll( switchStmt->get_branches(), *this );
     117}
     118
     119void Visitor::visit( FallthruStmt *fallthruStmt ) {}
    113120
    114121void Visitor::visit( CaseStmt *caseStmt ) {
     
    143150void Visitor::visit( DeclStmt *declStmt ) {
    144151        maybeAccept( declStmt->get_decl(), *this );
    145 }
    146 
    147 void Visitor::visit( ImplicitCtorDtorStmt *impCtorDtorStmt ) {
    148         maybeAccept( impCtorDtorStmt->get_callStmt(), *this );
    149152}
    150153
     
    207210}
    208211
    209 void 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 
    218 void Visitor::visit( UntypedOffsetofExpr *offsetofExpr ) {
    219         acceptAll( offsetofExpr->get_results(), *this );
    220         maybeAccept( offsetofExpr->get_type(), *this );
    221 }
    222 
    223 void Visitor::visit( OffsetofExpr *offsetofExpr ) {
    224         acceptAll( offsetofExpr->get_results(), *this );
    225         maybeAccept( offsetofExpr->get_type(), *this );
    226         maybeAccept( offsetofExpr->get_member(), *this );
    227 }
    228 
    229 void Visitor::visit( OffsetPackExpr *offsetPackExpr ) {
    230         acceptAll( offsetPackExpr->get_results(), *this );
    231         maybeAccept( offsetPackExpr->get_type(), *this );
    232 }
    233 
    234212void Visitor::visit( AttrExpr *attrExpr ) {
    235213        acceptAll( attrExpr->get_results(), *this );
     
    281259}
    282260
    283 void Visitor::visit( ImplicitCopyCtorExpr *impCpCtorExpr ) {
    284         maybeAccept( impCpCtorExpr->get_callExpr(), *this );
    285         acceptAll( impCpCtorExpr->get_tempDecls(), *this );
    286         acceptAll( impCpCtorExpr->get_returnDecls(), *this );
    287 }
    288 
    289261void Visitor::visit( UntypedValofExpr *valofExpr ) {
    290262        acceptAll( valofExpr->get_results(), *this );
    291263        maybeAccept( valofExpr->get_body(), *this );
    292 }
    293 
    294 void Visitor::visit( CompoundLiteralExpr *compLitExpr ) {
    295         acceptAll( compLitExpr->get_results(), *this );
    296         maybeAccept( compLitExpr->get_type(), *this );
    297         maybeAccept( compLitExpr->get_initializer(), *this );
    298 }
    299 
    300 void Visitor::visit( RangeExpr *rangeExpr ) {
    301         maybeAccept( rangeExpr->get_low(), *this );
    302         maybeAccept( rangeExpr->get_high(), *this );
    303264}
    304265
     
    328289}
    329290
    330 void Visitor::handleReferenceToType( ReferenceToType *aggregateUseType ) {
     291void Visitor::visit( ReferenceToType *aggregateUseType ) {
    331292        acceptAll( aggregateUseType->get_forall(), *this );
    332293        acceptAll( aggregateUseType->get_parameters(), *this );
     
    334295
    335296void Visitor::visit( StructInstType *aggregateUseType ) {
    336         handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
     297        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    337298}
    338299
    339300void Visitor::visit( UnionInstType *aggregateUseType ) {
    340         handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
     301        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    341302}
    342303
    343304void Visitor::visit( EnumInstType *aggregateUseType ) {
    344         handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
    345 }
    346 
    347 void Visitor::visit( TraitInstType *aggregateUseType ) {
    348         handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
     305        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
     306}
     307
     308void Visitor::visit( ContextInstType *aggregateUseType ) {
     309        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    349310        acceptAll( aggregateUseType->get_members(), *this );
    350311}
    351312
    352313void Visitor::visit( TypeInstType *aggregateUseType ) {
    353         handleReferenceToType( static_cast< ReferenceToType * >( aggregateUseType ) );
     314        visit( static_cast< ReferenceToType * >( aggregateUseType ) );
    354315}
    355316
     
    374335}
    375336
    376 void Visitor::visit( VarArgsType *varArgsType ) {
    377         acceptAll( varArgsType->get_forall(), *this );
    378 }
    379 
    380337void Visitor::visit( SingleInit *singleInit ) {
    381338        singleInit->get_value()->accept( *this );
     
    385342        acceptAll( listInit->get_designators(), *this );
    386343        acceptAll( listInit->get_initializers(), *this );
    387 }
    388 
    389 void Visitor::visit( ConstructorInit *ctorInit ) {
    390         maybeAccept( ctorInit->get_ctor(), *this );
    391         maybeAccept( ctorInit->get_init(), *this );
    392344}
    393345
  • src/SynTree/Visitor.h

    r242d458 r679864e1  
    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 : Wed Aug  3 17:01:50 2016
    13 // Update Count     : 9
     12// Last Modified On : Thu Jul 23 23:22:23 2015
     13// Update Count     : 4
    1414//
    1515
     
    1818
    1919#include "SynTree.h"
    20 #include "Common/SemanticError.h"
    21 #include "Common/CompilerError.h"
     20#include "SemanticError.h"
     21#include "CompilerError.h"
    2222
    2323class Visitor {
     
    3131        virtual void visit( UnionDecl *aggregateDecl );
    3232        virtual void visit( EnumDecl *aggregateDecl );
    33         virtual void visit( TraitDecl *aggregateDecl );
     33        virtual void visit( ContextDecl *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 );
    4446        virtual void visit( CaseStmt *caseStmt );
    4547        virtual void visit( BranchStmt *branchStmt );
     
    5052        virtual void visit( NullStmt *nullStmt );
    5153        virtual void visit( DeclStmt *declStmt );
    52         virtual void visit( ImplicitCtorDtorStmt *impCtorDtorStmt );
    5354
    5455        virtual void visit( ApplicationExpr *applicationExpr );
     
    6162        virtual void visit( MemberExpr *memberExpr );
    6263        virtual void visit( VariableExpr *variableExpr );
    63         virtual void visit( ConstantExpr *constantExpr );
     64        virtual void visit( ConstantExpr *constantExpr ); 
    6465        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 );
    6966        virtual void visit( AttrExpr *attrExpr );
    7067        virtual void visit( LogicalExpr *logicalExpr );
     
    7572        virtual void visit( TypeExpr *typeExpr );
    7673        virtual void visit( AsmExpr *asmExpr );
    77         virtual void visit( ImplicitCopyCtorExpr *impCpCtorExpr );
    7874        virtual void visit( UntypedValofExpr *valofExpr );
    79         virtual void visit( CompoundLiteralExpr *compLitExpr );
    80         virtual void visit( RangeExpr *rangeExpr );
    8175
    8276        virtual void visit( VoidType *basicType );
     
    8882        virtual void visit( UnionInstType *aggregateUseType );
    8983        virtual void visit( EnumInstType *aggregateUseType );
    90         virtual void visit( TraitInstType *aggregateUseType );
     84        virtual void visit( ContextInstType *aggregateUseType );
    9185        virtual void visit( TypeInstType *aggregateUseType );
    9286        virtual void visit( TupleType *tupleType );
    9387        virtual void visit( TypeofType *typeofType );
    9488        virtual void visit( AttrType *attrType );
    95         virtual void visit( VarArgsType *varArgsType );
    9689
    9790        virtual void visit( SingleInit *singleInit );
    9891        virtual void visit( ListInit *listInit );
    99         virtual void visit( ConstructorInit *ctorInit );
    10092
    10193        virtual void visit( Subrange *subrange );
     
    10395        virtual void visit( Constant *constant );
    10496  private:
    105         virtual void handleAggregateDecl( AggregateDecl *aggregateDecl );
    106         virtual void handleNamedTypeDecl( NamedTypeDecl *typeDecl );
    107         virtual void handleReferenceToType( ReferenceToType *aggregateUseType );
     97        virtual void visit( AggregateDecl *aggregateDecl );
     98        virtual void visit( NamedTypeDecl *typeDecl );
     99        virtual void visit( ReferenceToType *aggregateUseType );
    108100};
    109101
  • src/SynTree/module.mk

    r242d458 r679864e1  
    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 \
    2827       SynTree/Constant.cc \
    2928       SynTree/Expression.cc \
     
    4645       SynTree/Visitor.cc \
    4746       SynTree/Mutator.cc \
    48        SynTree/AddStmtVisitor.cc \
    49        SynTree/TypeSubstitution.cc \
    50        SynTree/Attribute.cc
     47       SynTree/CodeGenVisitor.cc \
     48       SynTree/TypeSubstitution.cc
    5149
  • src/Tuples/AssignExpand.h

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

    r242d458 r679864e1  
    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( 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 );  }
     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 );  }
    5854
    5955        void FlattenTuple::CollectArgs::visit( TupleExpr *tupleExpr) {
  • src/Tuples/FlattenTuple.h

    r242d458 r679864e1  
    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 * );
    4844                        virtual void visit( AttrExpr * );
    4945                        virtual void visit( LogicalExpr * );
  • src/Tuples/FunctionChecker.cc

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

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

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

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

    r242d458 r679864e1  
    6262CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    6363        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
    64 AM_V_CXX = $(am__v_CXX_@AM_V@)
    65 am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
    66 am__v_CXX_0 = @echo "  CXX   " $@;
    67 AM_V_at = $(am__v_at_@AM_V@)
    68 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    69 am__v_at_0 = @
    7064CXXLD = $(CXX)
    7165CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
    7266        -o $@
    73 AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
    74 am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
    75 am__v_CXXLD_0 = @echo "  CXXLD " $@;
    76 AM_V_GEN = $(am__v_GEN_@AM_V@)
    77 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    78 am__v_GEN_0 = @echo "  GEN   " $@;
    7967SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
    8068DIST_SOURCES = $(cc1_SOURCES) $(cfa_SOURCES)
     
    8573ALLOCA = @ALLOCA@
    8674AMTAR = @AMTAR@
    87 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    8875AUTOCONF = @AUTOCONF@
    8976AUTOHEADER = @AUTOHEADER@
     
    9380CC = @CC@
    9481CCDEPMODE = @CCDEPMODE@
    95 CFA_BACKEND_CC = @CFA_BACKEND_CC@
    9682CFA_BINDIR = @CFA_BINDIR@
    97 CFA_FLAGS = @CFA_FLAGS@
    9883CFA_INCDIR = @CFA_INCDIR@
    9984CFA_LIBDIR = @CFA_LIBDIR@
     
    11398EGREP = @EGREP@
    11499EXEEXT = @EXEEXT@
     100GCC_PATH = @GCC_PATH@
    115101GREP = @GREP@
    116102INSTALL = @INSTALL@
     
    196182cc1libdir = ${libdir}
    197183cc1_SOURCES = cc1.cc
    198 MAINTAINERCLEANFILES = @CFA_PREFIX@/bin/${bin_PROGRAMS} @CFA_PREFIX@/lib/${cc1lib_PROGRAMS}
    199184all: all-am
    200185
     
    210195          esac; \
    211196        done; \
    212         echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/driver/Makefile'; \
     197        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/driver/Makefile'; \
    213198        $(am__cd) $(top_srcdir) && \
    214           $(AUTOMAKE) --foreign src/driver/Makefile
     199          $(AUTOMAKE) --gnu src/driver/Makefile
    215200.PRECIOUS: Makefile
    216201Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
     
    307292cc1$(EXEEXT): $(cc1_OBJECTS) $(cc1_DEPENDENCIES) $(EXTRA_cc1_DEPENDENCIES)
    308293        @rm -f cc1$(EXEEXT)
    309         $(AM_V_CXXLD)$(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
     294        $(CXXLINK) $(cc1_OBJECTS) $(cc1_LDADD) $(LIBS)
    310295cfa$(EXEEXT): $(cfa_OBJECTS) $(cfa_DEPENDENCIES) $(EXTRA_cfa_DEPENDENCIES)
    311296        @rm -f cfa$(EXEEXT)
    312         $(AM_V_CXXLD)$(CXXLINK) $(cfa_OBJECTS) $(cfa_LDADD) $(LIBS)
     297        $(CXXLINK) $(cfa_OBJECTS) $(cfa_LDADD) $(LIBS)
    313298
    314299mostlyclean-compile:
     
    322307
    323308.cc.o:
    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@
     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@
    327312@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    328 @am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
     313@am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ $<
    329314
    330315.cc.obj:
    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@
     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@
    334319@AMDEP_TRUE@@am__fastdepCXX_FALSE@      DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    335 @am__fastdepCXX_FALSE@  $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     320@am__fastdepCXX_FALSE@  $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
    336321
    337322ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     
    454439        @echo "This command is intended for maintainers to use"
    455440        @echo "it deletes files that may require special tools to rebuild."
    456         -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
    457441clean: clean-am
    458442
  • src/driver/cc1.cc

    r242d458 r679864e1  
    1010// Created On       : Fri Aug 26 14:23:51 2005
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 10 09:27:37 2016
    13 // Update Count     : 80
     12// Last Modified On : Thu Jul 16 17:09:14 2015
     13// Update Count     : 54
    1414//
    1515
     
    3030
    3131
    32 string compiler_name( CFA_BACKEND_CC );                                 // path/name of C compiler
     32string compiler_name( GCC_PATH );                                               // path/name of C compiler
    3333
    3434string D__GCC_BPREFIX__( "-D__GCC_BPREFIX__=" );
     
    108108        const char *args[argc + 100];                                           // leave space for 100 additional cpp command line values
    109109        int nargs = 1;                                                                          // number of arguments in args list; 0 => command name
    110         const char *cargs[20];                                                          // leave space for 20 additional cfa-cpp command line values
    111         int ncargs = 1;                                                                         // 0 => command name
     110        const char *uargs[20];                                                          // leave space for 20 additional cfa-cpp command line values
     111        int nuargs = 1;                                                                         // 0 => command name
    112112
    113113        signal( SIGINT,  sigTermHandler );
    114114        signal( SIGTERM, sigTermHandler );
    115 
    116 #ifdef __DEBUG_H__
    117         cerr << "Stage1" << endl;
    118 #endif // __DEBUG_H__
    119115
    120116        // process all the arguments
     
    151147                                i += 1;                                                                 // and the argument
    152148                                cpp_flag = true;
    153                         } else if ( arg == "-D__CFA_PREPROCESS__" ) {
     149                        } else if ( arg == "-D__CFA__" ) {
    154150                                CFA_flag = true;
    155                         } else if ( arg == "-D" && string( argv[i + 1] ) == "__CFA_PREPROCESS__" ) {
     151                        } else if ( arg == "-D" && string( argv[i + 1] ) == "__CFA__" ) {
    156152                                i += 1;                                                                 // and the argument
    157153                                CFA_flag = true;
    158154                        } else if ( prefix( arg, D__CFA_FLAGPREFIX__ ) ) {
    159                                 cargs[ncargs] = ( *new string( arg.substr( D__CFA_FLAGPREFIX__.size() ) ) ).c_str();
    160                                 ncargs += 1;
     155                                uargs[nuargs] = ( *new string( arg.substr( D__CFA_FLAGPREFIX__.size() ) ) ).c_str();
     156                                nuargs += 1;
    161157                        } else if ( arg == "-D" && prefix( argv[i + 1], D__CFA_FLAGPREFIX__.substr(2) ) ) {
    162                                 cargs[ncargs] = ( *new string( string( argv[i + 1] ).substr( D__CFA_FLAGPREFIX__.size() - 2 ) ) ).c_str();
    163                                 ncargs += 1;
     158                                uargs[nuargs] = ( *new string( string( argv[i + 1] ).substr( D__CFA_FLAGPREFIX__.size() - 2 ) ) ).c_str();
     159                                nuargs += 1;
    164160                                i += 1;                                                                 // and the argument
    165161                        } else if ( prefix( arg, D__GCC_BPREFIX__ ) ) {
     
    321317
    322318        if ( fork() == 0 ) {                                                            // child runs CFA
    323                 cargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str();
    324 
    325                 // Source file-name used to generate routine names containing global initializations for TU.
    326                 cargs[ncargs] = ( *new string( "-F" ) ).c_str();
    327                 ncargs += 1;
    328                 cargs[ncargs] = ( *new string( string( cpp_in ) ) ).c_str();
    329                 ncargs += 1;
    330 
    331                 cargs[ncargs] = tmpname;
    332                 ncargs += 1;
     319                uargs[0] = ( *new string( bprefix + "/cfa-cpp" ) ).c_str();
     320
     321                uargs[nuargs] = tmpname;
     322                nuargs += 1;
    333323                if ( o_name != NULL ) {
    334                         cargs[ncargs] = o_name;
    335                         ncargs += 1;
     324                        uargs[nuargs] = o_name;
     325                        nuargs += 1;
    336326                } else if ( ! CFA_flag ) {                                              // run cfa-cpp ?
    337                         cargs[ncargs] = cpp_out;
    338                         ncargs += 1;
     327                        uargs[nuargs] = cpp_out;
     328                        nuargs += 1;
    339329                } // if
    340                 cargs[ncargs] = NULL;                                                   // terminate argument list
    341 
    342 #ifdef __DEBUG_H__
    343                 cerr << "cfa-cpp ncargs: " << o_name << " " << CFA_flag << " " << ncargs << endl;
    344                 for ( i = 0; cargs[i] != NULL; i += 1 ) {
    345                         cerr << cargs[i] << " ";
     330                uargs[nuargs] = NULL;                                                   // terminate argument list
     331
     332#ifdef __DEBUG_H__
     333                cerr << "cfa-cpp nuargs: " << o_name << " " << CFA_flag << " " << nuargs << endl;
     334                for ( i = 0; uargs[i] != NULL; i += 1 ) {
     335                        cerr << uargs[i] << " ";
    346336                } // for
    347337                cerr << endl;
    348338#endif // __DEBUG_H__
    349339
    350                 execvp( cargs[0], (char * const *)cargs );              // should not return
     340                execvp( uargs[0], (char * const *)uargs );              // should not return
    351341                perror( "CFA Translator error: cpp level, execvp" );
    352342                exit( EXIT_FAILURE );
     
    380370        const char *args[argc + 100];                                           // leave space for 100 additional cfa command line values
    381371        int nargs = 1;                                                                          // number of arguments in args list; 0 => command name
    382 
    383 #ifdef __DEBUG_H__
    384         cerr << "Stage2" << endl;
    385 #endif // __DEBUG_H__
    386372
    387373        // process all the arguments
     
    481467
    482468        if ( arg == "-E" ) {
     469#ifdef __DEBUG_H__
     470                cerr << "Stage1" << endl;
     471#endif // __DEBUG_H__
    483472                Stage1( argc, argv );
    484473        } else if ( arg == "-fpreprocessed" ) {
     474#ifdef __DEBUG_H__
     475                cerr << "Stage2" << endl;
     476#endif // __DEBUG_H__
    485477                Stage2( argc, argv );
    486478        } else {
  • src/driver/cfa.cc

    r242d458 r679864e1  
    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 : Tue Aug  2 12:23:11 2016
    13 // Update Count     : 147
     12// Last Modified On : Thu Jul 16 17:09:23 2015
     13// Update Count     : 124
    1414//
    1515
     
    7575        string langstd;                                                                         // language standard
    7676
    77         string compiler_path( CFA_BACKEND_CC );                         // path/name of C compiler
     77        string compiler_path( GCC_PATH );                                       // path/name of C compiler
    7878        string compiler_name;                                                           // name of C compiler
    7979
     
    8787        bool cpp_flag = false;                                                          // -E or -M flag, preprocessor only
    8888        bool std_flag = false;                                                          // -std= flag
    89         bool noincstd_flag = false;                                                     // -no-include-std= flag
    90         bool debugging __attribute(( unused )) = false;         // -g flag
     89        bool debugging = false;                                                         // -g flag
    9190
    9291        const char *args[argc + 100];                                           // cfa command line values, plus some space for additional flags
     
    145144                        } else if ( arg == "-nohelp" ) {
    146145                                help = false;                                                   // strip the nohelp flag
    147                         } else if ( arg == "-no-include-std" ) {
    148                                 noincstd_flag = true;                                   // strip the no-include-std flag
    149146                        } else if ( arg == "-compiler" ) {
    150147                                // use the user specified compiler
     
    168165                                nargs += 1;
    169166                        } else if ( prefix( arg, "-std=" ) ) {
    170                                 std_flag = true;                                                // -std=XX provided
     167                                std_flag = true;                                                // std=XX provided
    171168                                args[nargs] = argv[i];                                  // pass the argument along
    172169                                nargs += 1;
     
    247244        } // if
    248245
    249         // add the CFA include-library paths, which allow direct access to header files without directory qualification
    250 
    251246        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";
    258247        nargs += 1;
    259248
     
    274263        args[nargs] = ( *new string( string("-D__CFA_PATCHLEVEL__=") + Patch ) ).c_str();
    275264        nargs += 1;
    276         args[nargs] = "-D__CFA__";
    277         nargs += 1;
    278         args[nargs] = "-D__CFORALL__";
    279         nargs += 1;
    280265
    281266        if ( cpp_flag ) {
     
    285270
    286271        if ( CFA_flag ) {
    287                 args[nargs] = "-D__CFA_PREPROCESS_";
     272                args[nargs] = "-D__CFA__";
    288273                nargs += 1;
    289274        } // if
     
    317302                args[nargs] = "-no-integrated-cpp";
    318303                nargs += 1;
    319                 args[nargs] = "-Wno-deprecated";
     304                args[nargs] = "-Wno-deprecated"; 
    320305                nargs += 1;
    321306                if ( ! std_flag ) {                                                             // default c99, if none specified
    322                         args[nargs] = "-std=gnu99";
     307                        args[nargs] = "-std=c99";
    323308                        nargs += 1;
    324309                } // if
    325                 args[nargs] = "-fgnu89-inline";
    326                 nargs += 1;
    327310                args[nargs] = ( *new string( string("-B") + Bprefix + "/" ) ).c_str();
    328311                nargs += 1;
    329                 args[nargs] = "-lm";
    330                 nargs += 1;
    331312        } else {
    332                 cerr << argv[0] << " error, compiler \"" << compiler_name << "\" unsupported." << endl;
     313                cerr << argv[0] << " error, compiler " << compiler_name << " not supported." << endl;
    333314                exit( EXIT_FAILURE );
    334315        } // if
  • src/examples/Makefile.am

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

    r242d458 r679864e1  
    3636PRE_UNINSTALL = :
    3737POST_UNINSTALL = :
    38 noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT) \
    39         avl_test$(EXEEXT)
     38noinst_PROGRAMS = fstream_test$(EXEEXT) vector_test$(EXEEXT)
    4039subdir = src/examples
    4140DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
     
    4948CONFIG_CLEAN_VPATH_FILES =
    5049PROGRAMS = $(noinst_PROGRAMS)
    51 am_avl_test_OBJECTS = avl_test.$(OBJEXT) avl0.$(OBJEXT) avl1.$(OBJEXT) \
    52         avl2.$(OBJEXT) avl3.$(OBJEXT) avl4.$(OBJEXT) \
    53         avl-private.$(OBJEXT)
    54 avl_test_OBJECTS = $(am_avl_test_OBJECTS)
    55 avl_test_LDADD = $(LDADD)
    56 am_fstream_test_OBJECTS = fstream_test.$(OBJEXT)
     50am_fstream_test_OBJECTS = iostream.$(OBJEXT) fstream.$(OBJEXT) \
     51        fstream_test.$(OBJEXT)
    5752fstream_test_OBJECTS = $(am_fstream_test_OBJECTS)
    5853fstream_test_LDADD = $(LDADD)
    59 am_vector_test_OBJECTS = vector_int.$(OBJEXT) array.$(OBJEXT) \
     54am_vector_test_OBJECTS = vector_int.$(OBJEXT) fstream.$(OBJEXT) \
     55        iostream.$(OBJEXT) array.$(OBJEXT) iterator.$(OBJEXT) \
    6056        vector_test.$(OBJEXT)
    6157vector_test_OBJECTS = $(am_vector_test_OBJECTS)
     
    6561am__depfiles_maybe = depfiles
    6662am__mv = mv -f
    67 AM_V_lt = $(am__v_lt_@AM_V@)
    68 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
    69 am__v_lt_0 = --silent
    7063COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    7164        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    72 AM_V_CC = $(am__v_CC_@AM_V@)
    73 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    74 am__v_CC_0 = @echo "  CC    " $@;
    75 AM_V_at = $(am__v_at_@AM_V@)
    76 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    77 am__v_at_0 = @
    7865CCLD = $(CC)
    7966LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    80 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    81 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    82 am__v_CCLD_0 = @echo "  CCLD  " $@;
    83 AM_V_GEN = $(am__v_GEN_@AM_V@)
    84 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    85 am__v_GEN_0 = @echo "  GEN   " $@;
    86 SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    87         $(vector_test_SOURCES)
    88 DIST_SOURCES = $(avl_test_SOURCES) $(fstream_test_SOURCES) \
    89         $(vector_test_SOURCES)
     67SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
     68DIST_SOURCES = $(fstream_test_SOURCES) $(vector_test_SOURCES)
    9069ETAGS = etags
    9170CTAGS = ctags
     
    9473ALLOCA = @ALLOCA@
    9574AMTAR = @AMTAR@
    96 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    9775AUTOCONF = @AUTOCONF@
    9876AUTOHEADER = @AUTOHEADER@
     
    10280CC = @CFA_BINDIR@/cfa
    10381CCDEPMODE = @CCDEPMODE@
    104 CFA_BACKEND_CC = @CFA_BACKEND_CC@
    10582CFA_BINDIR = @CFA_BINDIR@
    106 CFA_FLAGS = @CFA_FLAGS@
    10783CFA_INCDIR = @CFA_INCDIR@
    10884CFA_LIBDIR = @CFA_LIBDIR@
     
    124100EGREP = @EGREP@
    125101EXEEXT = @EXEEXT@
     102GCC_PATH = @GCC_PATH@
    126103GREP = @GREP@
    127104INSTALL = @INSTALL@
     
    199176top_builddir = @top_builddir@
    200177top_srcdir = @top_srcdir@
    201 fstream_test_SOURCES = fstream_test.c
    202 vector_test_SOURCES = vector_int.c array.c vector_test.c
    203 avl_test_SOURCES = avltree/avl_test.c avltree/avl0.c avltree/avl1.c avltree/avl2.c avltree/avl3.c avltree/avl4.c avltree/avl-private.c
     178fstream_test_SOURCES = iostream.c fstream.c fstream_test.c
     179vector_test_SOURCES = vector_int.c fstream.c iostream.c array.c iterator.c vector_test.c
    204180all: all-am
    205181
     
    215191          esac; \
    216192        done; \
    217         echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/examples/Makefile'; \
     193        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/examples/Makefile'; \
    218194        $(am__cd) $(top_srcdir) && \
    219           $(AUTOMAKE) --foreign src/examples/Makefile
     195          $(AUTOMAKE) --gnu src/examples/Makefile
    220196.PRECIOUS: Makefile
    221197Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
     
    239215clean-noinstPROGRAMS:
    240216        -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
    241 avl_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)
    244217fstream_test$(EXEEXT): $(fstream_test_OBJECTS) $(fstream_test_DEPENDENCIES) $(EXTRA_fstream_test_DEPENDENCIES)
    245218        @rm -f fstream_test$(EXEEXT)
    246         $(AM_V_CCLD)$(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
     219        $(LINK) $(fstream_test_OBJECTS) $(fstream_test_LDADD) $(LIBS)
    247220vector_test$(EXEEXT): $(vector_test_OBJECTS) $(vector_test_DEPENDENCIES) $(EXTRA_vector_test_DEPENDENCIES)
    248221        @rm -f vector_test$(EXEEXT)
    249         $(AM_V_CCLD)$(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
     222        $(LINK) $(vector_test_OBJECTS) $(vector_test_LDADD) $(LIBS)
    250223
    251224mostlyclean-compile:
     
    256229
    257230@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.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@
     231@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstream.Po@am__quote@
    265232@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@
    266235@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_int.Po@am__quote@
    267236@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vector_test.Po@am__quote@
    268237
    269238.c.o:
    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@
     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@
    273242@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    274 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
     243@am__fastdepCC_FALSE@   $(COMPILE) -c $<
    275244
    276245.c.obj:
    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@
     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@
    280249@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    281 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
    282 
    283 avl_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 
    290 avl_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 
    297 avl0.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 
    304 avl0.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 
    311 avl1.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 
    318 avl1.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 
    325 avl2.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 
    332 avl2.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 
    339 avl3.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 
    346 avl3.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 
    353 avl4.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 
    360 avl4.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 
    367 avl-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 
    374 avl-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`
     250@am__fastdepCC_FALSE@   $(COMPILE) -c `$(CYGPATH_W) '$<'`
    380251
    381252ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
  • src/examples/abstype.c

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

    r242d458 r679864e1  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Feb 29 18:06:17 2016
    13 // Update Count     : 10
     12// Last Modified On : Wed May 27 18:14:58 2015
     13// Update Count     : 1
    1414//
    1515
    16 #include <fstream>
     16#include "fstream.h"
    1717
    1818int main() {
    19         sout | "Bonjour au monde!" | endl;
     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";
    2026}
    2127
    2228// Local Variables: //
    2329// tab-width: 4 //
    24 // compile-command: "cfa hello.c" //
     30// compile-command: "cfa hello.c fstream.o iostream.o" //
    2531// End: //
  • src/examples/huge.c

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

    r242d458 r679864e1  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Mar  8 22:15:08 2016
    13 // Update Count     : 13
     12// Last Modified On : Wed May 27 18:16:30 2015
     13// Update Count     : 2
    1414//
    1515
    16 #include <fstream>
     16#include "fstream.h"
    1717
    18 forall( otype T )
     18forall( type T )
    1919T identity( T t ) {
    2020        return t;
     
    2222
    2323int main() {
    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;
     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';
    3434}
    3535
    3636// Local Variables: //
    3737// tab-width: 4 //
    38 // compile-command: "cfa identity.c" //
     38// compile-command: "cfa identity.c fstream.o iostream.o" //
    3939// End: //
  • src/examples/includes.c

    r242d458 r679864e1  
    77// includes.c --
    88//
    9 // Author           : Peter A. Buhr
     9// Author           : Richard C. Bilson
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 12 17:59:25 2016
    13 // Update Count     : 371
     12// Last Modified On : Fri Jun 26 15:04:33 2015
     13// Update Count     : 14
    1414//
    1515
    16 // ***********************************************
    17 // USE -std=c99 WITH gxx TO GET SAME OUTPUT AS cfa
    18 // ***********************************************
    19 
    20 #ifdef __CFA__
    21 extern "C" {
    22 #endif // __CFA__
    23 
    2416#if 0
    25 #if 1
    26 #define _GNU_SOURCE
    27 #include <aio.h>
    28 #include <a.out.h>
     17//#include <aio.h>              // FAILS -- includes locale.h
    2918#include <aliases.h>
    3019#include <alloca.h>
    3120#include <ansidecl.h>
    3221#include <ar.h>
    33 #include <argp.h>
    34 #include <argz.h>
     22#include <argp.h>               // FAILS -- includes locale.h
     23#include <argz.h>               // FAILS -- includes locale.h
    3524#include <assert.h>
    36 #include <bfd.h>
    37 #include <bfdlink.h>
    38 #include <byteswap.h>
    39 #include <cblas.h>
    40 #include <cblas_f77.h>
     25#include <bfd.h>                // contains structure field "type"
    4126#include <complex.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>
     27#include <ctype.h>              // FAILS -- includes locale.h
    6028#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>
    7629#include <fenv.h>
    7730#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>
    10531#include <inttypes.h>
    10632#include <iso646.h>
    107 #include <jerror.h>
    108 //#include <jmorecfg.h>
    109 //#include <jpegint.h>
    110 //#include <jpeglib.h>
    11133#include <limits.h>
    112 #include <locale.h>
    113 #include <math.h>
    114 #include <ncurses.h>
     34#include <locale.h>             // FAILS -- "no reasonable alternatives for applying ... Name: ?+? ..."
     35#include <math.h>               // contains structure field "type"
    11536#include <setjmp.h>
    11637#include <signal.h>
     
    12041#include <stdlib.h>
    12142#include <stdio.h>
    122 #include <string.h>
     43#include <string.h>             // FAILS -- includes locale.h
    12344#include <tgmath.h>
    124 #include <time.h>
     45#include <time.h>               // FAILS -- includes locale.h
    12546#include <unistd.h>
    126 #include <wchar.h>
    127 #include <wctype.h>
     47#include <wchar.h>              // FAILS -- includes locale.h
     48#include <wctype.h>             // FAILS -- includes locale.h
     49#include <curses.h>
     50#else
     51#include <aio.h>                // FAILS -- includes locale.h
    12852#endif // 0
    129 
    130 #else
    131 
    132 #define _GNU_SOURCE
    133 //#include <bfd.h>
    134 //#include <error.h>
    135 
    136 #include <demangle.h>
    137 
    138 #endif // 0
    139 
    140 #ifdef __CFA__
    141 } // extern "C"
    142 #endif // __CFA__
    14353
    14454// Local Variables: //
  • src/examples/index.h

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

    r242d458 r679864e1  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Mar  8 22:14:39 2016
    13 // Update Count     : 8
     12// Last Modified On : Wed May 27 18:41:23 2015
     13// Update Count     : 4
    1414//
    1515
    1616typedef unsigned long streamsize_type;
    1717
    18 trait ostream( dtype os_type ) {
     18context ostream( dtype os_type ) {
    1919        os_type *write( os_type *, const char *, streamsize_type );
    2020        int fail( os_type * );
    2121};
    2222
    23 trait writeable( otype T ) {
     23context writeable( type 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 trait istream( dtype is_type ) {
     31context istream( dtype is_type ) {
    3232        is_type *read( is_type *, char *, streamsize_type );
    3333        is_type *unread( is_type *, char );
     
    3636};
    3737
    38 trait readable( otype T ) {
     38context readable( type 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 trait iterator( otype iterator_type, otype elt_type ) {
     45context iterator( type iterator_type, type elt_type ) {
    4646        iterator_type ?++( iterator_type* );
    4747        iterator_type ++?( iterator_type* );
     
    5252};
    5353
    54 forall( otype elt_type | writeable( elt_type ),
    55                 otype iterator_type | iterator( iterator_type, elt_type ),
     54forall( type elt_type | writeable( elt_type ),
     55                type 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( otype elt_type | writeable( elt_type ),
    60                 otype iterator_type | iterator( iterator_type, elt_type ),
     59forall( type elt_type | writeable( elt_type ),
     60                type 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

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

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

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

    r242d458 r679864e1  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jan  3 22:38:45 2016
    13 // Update Count     : 3
     12// Last Modified On : Wed May 27 18:42:39 2015
     13// Update Count     : 2
    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

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

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

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

    r242d458 r679864e1  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Mar  8 22:05:48 2016
    13 // Update Count     : 27
     12// Last Modified On : Wed May 27 18:43:34 2015
     13// Update Count     : 2
    1414//
    1515
    16 #include <fstream>
     16extern "C" {
     17#include <stdio.h>
     18}
    1719
    18 forall( otype T | { T ?*?( T, T ); } )
     20forall( type T | { T ?*?( T, T ); } )
    1921T square( T t ) {
    2022        return t * t;
    21 } // square
     23}
     24
     25//char ?*?( char a1, char a2 ) {
     26//      return (char)( (int)a1 * (int)a2 );
     27//}
    2228
    2329int main() {
    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
     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}
    6741
    6842// Local Variables: //
  • src/examples/sum.c

    r242d458 r679864e1  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // sum.c -- test resolvers ability to deal with many variables with the same name and to use the minimum number of casts
    8 //    necessary to disambiguate overloaded variable names.
     7// sum.c --
    98//
    10 // Author           : Peter A. Buhr
     9// Author           : Richard C. Bilson
    1110// Created On       : Wed May 27 17:56:53 2015
    1211// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Thu May 26 09:25:42 2016
    14 // Update Count     : 201
     12// Last Modified On : Mon Jun  1 20:46:35 2015
     13// Update Count     : 18
    1514//
    1615
    17 #include <fstream>
     16extern "C" {
     17        int printf( const char *, ... );
     18}
    1819
    19 trait sumable( otype T ) {
     20context sumable( type T ) {
    2021        const T 0;
    2122        T ?+?( T, T );
     23        T ?++( T * );
    2224        T ?+=?( T *, T );
    23         T ++?( T * );
    24         T ?++( T * );
    25 }; // sumable
     25};
    2626
    27 forall( otype T | sumable( T ) )
    28 T 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 +
     27forall( type T | sumable( T ) )
     28T 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 +
    3233        return total;
    33 } // sum
     34}
    3435
    3536// Required to satisfy sumable as char does not have addition.
    3637const char 0;
    37 char ?+?( char t1, char t2 ) { return (int)t1 + t2; }   // cast forces integer addition, otherwise recursion
    38 char ?+=?( char *t1, char t2 ) { *t1 = *t1 + t2; return *t1; }
    39 char ++?( char *t ) { *t += 1; return *t; }
    40 char ?++( char *t ) { char temp = *t; *t += 1; return temp; }
     38char ?+?( char op1, char op2 ) { return op1 + op2; }
     39char ?++( char *op ) { return *op + 1; }
    4140
    42 int main( void ) {
     41const double 0; // TEMPORARY, incorrect use of int 0
     42
     43int main() {
    4344        const int low = 5, High = 15, size = High - low;
     45        int si = 0, ai[size];
     46        int v = low;
     47        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 );
    4453
    45         char s = 0, a[size], v = low;
    46         for ( int i = 0; i < size; i += 1, v += 1 ) {
    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;
     54//      char ci[size];
     55//      char c = sum( size, ci );
     56//      float fi[size];
     57//      float f = sum( size, fi );
    5258
    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;
    60 
    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;
     59        double sd = 0.0, ad[size];
     60        double v = low / 10.0;
    7061        for ( int i = 0; i < size; i += 1, v += 0.1 ) {
    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
     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}
    9268
    9369// Local Variables: //
  • src/examples/twice.c

    r242d458 r679864e1  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Mar  8 22:04:58 2016
    13 // Update Count     : 16
     12// Last Modified On : Wed May 27 18:37:23 2015
     13// Update Count     : 1
    1414//
    1515
    16 #include <fstream>
     16#include "fstream.h"
    1717
    18 forall( otype T | { T ?+?( T, T ); T ?++( T * ); [T] ?+=?( T *, T ); } )
     18forall( type T | { T ?+?( T, T ); T ?++( T * ); [T] ?+=?( T *, T ); } )
    1919T twice( const T t ) {
    2020        return t + t;
    2121}
    2222
    23 int 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;
     23int main() {
     24        ofstream *sout = ofstream_stdout();
     25        sout << twice( 1 ) << ' ' << twice( 3.2 ) << '\n';
    3026}
    3127
    3228// Local Variables: //
    3329// tab-width: 4 //
    34 // compile-command: "cfa twice.c" //
     30// compile-command: "cfa twice.c fstream.o iostream.o" //
    3531// End: //
  • src/initialization.txt

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

    r242d458 r679864e1  
    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 : Tue Aug  2 12:17:23 2016
    14 ## Update Count     : 196
     13## Last Modified On : Thu Jun  4 22:49:16 2015
     14## Update Count     : 7
    1515###############################################################################
    1616
    17 # create object files in directory with source files
    18 AUTOMAKE_OPTIONS = subdir-objects
    19 
     17libcfa_a_SOURCES = libcfa-prelude.c
    2018lib_LIBRARIES = libcfa.a
    2119
    2220# put into lib for now
    2321cfalibdir = ${libdir}
    24 cfalib_DATA = builtins.cf extras.cf prelude.cf
    25 
    26 # create extra forward types/declarations to reduce inclusion of library files
    27 extras.cf : extras.regx extras.c
    28         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
     22cfalib_DATA = prelude.cf builtins.cf
    2923
    3024# 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
    3129builtins.cf : builtins.c
    32         ${AM_V_GEN}if [ -e $< ] ; then \
     30        @if [ -e $< ] ; then \
    3331                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    3432        fi
    3533
    3634builtins.c : builtins.def prototypes.awk
    37         ${AM_V_GEN}if [ -e $< ] ; then \
     35        @if [ -e $< ] ; then \
    3836                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    3937        fi
     
    4341prototypes.awk :
    4442
    45 MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
     43MAINTAINERCLEANFILES = ${srcdir}/libcfa-prelude.c
    4644
    47 #--------------------------------------------------
    48 
    49 libcfa-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
     45libcfa-prelude.c : ${srcdir}/prelude.cf
     46        ${libdir}/cfa-cpp -l ${srcdir}/prelude.cf $@
    5147
    5248libcfa-prelude.o : libcfa-prelude.c
    53          ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -c -o $@ $<
    54 
    55 CFLAGS = -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
    56 CC = ${abs_top_srcdir}/src/driver/cfa
    57 
    58 headers = limits stdlib math iostream fstream iterator rational containers/vector
    59 libobjs = ${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 
    67 libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
    68 
    69 stdhdr = ${shell echo stdhdr/*}
    70 
    71 nobase_include_HEADERS = ${headers} ${stdhdr}
    72 
    73 CLEANFILES = libcfa-prelude.c
    74 
    75 maintainer-clean-local:
    76         -rm -rf ${includedir}/*
     49        ${BACKEND_CC} -c -o $@ $<
  • src/libcfa/Makefile.in

    r242d458 r679864e1  
    1818######################## -*- Mode: Makefile-Automake -*- ######################
    1919###############################################################################
    20 
    2120
    2221
     
    3938POST_UNINSTALL = :
    4039subdir = src/libcfa
    41 DIST_COMMON = $(nobase_include_HEADERS) $(srcdir)/Makefile.am \
    42         $(srcdir)/Makefile.in
     40DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
    4341ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    4442am__aclocal_m4_deps = $(top_srcdir)/configure.ac
     
    7674         $(am__cd) "$$dir" && rm -f $$files; }; \
    7775  }
    78 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)" \
    79         "$(DESTDIR)$(includedir)"
     76am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)"
    8077LIBRARIES = $(lib_LIBRARIES)
    8178AR = ar
    8279ARFLAGS = cru
    83 AM_V_AR = $(am__v_AR_@AM_V@)
    84 am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
    85 am__v_AR_0 = @echo "  AR    " $@;
    86 AM_V_at = $(am__v_at_@AM_V@)
    87 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
    88 am__v_at_0 = @
    8980libcfa_a_AR = $(AR) $(ARFLAGS)
    9081libcfa_a_LIBADD =
    91 am__dirstamp = $(am__leading_dot)dirstamp
    92 am__objects_1 = limits.$(OBJEXT) stdlib.$(OBJEXT) math.$(OBJEXT) \
    93         iostream.$(OBJEXT) fstream.$(OBJEXT) iterator.$(OBJEXT) \
    94         rational.$(OBJEXT) containers/vector.$(OBJEXT)
    95 am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT) $(am__objects_1)
     82am_libcfa_a_OBJECTS = libcfa-prelude.$(OBJEXT)
    9683libcfa_a_OBJECTS = $(am_libcfa_a_OBJECTS)
    9784DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
     
    10188COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
    10289        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
    103 AM_V_CC = $(am__v_CC_@AM_V@)
    104 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
    105 am__v_CC_0 = @echo "  CC    " $@;
    10690CCLD = $(CC)
    10791LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
    108 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
    109 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
    110 am__v_CCLD_0 = @echo "  CCLD  " $@;
    111 AM_V_GEN = $(am__v_GEN_@AM_V@)
    112 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
    113 am__v_GEN_0 = @echo "  GEN   " $@;
    11492SOURCES = $(libcfa_a_SOURCES)
    11593DIST_SOURCES = $(libcfa_a_SOURCES)
    11694DATA = $(cfalib_DATA)
    117 HEADERS = $(nobase_include_HEADERS)
    11895ETAGS = etags
    11996CTAGS = ctags
     
    12299ALLOCA = @ALLOCA@
    123100AMTAR = @AMTAR@
    124 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
    125101AUTOCONF = @AUTOCONF@
    126102AUTOHEADER = @AUTOHEADER@
     
    128104AWK = @AWK@
    129105BACKEND_CC = @BACKEND_CC@
    130 CC = ${abs_top_srcdir}/src/driver/cfa
     106CC = @CC@
    131107CCDEPMODE = @CCDEPMODE@
    132 CFA_BACKEND_CC = @CFA_BACKEND_CC@
    133108CFA_BINDIR = @CFA_BINDIR@
    134 CFA_FLAGS = @CFA_FLAGS@
    135109CFA_INCDIR = @CFA_INCDIR@
    136110CFA_LIBDIR = @CFA_LIBDIR@
    137111CFA_PREFIX = @CFA_PREFIX@
    138 CFLAGS = -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
     112CFLAGS = @CFLAGS@
    139113CPP = @CPP@
    140114CPPFLAGS = @CPPFLAGS@
     
    150124EGREP = @EGREP@
    151125EXEEXT = @EXEEXT@
     126GCC_PATH = @GCC_PATH@
    152127GREP = @GREP@
    153128INSTALL = @INSTALL@
     
    225200top_builddir = @top_builddir@
    226201top_srcdir = @top_srcdir@
    227 
    228 # create object files in directory with source files
    229 AUTOMAKE_OPTIONS = subdir-objects
     202libcfa_a_SOURCES = libcfa-prelude.c
    230203lib_LIBRARIES = libcfa.a
    231204
    232205# put into lib for now
    233206cfalibdir = ${libdir}
    234 cfalib_DATA = builtins.cf extras.cf prelude.cf
    235 MAINTAINERCLEANFILES = builtins.cf extras.cf ${addprefix ${libdir}/,${cfalib_DATA}} ${addprefix ${libdir}/,${lib_LIBRARIES}}
    236 headers = limits stdlib math iostream fstream iterator rational containers/vector
    237 libobjs = ${headers:=.o}
    238 libcfa_a_SOURCES = libcfa-prelude.c ${headers:=.c}
    239 stdhdr = ${shell echo stdhdr/*}
    240 nobase_include_HEADERS = ${headers} ${stdhdr}
    241 CLEANFILES = libcfa-prelude.c
     207cfalib_DATA = prelude.cf builtins.cf
     208MAINTAINERCLEANFILES = ${srcdir}/libcfa-prelude.c
    242209all: all-am
    243210
     
    253220          esac; \
    254221        done; \
    255         echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/libcfa/Makefile'; \
     222        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/libcfa/Makefile'; \
    256223        $(am__cd) $(top_srcdir) && \
    257           $(AUTOMAKE) --foreign src/libcfa/Makefile
     224          $(AUTOMAKE) --gnu src/libcfa/Makefile
    258225.PRECIOUS: Makefile
    259226Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
     
    304271clean-libLIBRARIES:
    305272        -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES)
    306 containers/$(am__dirstamp):
    307         @$(MKDIR_P) containers
    308         @: > containers/$(am__dirstamp)
    309 containers/$(DEPDIR)/$(am__dirstamp):
    310         @$(MKDIR_P) containers/$(DEPDIR)
    311         @: > containers/$(DEPDIR)/$(am__dirstamp)
    312 containers/vector.$(OBJEXT): containers/$(am__dirstamp) \
    313         containers/$(DEPDIR)/$(am__dirstamp)
    314273libcfa.a: $(libcfa_a_OBJECTS) $(libcfa_a_DEPENDENCIES) $(EXTRA_libcfa_a_DEPENDENCIES)
    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
     274        -rm -f libcfa.a
     275        $(libcfa_a_AR) libcfa.a $(libcfa_a_OBJECTS) $(libcfa_a_LIBADD)
     276        $(RANLIB) libcfa.a
    318277
    319278mostlyclean-compile:
    320279        -rm -f *.$(OBJEXT)
    321         -rm -f containers/vector.$(OBJEXT)
    322280
    323281distclean-compile:
    324282        -rm -f *.tab.c
    325283
    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@
    329284@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@
    335285
    336286.c.o:
    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@
     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@
    341290@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    342 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
     291@am__fastdepCC_FALSE@   $(COMPILE) -c $<
    343292
    344293.c.obj:
    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@
     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@
    349297@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
    350 @am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
     298@am__fastdepCC_FALSE@   $(COMPILE) -c `$(CYGPATH_W) '$<'`
    351299install-cfalibDATA: $(cfalib_DATA)
    352300        @$(NORMAL_INSTALL)
     
    367315        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
    368316        dir='$(DESTDIR)$(cfalibdir)'; $(am__uninstall_files_from_dir)
    369 install-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 
    385 uninstall-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)
    390317
    391318ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
     
    473400check-am: all-am
    474401check: check-am
    475 all-am: Makefile $(LIBRARIES) $(DATA) $(HEADERS)
     402all-am: Makefile $(LIBRARIES) $(DATA)
    476403installdirs:
    477         for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)" "$(DESTDIR)$(includedir)"; do \
     404        for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cfalibdir)"; do \
    478405          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
    479406        done
     
    500427
    501428clean-generic:
    502         -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
    503429
    504430distclean-generic:
    505431        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
    506432        -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)
    509433
    510434maintainer-clean-generic:
     
    517441
    518442distclean: distclean-am
    519         -rm -rf ./$(DEPDIR) containers/$(DEPDIR)
     443        -rm -rf ./$(DEPDIR)
    520444        -rm -f Makefile
    521445distclean-am: clean-am distclean-compile distclean-generic \
     
    534458info-am:
    535459
    536 install-data-am: install-cfalibDATA install-nobase_includeHEADERS
     460install-data-am: install-cfalibDATA
    537461
    538462install-dvi: install-dvi-am
     
    563487
    564488maintainer-clean: maintainer-clean-am
    565         -rm -rf ./$(DEPDIR) containers/$(DEPDIR)
     489        -rm -rf ./$(DEPDIR)
    566490        -rm -f Makefile
    567 maintainer-clean-am: distclean-am maintainer-clean-generic \
    568         maintainer-clean-local
     491maintainer-clean-am: distclean-am maintainer-clean-generic
    569492
    570493mostlyclean: mostlyclean-am
     
    580503ps-am:
    581504
    582 uninstall-am: uninstall-cfalibDATA uninstall-libLIBRARIES \
    583         uninstall-nobase_includeHEADERS
     505uninstall-am: uninstall-cfalibDATA uninstall-libLIBRARIES
    584506
    585507.MAKE: install-am install-strip
     
    592514        install-exec install-exec-am install-html install-html-am \
    593515        install-info install-info-am install-libLIBRARIES install-man \
    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 \
     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 \
    598519        mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
    599520        tags uninstall uninstall-am uninstall-cfalibDATA \
    600         uninstall-libLIBRARIES uninstall-nobase_includeHEADERS
    601 
    602 
    603 # create extra forward types/declarations to reduce inclusion of library files
    604 extras.cf : extras.regx extras.c
    605         ${AM_V_GEN}@BACKEND_CC@ @CFA_FLAGS@ -E ${srcdir}/extras.c | grep -f extras.regx > ${srcdir}/extras.cf
     521        uninstall-libLIBRARIES
     522
    606523
    607524# 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
    608529builtins.cf : builtins.c
    609         ${AM_V_GEN}if [ -e $< ] ; then \
     530        @if [ -e $< ] ; then \
    610531                @BACKEND_CC@ -E -P $^ | sed -e "/targetm/s/.*//" -e "/_Decimal/s/.*//" -e "s/void (const char \*)0();//" -e "s/\"//g" -e "s/\(__builtin_\) /\1/" > $@ ; \
    611532        fi
    612533
    613534builtins.c : builtins.def prototypes.awk
    614         ${AM_V_GEN}if [ -e $< ] ; then \
     535        @if [ -e $< ] ; then \
    615536                @BACKEND_CC@ -E prototypes.c | awk -f prototypes.awk > $@ ; \
    616537        fi
     
    620541prototypes.awk :
    621542
    622 #--------------------------------------------------
    623 
    624 libcfa-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
     543libcfa-prelude.c : ${srcdir}/prelude.cf
     544        ${libdir}/cfa-cpp -l ${srcdir}/prelude.cf $@
    626545
    627546libcfa-prelude.o : libcfa-prelude.c
    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 
    636 maintainer-clean-local:
    637         -rm -rf ${includedir}/*
     547        ${BACKEND_CC} -c -o $@ $<
    638548
    639549# Tell versions [3.59,3.63) of GNU make to not export all variables.
  • src/libcfa/prelude.cf

    r242d458 r679864e1  
    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 Jul  5 18:04:40 2016
    11 // Update Count     : 92
    12 //
    13 
    14 # 2 "prelude.cf"  // needed for error messages from this file
     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
     16typedef long int ptrdiff_t;
    1517
    1618// Section numbers from: http://plg.uwaterloo.ca/~cforall/refrat.pdf
     
    6163long double _Complex    ?--( long double _Complex * ),          ?--( volatile long double _Complex * );
    6264
    63 forall( otype T ) T *                    ?++(                T ** );
    64 forall( otype T ) const T *              ?++( const          T ** );
    65 forall( otype T ) volatile T *           ?++(       volatile T ** );
    66 forall( otype T ) const volatile T *     ?++( const volatile T ** );
    67 forall( otype T ) T *                    ?--(                T ** );
    68 forall( otype T ) const T *              ?--( const          T ** );
    69 forall( otype T ) volatile T *           ?--(       volatile T ** );
    70 forall( otype T ) const volatile T *     ?--( const volatile T ** );
    71 
    72 forall( otype T ) lvalue T               ?[?](                T *,          ptrdiff_t );
    73 forall( otype T ) const lvalue T         ?[?]( const          T *,          ptrdiff_t );
    74 forall( otype T ) volatile lvalue T      ?[?](       volatile T *,          ptrdiff_t );
    75 forall( otype T ) const volatile lvalue T ?[?]( const volatile T *,         ptrdiff_t );
    76 forall( otype T ) lvalue T               ?[?](          ptrdiff_t,                T * );
    77 forall( otype T ) const lvalue T         ?[?](          ptrdiff_t, const          T * );
    78 forall( otype T ) volatile lvalue T      ?[?](          ptrdiff_t,       volatile T * );
    79 forall( otype T ) const volatile lvalue T ?[?](         ptrdiff_t, const volatile T * );
     65forall( type T ) T *                     ?++(                T ** );
     66forall( type T ) const T *               ?++( const          T ** );
     67forall( type T ) volatile T *            ?++(       volatile T ** );
     68forall( type T ) const volatile T *      ?++( const volatile T ** );
     69forall( type T ) T *                     ?--(                T ** );
     70forall( type T ) const T *               ?--( const          T ** );
     71forall( type T ) volatile T *            ?--(       volatile T ** );
     72forall( type T ) const volatile T *      ?--( const volatile T ** );
     73
     74forall( type T ) lvalue T                ?[?](                T *,          ptrdiff_t );
     75forall( type T ) const lvalue T          ?[?]( const          T *,          ptrdiff_t );
     76forall( type T ) volatile lvalue T       ?[?](       volatile T *,          ptrdiff_t );
     77forall( type T ) const volatile lvalue T ?[?]( const volatile T *,          ptrdiff_t );
     78forall( type T ) lvalue T                ?[?](          ptrdiff_t,                T * );
     79forall( type T ) const lvalue T          ?[?](          ptrdiff_t, const          T * );
     80forall( type T ) volatile lvalue T       ?[?](          ptrdiff_t,       volatile T * );
     81forall( type T ) const volatile lvalue T ?[?](          ptrdiff_t, const volatile T * );
    8082
    8183// ------------------------------------------------------------
     
    99101long double _Complex    ++?( long double _Complex * ),          --?( long double _Complex * );
    100102
    101 forall( otype T ) T *                    ++?(                T ** );
    102 forall( otype T ) const T *              ++?( const          T ** );
    103 forall( otype T ) volatile T *           ++?(       volatile T ** );
    104 forall( otype T ) const volatile T *     ++?( const volatile T ** );
    105 forall( otype T ) T *                    --?(                T ** );
    106 forall( otype T ) const T *              --?( const          T ** );
    107 forall( otype T ) volatile T *           --?(       volatile T ** );
    108 forall( otype T ) const volatile T *     --?( const volatile T ** );
    109 
    110 forall( otype T ) lvalue T               *?(                 T * );
    111 forall( otype T ) const lvalue T                 *?( const           T * );
    112 forall( otype T ) volatile lvalue T      *?(       volatile  T * );
    113 forall( otype T ) const volatile lvalue T *?( const volatile  T * );
     103forall( type T ) T *                     ++?(                T ** );
     104forall( type T ) const T *               ++?( const          T ** );
     105forall( type T ) volatile T *            ++?(       volatile T ** );
     106forall( type T ) const volatile T *      ++?( const volatile T ** );
     107forall( type T ) T *                     --?(                T ** );
     108forall( type T ) const T *               --?( const          T ** );
     109forall( type T ) volatile T *            --?(       volatile T ** );
     110forall( type T ) const volatile T *      --?( const volatile T ** );
     111
     112forall( type T ) lvalue T                *?(                 T * );
     113forall( type T ) const lvalue T          *?( const           T * );
     114forall( type T ) volatile lvalue T       *?(       volatile  T * );
     115forall( type T ) const volatile lvalue T *?( const volatile  T * );
    114116forall( ftype FT ) lvalue FT             *?( FT * );
    115117
    116 _Bool                   +?( _Bool ),                    -?( _Bool ),                    ~?( _Bool );
    117 signed int              +?( signed int ),               -?( signed int ),               ~?( signed int );
    118 unsigned int            +?( unsigned int ),             -?( unsigned int ),             ~?( unsigned int );
    119 signed long int         +?( signed long int ),          -?( signed long int ),          ~?( signed long int );
    120 unsigned long int       +?( unsigned long int ),        -?( unsigned long int ),        ~?( unsigned long int );
    121 signed long long int    +?( signed long long int ),     -?( signed long long int ),     ~?( signed long long int );
    122 unsigned long long int  +?( unsigned long long int ),   -?( unsigned long long int ),   ~?( unsigned long long int );
     118_Bool                   +?( _Bool ),                    -?( _Bool ),                    ~?( _Bool );         
     119signed int              +?( signed int ),               -?( signed int ),               ~?( signed int );           
     120unsigned int            +?( unsigned int ),             -?( unsigned int ),             ~?( unsigned int );         
     121signed long int         +?( signed long int ),          -?( signed long int ),          ~?( signed long int );       
     122unsigned long int       +?( unsigned long int ),        -?( unsigned long int ),        ~?( unsigned long int );             
     123signed long long int    +?( signed long long int ),     -?( signed long long int ),     ~?( signed long long int );   
     124unsigned long long int  +?( unsigned long long int ),   -?( unsigned long long int ),   ~?( unsigned long long int ); 
    123125float                   +?( float ),                    -?( float );
    124126double                  +?( double ),                   -?( double );
     
    147149unsigned int            ?*?( unsigned int, unsigned int ),                      ?/?( unsigned int, unsigned int ),              ?%?( unsigned int, unsigned int );
    148150signed long int         ?*?( signed long int, signed long int ),                ?/?( signed long int, signed long int ),        ?%?( signed long int, signed long int );
    149 unsigned long int       ?*?( unsigned long int, unsigned long int ),            ?/?( unsigned long int, unsigned long int ),    ?%?( unsigned long int, unsigned long int );
     151unsigned long int       ?*?( unsigned long int, unsigned long int ),            ?/?( unsigned long int, long unsigned ),        ?%?( long unsigned, long unsigned );
    150152signed 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 );
    151 unsigned 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 );
     153unsigned long long int  ?*?( unsigned long long int, unsigned long long int ),  ?/?( unsigned long long int, long long unsigned ), ?%?( long long unsigned, long long unsigned );
    152154float                   ?*?( float, float ),                                    ?/?( float, float );
    153155double                  ?*?( double, double ),                                  ?/?( double, double );
     
    171173unsigned int            ?+?( unsigned int, unsigned int ),                      ?-?( unsigned int, unsigned int );
    172174signed long int         ?+?( signed long int, signed long int ),                ?-?( signed long int, signed long int );
    173 unsigned long int       ?+?( unsigned long int, unsigned long int ),            ?-?( unsigned long int, unsigned long int );
     175unsigned long int       ?+?( unsigned long int, unsigned long int ),            ?-?( unsigned long int, long unsigned );
    174176signed long long int    ?+?( signed long long int, long long int  signed),      ?-?( signed long long int, signed long long int );
    175 unsigned long long int  ?+?( unsigned long long int, unsigned long long int ),  ?-?( unsigned long long int, unsigned long long int );
     177unsigned long long int  ?+?( unsigned long long int, unsigned long long int ),  ?-?( unsigned long long int, long long unsigned );
    176178float                   ?+?( float, float ),                                    ?-?( float, float );
    177179double                  ?+?( double, double ),                                  ?-?( double, double );
     
    181183long double _Complex    ?+?( long double _Complex, long double _Complex ),      ?-?( long double _Complex, long double _Complex );
    182184
    183 forall( otype T ) T *                   ?+?(                T *,          ptrdiff_t );
    184 forall( otype T ) T *                   ?+?(          ptrdiff_t,                T * );
    185 forall( otype T ) const T *             ?+?( const          T *,          ptrdiff_t );
    186 forall( otype T ) const T *             ?+?(          ptrdiff_t, const          T * );
    187 forall( otype T ) volatile T *          ?+?(       volatile T *,          ptrdiff_t );
    188 forall( otype T ) volatile T *          ?+?(          ptrdiff_t,       volatile T * );
    189 forall( otype T ) const volatile T *    ?+?( const volatile T *,          ptrdiff_t );
    190 forall( otype T ) const volatile T *    ?+?(          ptrdiff_t, const volatile T * );
    191 forall( otype T ) T *                   ?-?(                T *,          ptrdiff_t );
    192 forall( otype T ) const T *             ?-?( const          T *,          ptrdiff_t );
    193 forall( otype T ) volatile T *          ?-?(       volatile T *,          ptrdiff_t );
    194 forall( otype T ) const volatile T *    ?-?( const volatile T *,          ptrdiff_t );
    195 forall( otype T ) ptrdiff_t             ?-?( const volatile T *, const volatile T * );
     185forall( type T ) T *                    ?+?(                T *,          ptrdiff_t );
     186forall( type T ) T *                    ?+?(          ptrdiff_t,                T * );
     187forall( type T ) const T *              ?+?( const          T *,          ptrdiff_t );
     188forall( type T ) const T *              ?+?(          ptrdiff_t, const          T * );
     189forall( type T ) volatile T *           ?+?(       volatile T *,          ptrdiff_t );
     190forall( type T ) volatile T *           ?+?(          ptrdiff_t,       volatile T * );
     191forall( type T ) const volatile T *     ?+?( const volatile T *,          ptrdiff_t );
     192forall( type T ) const volatile T *     ?+?(          ptrdiff_t, const volatile T * );
     193forall( type T ) T *                    ?-?(                T *,          ptrdiff_t );
     194forall( type T ) const T *              ?-?( const          T *,          ptrdiff_t );
     195forall( type T ) volatile T *           ?-?(       volatile T *,          ptrdiff_t );
     196forall( type T ) const volatile T *     ?-?( const volatile T *,          ptrdiff_t );
     197forall( type T ) ptrdiff_t              ?-?( const volatile T *, const volatile T * );
    196198
    197199// ------------------------------------------------------------
     
    201203// ------------------------------------------------------------
    202204
    203 _Bool                   ?<<?( _Bool, _Bool ),                                   ?>>?( _Bool, _Bool );
    204 signed int              ?<<?( signed int, signed int ),                         ?>>?( signed int, signed int );
    205 unsigned int            ?<<?( unsigned int, unsigned int ),                     ?>>?( unsigned int, unsigned int );
    206 signed long int         ?<<?( signed long int, signed long int ),               ?>>?( signed long int, signed long int );
    207 unsigned long int       ?<<?( unsigned long int, unsigned long int ),           ?>>?( unsigned long int, unsigned long int );
    208 signed long long int    ?<<?( signed long long int, signed long long int ),     ?>>?( signed long long int, signed long long int );
    209 unsigned long long int  ?<<?( unsigned long long int, unsigned long long int ), ?>>?( unsigned long long int, unsigned long long int );
     205_Bool                   ?<<?( _Bool, _Bool ),                           ?>>?( _Bool, _Bool );
     206signed int              ?<<?( signed int, signed int ),                 ?>>?( signed int, signed int );
     207unsigned int            ?<<?( unsigned int, unsigned int ),             ?>>?( unsigned int, unsigned int );
     208signed long int         ?<<?( signed long int, signed long int ),       ?>>?( signed long int, signed long int );
     209unsigned long int       ?<<?( unsigned long int, long unsigned ),       ?>>?( unsigned long int, unsigned 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 ?<?( 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 );
    231 signed 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 );
    233 signed int ?<?( float, float ),                                         ?<=?( float, float ),
    234            ?>?( float, float ),                                         ?>=?( float, float );
    235 signed int ?<?( double, double ),                                       ?<=?( double, double ),
    236            ?>?( double, double ),                                       ?>=?( double, double );
    237 signed int ?<?( long double, long double ),                             ?<=?( long double, long double ),
    238            ?>?( 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 ?<?( float, float ),                         ?<=?( float, float ),
     230           ?>?( float, float ),                         ?>=?( float, float );
     231signed int ?<?( double, double ),                       ?<=?( double, double ),
     232           ?>?( double, double ),                       ?>=?( double, double );
     233signed int ?<?( long double, long double ),             ?<=?( long double, long double ),
     234           ?>?( long double, long double ),             ?>=?( long double, long double );
    239235
    240236forall( dtype DT ) signed int ?<?(  const volatile DT *, const volatile DT * );
     
    249245// ------------------------------------------------------------
    250246
    251 signed int ?==?( _Bool, _Bool ),                                        ?!=?( _Bool, _Bool );
    252 signed int ?==?( signed int, signed int ),                              ?!=?( signed int, signed int );
    253 signed int ?==?( unsigned int, unsigned int ),                          ?!=?( unsigned int, unsigned int );
    254 signed int ?==?( signed long int, signed long int ),                    ?!=?( signed long int, signed long int );
    255 signed int ?==?( unsigned long int, unsigned long int ),                ?!=?( unsigned long int, unsigned long int );
    256 signed int ?==?( signed long long int, long long int  signed),          ?!=?( signed long long int, signed long long int );
    257 signed int ?==?( unsigned long long int, unsigned long long int ),      ?!=?( unsigned long long int, unsigned long long int );
    258 signed int ?==?( float, float ),                                        ?!=?( float, float );
    259 signed int ?==?( double, double ),                                      ?!=?( double, double );
    260 signed int ?==?( long double, long double ),                            ?!=?( long double, long double );
    261 signed int ?==?( float _Complex, float _Complex ),                      ?!=?( float _Complex, float _Complex );
    262 signed int ?==?( double _Complex, double _Complex ),                    ?!=?( double _Complex, double _Complex );
    263 signed int ?==?( long double _Complex, long double _Complex ),          ?!=?( long double _Complex, long double _Complex );
     247signed int ?==?( _Bool, _Bool ),                                ?!=?( _Bool, _Bool );
     248signed int ?==?( signed int, signed int ),                      ?!=?( signed int, signed int );
     249signed int ?==?( unsigned int, unsigned int ),                  ?!=?( unsigned int, unsigned int );
     250signed int ?==?( signed long int, signed long int ),            ?!=?( signed long int, signed long int );
     251signed int ?==?( unsigned long int, unsigned long int ),        ?!=?( unsigned long int, long unsigned );
     252signed int ?==?( signed long long int, long long int  signed),  ?!=?( signed long long int, signed long long int );
     253signed int ?==?( unsigned long long int, unsigned long long int ), ?!=?( unsigned long long int, long long unsigned );
     254signed int ?==?( float, float ),                                ?!=?( float, float );
     255signed int ?==?( double, double ),                              ?!=?( double, double );
     256signed int ?==?( long double, long double ),                    ?!=?( long double, long double );
     257signed int ?==?( float _Complex, float _Complex ),              ?!=?( float _Complex, float _Complex );
     258signed int ?==?( double _Complex, double _Complex ),            ?!=?( double _Complex, double _Complex );
     259signed int ?==?( long double _Complex, long double _Complex ),  ?!=?( long double _Complex, long double _Complex );
    264260
    265261forall( dtype DT ) signed int ?==?(                DT *,                DT * );
     
    299295signed long int         ?&?( signed long int, signed long int );
    300296unsigned long int       ?&?( unsigned long int, unsigned long int );
    301 signed long long int    ?&?( signed long long int, signed long long int );
    302 unsigned long long int  ?&?( unsigned long long int, unsigned long long int );
    303297
    304298// ------------------------------------------------------------
     
    313307signed long int         ?^?( signed long int, signed long int );
    314308unsigned long int       ?^?( unsigned long int, unsigned long int );
    315 signed long long int    ?^?( signed long long int, signed long long int );
    316 unsigned long long int  ?^?( unsigned long long int, unsigned long long int );
    317309
    318310// ------------------------------------------------------------
     
    327319signed long int         ?|?( signed long int, signed long int );
    328320unsigned long int       ?|?( unsigned long int, unsigned long int );
    329 signed long long int    ?|?( signed long long int, signed long long int );
    330 unsigned long long int  ?|?( unsigned long long int, unsigned long long int );
    331321
    332322// ------------------------------------------------------------
     
    429419forall( ftype FT ) FT *                 ?=?( FT * volatile *, forall( ftype FT2 ) FT2 * );
    430420
    431 forall( otype T ) T *                   ?+=?(                T *          *, ptrdiff_t );
    432 forall( otype T ) T *                   ?+=?(                T * volatile *, ptrdiff_t );
    433 forall( otype T ) const T *             ?+=?( const          T *          *, ptrdiff_t );
    434 forall( otype T ) const T *             ?+=?( const          T * volatile *, ptrdiff_t );
    435 forall( otype T ) volatile T *          ?+=?(       volatile T *          *, ptrdiff_t );
    436 forall( otype T ) volatile T *          ?+=?(       volatile T * volatile *, ptrdiff_t );
    437 forall( otype T ) const volatile T *    ?+=?( const volatile T *          *, ptrdiff_t );
    438 forall( otype T ) const volatile T *    ?+=?( const volatile T * volatile *, ptrdiff_t );
    439 forall( otype T ) T *                   ?-=?(                T *          *, ptrdiff_t );
    440 forall( otype T ) T *                   ?-=?(                T * volatile *, ptrdiff_t );
    441 forall( otype T ) const T *             ?-=?( const          T *          *, ptrdiff_t );
    442 forall( otype T ) const T *             ?-=?( const          T * volatile *, ptrdiff_t );
    443 forall( otype T ) volatile T *          ?-=?(       volatile T *          *, ptrdiff_t );
    444 forall( otype T ) volatile T *          ?-=?(       volatile T * volatile *, ptrdiff_t );
    445 forall( otype T ) const volatile T *    ?-=?( const volatile T *          *, ptrdiff_t );
    446 forall( otype T ) const volatile T *    ?-=?( const volatile T * volatile *, ptrdiff_t );
     421forall( type T ) T *                    ?+=?(                T *          *, ptrdiff_t );
     422forall( type T ) T *                    ?+=?(                T * volatile *, ptrdiff_t );
     423forall( type T ) const T *              ?+=?( const          T *          *, ptrdiff_t );
     424forall( type T ) const T *              ?+=?( const          T * volatile *, ptrdiff_t );
     425forall( type T ) volatile T *           ?+=?(       volatile T *          *, ptrdiff_t );
     426forall( type T ) volatile T *           ?+=?(       volatile T * volatile *, ptrdiff_t );
     427forall( type T ) const volatile T *     ?+=?( const volatile T *          *, ptrdiff_t );
     428forall( type T ) const volatile T *     ?+=?( const volatile T * volatile *, ptrdiff_t );
     429forall( type T ) T *                    ?-=?(                T *          *, ptrdiff_t );
     430forall( type T ) T *                    ?-=?(                T * volatile *, ptrdiff_t );
     431forall( type T ) const T *              ?-=?( const          T *          *, ptrdiff_t );
     432forall( type T ) const T *              ?-=?( const          T * volatile *, ptrdiff_t );
     433forall( type T ) volatile T *           ?-=?(       volatile T *          *, ptrdiff_t );
     434forall( type T ) volatile T *           ?-=?(       volatile T * volatile *, ptrdiff_t );
     435forall( type T ) const volatile T *     ?-=?( const volatile T *          *, ptrdiff_t );
     436forall( type T ) const volatile T *     ?-=?( const volatile T * volatile *, ptrdiff_t );
    447437
    448438_Bool                   ?=?( _Bool *, _Bool ),                                  ?=?( volatile _Bool *, _Bool );
     
    624614                        ?+=?( long double _Complex *, long double _Complex ), ?+=?( volatile long double _Complex *, long double _Complex ),
    625615                        ?-=?( 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
    638 void    ?{}( _Bool * ),                         ?{}( volatile _Bool * );
    639 void    ?{}( char * ),  ?{}( volatile char * );
    640 void    ?{}( unsigned char * ), ?{}( volatile unsigned char * );
    641 void    ?{}( char signed * ),                   ?{}( volatile char signed * );
    642 void    ?{}( int short * ),                             ?{}( volatile int short * );
    643 void    ?{}( int short unsigned * ),    ?{}( volatile int short unsigned * );
    644 void    ?{}( signed int * ),                    ?{}( volatile signed int * );
    645 void    ?{}( unsigned int * ),                  ?{}( volatile unsigned int * );
    646 void    ?{}( signed long int * ),               ?{}( volatile signed long int * );
    647 void    ?{}( unsigned long int * ),             ?{}( volatile unsigned long int * );
    648 void    ?{}( signed long long int * ),          ?{}( volatile signed long long int * );
    649 void    ?{}( unsigned long long int * ),        ?{}( volatile unsigned long long int * );
    650 void    ?{}( float * ),                         ?{}( volatile float * );
    651 void    ?{}( double * ),                        ?{}( volatile double * );
    652 void    ?{}( long double * ),                   ?{}( volatile long double * );
    653 void    ?{}( float _Complex * ),                ?{}( volatile float _Complex * );
    654 void    ?{}( double _Complex * ),               ?{}( volatile double _Complex * );
    655 void    ?{}( long double _Complex * ),          ?{}( volatile long double _Complex * );
    656 
    657 // copy ctor
    658 void    ?{}( _Bool *, _Bool ),                                  ?{}( volatile _Bool *, _Bool );
    659 void    ?{}( char *, char ),    ?{}( volatile char *, char );
    660 void    ?{}( unsigned char *, unsigned char ),                  ?{}( volatile unsigned char *, unsigned char );
    661 void    ?{}( char signed *, char signed ),                      ?{}( volatile char signed *, char signed );
    662 void    ?{}( int short *, int short ),                          ?{}( volatile int short *, int short );
    663 void    ?{}( int short unsigned *, int short unsigned ),        ?{}( volatile int short unsigned *, int short unsigned );
    664 void    ?{}( signed int *, signed int),                         ?{}( volatile signed int *, signed int );
    665 void    ?{}( unsigned int *, unsigned int),                     ?{}( volatile unsigned int *, unsigned int );
    666 void    ?{}( signed long int *, signed long int),               ?{}( volatile signed long int *, signed long int );
    667 void    ?{}( unsigned long int *, unsigned long int),           ?{}( volatile unsigned long int *, unsigned long int );
    668 void    ?{}( signed long long int *, signed long long int),     ?{}( volatile signed long long int *, signed long long int );
    669 void    ?{}( unsigned long long int *, unsigned long long int), ?{}( volatile unsigned long long int *, unsigned long long int );
    670 void    ?{}( float *, float),                                   ?{}( volatile float *, float );
    671 void    ?{}( double *, double),                                 ?{}( volatile double *, double );
    672 void    ?{}( long double *, long double),                       ?{}( volatile long double *, long double );
    673 void    ?{}( float _Complex *, float _Complex),                 ?{}( volatile float _Complex *, float _Complex );
    674 void    ?{}( double _Complex *, double _Complex),               ?{}( volatile double _Complex *, double _Complex );
    675 void    ?{}( long double _Complex *, long double _Complex),     ?{}( volatile long double _Complex *, long double _Complex );
    676 
    677 // dtor
    678 void    ^?{}( _Bool * ),                        ^?{}( volatile _Bool * );
    679 void    ^?{}( char * ), ^?{}( volatile char * );
    680 void    ^?{}( char unsigned * ),                        ^?{}( volatile char unsigned * );
    681 void    ^?{}( char signed * ),                  ^?{}( volatile char signed * );
    682 void    ^?{}( int short * ),                            ^?{}( volatile int short * );
    683 void    ^?{}( int short unsigned * ),   ^?{}( volatile int short unsigned * );
    684 void    ^?{}( signed int * ),                   ^?{}( volatile signed int * );
    685 void    ^?{}( unsigned int * ),                 ^?{}( volatile unsigned int * );
    686 void    ^?{}( signed long int * ),              ^?{}( volatile signed long int * );
    687 void    ^?{}( unsigned long int * ),            ^?{}( volatile unsigned long int * );
    688 void    ^?{}( signed long long int * ),         ^?{}( volatile signed long long int * );
    689 void    ^?{}( unsigned long long int * ),       ^?{}( volatile unsigned long long int * );
    690 void    ^?{}( float * ),                        ^?{}( volatile float * );
    691 void    ^?{}( double * ),                       ^?{}( volatile double * );
    692 void    ^?{}( long double * ),                  ^?{}( volatile long double * );
    693 void    ^?{}( float _Complex * ),               ^?{}( volatile float _Complex * );
    694 void    ^?{}( double _Complex * ),              ^?{}( volatile double _Complex * );
    695 void    ^?{}( 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
    717 forall( ftype FT ) void ?{}( FT **, FT * );
    718 forall( ftype FT ) void ?{}( FT * volatile *, FT * );
    719 
    720 forall( dtype DT ) void ?{}(                 DT *          *,                   DT * );
    721 forall( dtype DT ) void ?{}(                 DT * volatile *,                   DT * );
    722 forall( dtype DT ) void ?{}( const           DT *          *,                   DT * );
    723 forall( dtype DT ) void ?{}( const           DT * volatile *,                   DT * );
    724 forall( dtype DT ) void ?{}( const           DT *          *, const             DT * );
    725 forall( dtype DT ) void ?{}( const           DT * volatile *, const             DT * );
    726 forall( dtype DT ) void ?{}(       volatile  DT *          *,                   DT * );
    727 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   DT * );
    728 forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    DT * );
    729 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    DT * );
    730 
    731 forall( dtype DT ) void ?{}( const volatile  DT *          *,                   DT * );
    732 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   DT * );
    733 forall( dtype DT ) void ?{}( const volatile  DT *          *, const             DT * );
    734 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             DT * );
    735 forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    DT * );
    736 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    DT * );
    737 forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    DT * );
    738 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    DT * );
    739 
    740 forall( dtype DT ) void ?{}(                 DT *          *,                   void * );
    741 forall( dtype DT ) void ?{}(                 DT * volatile *,                   void * );
    742 forall( dtype DT ) void ?{}( const           DT *          *,                   void * );
    743 forall( dtype DT ) void ?{}( const           DT * volatile *,                   void * );
    744 forall( dtype DT ) void ?{}( const           DT *          *, const             void * );
    745 forall( dtype DT ) void ?{}( const           DT * volatile *, const             void * );
    746 forall( dtype DT ) void ?{}(       volatile  DT *          *,                   void * );
    747 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,                   void * );
    748 forall( dtype DT ) void ?{}(       volatile  DT *          *,       volatile    void * );
    749 forall( dtype DT ) void ?{}(       volatile  DT * volatile *,       volatile    void * );
    750 
    751 forall( dtype DT ) void ?{}( const volatile  DT *          *,                   void * );
    752 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,                   void * );
    753 forall( dtype DT ) void ?{}( const volatile  DT *          *, const             void * );
    754 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const             void * );
    755 forall( dtype DT ) void ?{}( const volatile  DT *          *,       volatile    void * );
    756 forall( dtype DT ) void ?{}( const volatile  DT * volatile *,       volatile    void * );
    757 forall( dtype DT ) void ?{}( const volatile  DT *          *, const volatile    void * );
    758 forall( dtype DT ) void ?{}( const volatile  DT * volatile *, const volatile    void * );
    759 
    760 forall( dtype DT ) void ?{}(                 void *          *,                 DT * );
    761 forall( dtype DT ) void ?{}(                 void * volatile *,                 DT * );
    762 forall( dtype DT ) void ?{}( const           void *          *,                 DT * );
    763 forall( dtype DT ) void ?{}( const           void * volatile *,                 DT * );
    764 forall( dtype DT ) void ?{}( const           void *          *, const           DT * );
    765 forall( dtype DT ) void ?{}( const           void * volatile *, const           DT * );
    766 forall( dtype DT ) void ?{}(        volatile void *          *,                 DT * );
    767 forall( dtype DT ) void ?{}(        volatile void * volatile *,                 DT * );
    768 forall( dtype DT ) void ?{}(        volatile void *          *,       volatile  DT * );
    769 forall( dtype DT ) void ?{}(        volatile void * volatile *,       volatile  DT * );
    770 forall( dtype DT ) void ?{}( const volatile void *           *,                 DT * );
    771 forall( dtype DT ) void ?{}( const volatile void * volatile *,                  DT * );
    772 forall( dtype DT ) void ?{}( const volatile void *           *, const           DT * );
    773 forall( dtype DT ) void ?{}( const volatile void * volatile *, const            DT * );
    774 forall( dtype DT ) void ?{}( const volatile void *           *,       volatile  DT * );
    775 forall( dtype DT ) void ?{}( const volatile void * volatile *,        volatile  DT * );
    776 forall( dtype DT ) void ?{}( const volatile void *           *, const volatile  DT * );
    777 forall( dtype DT ) void ?{}( const volatile void * volatile *, const volatile   DT * );
    778 
    779 void    ?{}(                void *          *,                void * );
    780 void    ?{}(                void * volatile *,                void * );
    781 void    ?{}( const          void *          *,                void * );
    782 void    ?{}( const          void * volatile *,                void * );
    783 void    ?{}( const          void *          *, const          void * );
    784 void    ?{}( const          void * volatile *, const          void * );
    785 void    ?{}(       volatile void *          *,                void * );
    786 void    ?{}(       volatile void * volatile *,                void * );
    787 void    ?{}(       volatile void *          *,       volatile void * );
    788 void    ?{}(       volatile void * volatile *,       volatile void * );
    789 void    ?{}( const volatile void *          *,                void * );
    790 void    ?{}( const volatile void * volatile *,                void * );
    791 void    ?{}( const volatile void *          *, const          void * );
    792 void    ?{}( const volatile void * volatile *, const          void * );
    793 void    ?{}( const volatile void *          *,       volatile void * );
    794 void    ?{}( const volatile void * volatile *,       volatile void * );
    795 void    ?{}( const volatile void *          *, const volatile void * );
    796 void    ?{}( 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 * );
    800 forall( dtype DT ) void ?{}( const          DT *          *, forall( dtype DT2 ) const DT2 * );
    801 forall( 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 * );
    804 forall( dtype DT ) void ?{}( const volatile DT *          *, forall( dtype DT2 ) const DT2 * );
    805 forall( dtype DT ) void ?{}( const volatile DT * volatile *, forall( dtype DT2 ) const DT2 * );
    806 
    807 forall( ftype FT ) void ?{}( FT *          *, forall( ftype FT2 ) FT2 * );
    808 forall( ftype FT ) void ?{}( FT * volatile *, forall( ftype FT2 ) FT2 * );
    809 
    810 // default ctors
    811 forall( ftype FT ) void ?{}( FT *          * );
    812 forall( ftype FT ) void ?{}( FT * volatile * );
    813 
    814 forall( dtype DT ) void ?{}(                 DT *          *);
    815 forall( dtype DT ) void ?{}(                 DT * volatile *);
    816 forall( dtype DT ) void ?{}( const           DT *          *);
    817 forall( dtype DT ) void ?{}( const           DT * volatile *);
    818 forall( dtype DT ) void ?{}(       volatile  DT *          *);
    819 forall( dtype DT ) void ?{}(       volatile  DT * volatile *);
    820 forall( dtype DT ) void ?{}( const volatile  DT *          *);
    821 forall( dtype DT ) void ?{}( const volatile  DT * volatile *);
    822 
    823 void    ?{}(                void *          *);
    824 void    ?{}(                void * volatile *);
    825 void    ?{}( const          void *          *);
    826 void    ?{}( const          void * volatile *);
    827 void    ?{}(       volatile void *          *);
    828 void    ?{}(       volatile void * volatile *);
    829 void    ?{}( const volatile void *          *);
    830 void    ?{}( const volatile void * volatile *);
    831 
    832 // dtors
    833 forall( ftype FT ) void ^?{}( FT *         * );
    834 forall( ftype FT ) void ^?{}( FT * volatile * );
    835 
    836 forall( dtype DT ) void ^?{}(                DT *          *);
    837 forall( dtype DT ) void ^?{}(                DT * volatile *);
    838 forall( dtype DT ) void ^?{}( const          DT *          *);
    839 forall( dtype DT ) void ^?{}( const          DT * volatile *);
    840 forall( dtype DT ) void ^?{}(      volatile  DT *          *);
    841 forall( dtype DT ) void ^?{}(      volatile  DT * volatile *);
    842 forall( dtype DT ) void ^?{}( const volatile  DT *         *);
    843 forall( dtype DT ) void ^?{}( const volatile  DT * volatile *);
    844 
    845 void    ^?{}(               void *          *);
    846 void    ^?{}(               void * volatile *);
    847 void    ^?{}( const         void *          *);
    848 void    ^?{}( const         void * volatile *);
    849 void    ^?{}(      volatile void *          *);
    850 void    ^?{}(      volatile void * volatile *);
    851 void    ^?{}( const volatile void *         *);
    852 void    ^?{}( const volatile void * volatile *);
    853 
    854 // Local Variables: //
    855 // mode: c //
    856 // tab-width: 8 //
    857 // End: //
  • src/main.cc

    r242d458 r679864e1  
    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 : Peter A. Buhr
    12 // Last Modified On : Tue Jul  5 15:23:11 2016
    13 // Update Count     : 209
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Jul 30 16:08:18 2015
     13// Update Count     : 167
    1414//
    1515
     
    4040#include "MakeLibCfa.h"
    4141#include "InitTweak/Mutate.h"
    42 #include "InitTweak/GenInit.h"
    43 #include "InitTweak/FixInit.h"
     42#include "InitTweak/RemoveInit.h"
    4443//#include "Explain/GenProlog.h"
    4544//#include "Try/Visit.h"
    4645
    47 #include "Common/SemanticError.h"
    48 #include "Common/UnimplementedError.h"
     46#include "SemanticError.h"
     47#include "UnimplementedError.h"
    4948
    5049#include "../config.h"
     
    5655
    5756static void parse( FILE * input, LinkageSpec::Type t, bool shouldExit = false );
    58 static void dump( std::list< Declaration * > & translationUnit, std::ostream & out = std::cout );
     57static void dump( std::list< Declaration * > & translationUnit );
    5958
    6059bool
    6160        astp = false,
    6261        bresolvep = false,
    63         bboxp = false,
    64         ctorinitp = false,
    6562        exprp = false,
    6663        expraltp = false,
     
    7269        resolvep = false,                                                                       // used in AlternativeFinder
    7370        symtabp = false,
    74         treep = false,
    7571        validp = false,
    7672        errorp = false,
    7773        codegenp = false;
    7874
    79 enum { Ast, Bbox, Bresolver, CtorInitFix, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Tree, Validate, };
     75enum { Ast, Bresolver, Expr, ExprAlt, Grammar, LibCFA, Nopreamble, Parse, Prototypes, Resolver, Symbol, Validate, };
    8076
    8177static struct option long_opts[] = {
    8278        { "ast", no_argument, 0, Ast },
    83         { "before-box", no_argument, 0, Bbox },
    8479        { "before-resolver", no_argument, 0, Bresolver },
    85         { "ctorinitfix", no_argument, 0, CtorInitFix },
    8680        { "expr", no_argument, 0, Expr },
    8781        { "expralt", no_argument, 0, ExprAlt },
     
    9387        { "resolver", no_argument, 0, Resolver },
    9488        { "symbol", no_argument, 0, Symbol },
    95         { "tree", no_argument, 0, Tree },
    9689        { "validate", no_argument, 0, Validate },
    9790        { 0, 0, 0, 0 }
     
    10295        std::ostream *output = &std::cout;
    10396        int long_index;
    104         std::list< Declaration * > translationUnit;
    105         const char *filename = NULL;
     97        std::list< Declaration* > translationUnit;
    10698
    10799        opterr = 0;                                                                                     // prevent getopt from printing error messages
    108 
     100       
    109101        int c;
    110         while ( (c = getopt_long( argc, argv, "abBcefglnpqrstvyzD:F:", long_opts, &long_index )) != -1 ) {
     102        while ( (c = getopt_long( argc, argv, "abefglnpqrsvyzD:", long_opts, &long_index )) != -1 ) {
    111103                switch ( c ) {
    112104                  case Ast:
     
    118110                        bresolvep = true;
    119111                        break;
    120                   case 'B':                                                                             // print before resolver steps
    121                         bboxp = true;
    122                         break;
    123                   case CtorInitFix:
    124                   case 'c':
    125                         ctorinitp = true;
    126                         break;
    127112                  case Expr:
    128113                  case 'e':                                                                             // dump AST after expression analysis
     
    161146                        symtabp = true;
    162147                        break;
    163                   case Tree:
    164                   case 't':                                                                             // build in tree
    165                         treep = true;
    166                         break;
    167148                  case 'v':                                                                             // dump AST after decl validation pass
    168149                        validp = true;
     
    176157                  case 'D':                                                                             // ignore -Dxxx
    177158                        break;
    178                   case 'F':                                                                             // source file-name without suffix
    179                         filename = optarg;
    180                         break;
    181159                  case '?':
    182160                        cout << "Unknown option: '" << (char)optopt << "'" << endl;
    183                         exit( EXIT_FAILURE );
     161                        exit(1);
    184162                  default:
    185163                        abort();
     
    192170                        input = fopen( argv[ optind ], "r" );
    193171                        if ( ! input ) {
    194                                 std::cout << "Error: can't open " << argv[ optind ] << std::endl;
    195                                 exit( EXIT_FAILURE );
     172                                std::cout << "Error: can't open " << argv[optind] << std::endl;
     173                                exit( 1 );
    196174                        } // 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";
    201175                        optind += 1;
    202176                } else {
    203177                        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";
    207178                } // if
    208179
     
    210181                        output = new ofstream( argv[ optind ] );
    211182                } // if
    212 
     183       
    213184                Parser::get_parser().set_debug( grammarp );
    214185
    215                 // read in the builtins, extras, and the prelude
     186                // read in the builtins and the prelude
    216187                if ( ! nopreludep ) {                                                   // include gcc builtins
    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" );
     188                        FILE * builtins = fopen( CFA_LIBDIR "/builtins.cf", "r" );
    219189                        if ( builtins == NULL ) {
    220                                 std::cerr << "Error: can't open builtins.cf" << std::endl;
    221                                 exit( EXIT_FAILURE );
     190                                std::cerr << "Error: can't open builtins" << std::endl;
     191                                exit( 1 );
    222192                        } // if
     193
    223194                        parse( builtins, LinkageSpec::Compiler );
    224195
    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 );
     196                        if ( ! libcfap ) {
     197                                // read the prelude in, if we're not generating the cfa library
     198                                FILE * prelude = fopen( CFA_LIBDIR "/prelude.cf", "r" );
     199                                if ( prelude == NULL ) {
     200                                        std::cerr << "Error: can't open prelude" << std::endl;
     201                                        exit( 1 );
     202                                } // if
     203                   
     204                    parse( prelude, LinkageSpec::Intrinsic );
    230205                        } // if
    231                         parse( extras, LinkageSpec::C );
    232 
    233                         if ( ! libcfap ) {
    234                                 // read the prelude in, if not generating the cfa library
    235                                 FILE * prelude = fopen( treep ? "prelude.cf" : CFA_LIBDIR "/prelude.cf", "r" );
    236                                 if ( prelude == NULL ) {
    237                                         std::cerr << "Error: can't open prelude.cf" << std::endl;
    238                                         exit( EXIT_FAILURE );
    239                                 } // if
    240 
    241                                 parse( prelude, LinkageSpec::Intrinsic );
    242                         } // if
    243                 } // if
    244 
    245                 parse( input, libcfap ? LinkageSpec::Intrinsic : LinkageSpec::Cforall, grammarp );
    246 
     206                } // if
     207
     208                if ( libcfap ) {
     209                        parse( input, LinkageSpec::Intrinsic );
     210                } else {
     211                        parse( input, LinkageSpec::Cforall, grammarp );
     212                }
     213 
    247214                if ( parsep ) {
    248215                        Parser::get_parser().get_parseTree()->printList( std::cout );
     
    259226                } // if
    260227
    261                 // add the assignment statement after the initialization of a type parameter
     228                // add the assignment statement after the
     229                // initialization of a type parameter
    262230                OPTPRINT( "validate" )
    263231                SymTab::validate( translationUnit, symtabp );
     
    279247                OPTPRINT( "mutate" )
    280248                ControlStruct::mutate( translationUnit );
    281                 OPTPRINT( "fixNames" )
     249                OPTPRINT( "fixNames" ) 
    282250                CodeGen::fixNames( translationUnit );
    283                 OPTPRINT( "tweakInit" )
    284                 InitTweak::genInit( translationUnit );
     251                OPTPRINT( "tweak" )
     252                InitTweak::tweak( translationUnit );
    285253
    286254                if ( libcfap ) {
     
    298266                if ( exprp ) {
    299267                        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;
    309268                }
    310269
     
    312271                GenPoly::copyParams( translationUnit );
    313272                OPTPRINT( "convertSpecializations" )
    314                 GenPoly::convertSpecializations( translationUnit );
     273                GenPoly::convertSpecializations( translationUnit );             
    315274                OPTPRINT( "convertLvalue" )
    316275                GenPoly::convertLvalue( translationUnit );
    317 
    318                 if ( bboxp ) {
    319                         dump( translationUnit );
    320                         return 0;
    321                 }
    322276                OPTPRINT( "box" )
    323277                GenPoly::box( translationUnit );
     
    336290        } catch ( SemanticError &e ) {
    337291                if ( errorp ) {
    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;
     292                        dump( translationUnit );
    341293                }
    342294                e.print( std::cerr );
     
    360312        } // try
    361313
    362         deleteAll( translationUnit );
    363314        return 0;
    364315} // main
     
    378329}
    379330
    380 static void dump( std::list< Declaration * > & translationUnit, std::ostream & out ) {
     331static void dump( std::list< Declaration * > & translationUnit ) {
    381332        std::list< Declaration * > decls;
    382333        if ( noprotop ) {
    383                 filter( translationUnit.begin(), translationUnit.end(),
     334                filter( translationUnit.begin(), translationUnit.end(), 
    384335                                std::back_inserter( decls ), notPrelude );
    385336        } else {
     
    387338        }
    388339
    389         printAll( decls, out );
     340        printAll( decls, std::cout );
    390341        deleteAll( translationUnit );
    391342}
Note: See TracChangeset for help on using the changeset viewer.