Changeset fe7b281


Ignore:
Timestamp:
Oct 20, 2016, 12:19:37 PM (5 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
6d7c3df, a1e67dd, efe4d73
Parents:
d1fbaa7 (diff), 9059213 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • doc/user/user.tex

    rd1fbaa7 rfe7b281  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Sun Aug 14 08:23:06 2016
    14 %% Update Count     : 1323
     13%% Last Modified On : Thu Sep 29 11:50:28 2016
     14%% Update Count     : 1325
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    3333\usepackage{textcomp}
    3434\usepackage[latin1]{inputenc}
     35
    3536\usepackage{fullpage,times,comment}
    3637\usepackage{epic,eepic}
     
    18531854case 1:  case 2:  case 3: ...
    18541855\end{lstlisting}
    1855 still work.
     1856still works.
    18561857Nevertheless, reversing the default action would have a non-trivial effect on case actions that compound, such as the above example of processing shell arguments.
    1857 <<<<<<< HEAD
    1858 Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthru©, \eg:
    1859 =======
    18601858Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called ©choose©, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword ©fallthrough©/©fallthru©, e.g.:
    1861 >>>>>>> 080615890f586cb9954c252b55cab47f52c25758
    18621859\begin{lstlisting}
    18631860®choose® ( i ) {
  • src/Parser/lex.cc

    rd1fbaa7 rfe7b281  
    14691469 * Created On       : Sat Sep 22 08:58:10 2001
    14701470 * Last Modified By : Peter A. Buhr
    1471  * Last Modified On : Wed Aug 24 13:27:04 2016
    1472  * Update Count     : 487
     1471 * Last Modified On : Tue Oct 18 22:19:37 2016
     1472 * Update Count     : 488
    14731473 */
    14741474#line 20 "lex.ll"
     
    15171517
    15181518// identifier, GCC: $ in identifier
    1519 // quoted identifier
    15201519// attribute identifier, GCC: $ in identifier
    15211520// numeric constants, CFA: '_' in constant
     
    15321531
    15331532
    1534 #line 1535 "Parser/lex.cc"
     1533#line 1534 "Parser/lex.cc"
    15351534
    15361535#define INITIAL 0
     
    17241723        register int yy_act;
    17251724   
    1726 #line 139 "lex.ll"
     1725#line 136 "lex.ll"
    17271726
    17281727                                   /* line directives */
    1729 #line 1730 "Parser/lex.cc"
     1728#line 1729 "Parser/lex.cc"
    17301729
    17311730        if ( !(yy_init) )
     
    18241823/* rule 1 can match eol */
    18251824YY_RULE_SETUP
    1826 #line 141 "lex.ll"
     1825#line 138 "lex.ll"
    18271826{
    18281827        /* " stop highlighting */
     
    18501849/* rule 2 can match eol */
    18511850YY_RULE_SETUP
    1852 #line 163 "lex.ll"
     1851#line 160 "lex.ll"
    18531852;
    18541853        YY_BREAK
     
    18561855case 3:
    18571856YY_RULE_SETUP
    1858 #line 166 "lex.ll"
     1857#line 163 "lex.ll"
    18591858{ BEGIN COMMENT; }
    18601859        YY_BREAK
     
    18621861/* rule 4 can match eol */
    18631862YY_RULE_SETUP
    1864 #line 167 "lex.ll"
     1863#line 164 "lex.ll"
    18651864;
    18661865        YY_BREAK
    18671866case 5:
    18681867YY_RULE_SETUP
    1869 #line 168 "lex.ll"
     1868#line 165 "lex.ll"
    18701869{ BEGIN 0; }
    18711870        YY_BREAK
     
    18741873/* rule 6 can match eol */
    18751874YY_RULE_SETUP
    1876 #line 171 "lex.ll"
     1875#line 168 "lex.ll"
    18771876;
    18781877        YY_BREAK
     
    18801879case 7:
    18811880YY_RULE_SETUP
    1882 #line 174 "lex.ll"
     1881#line 171 "lex.ll"
    18831882{ WHITE_RETURN(' '); }
    18841883        YY_BREAK
    18851884case 8:
    18861885YY_RULE_SETUP
    1887 #line 175 "lex.ll"
     1886#line 172 "lex.ll"
    18881887{ WHITE_RETURN(' '); }
    18891888        YY_BREAK
     
    18911890/* rule 9 can match eol */
    18921891YY_RULE_SETUP
    1893 #line 176 "lex.ll"
     1892#line 173 "lex.ll"
    18941893{ NEWLINE_RETURN(); }
    18951894        YY_BREAK
     
    18971896case 10:
    18981897YY_RULE_SETUP
     1898#line 176 "lex.ll"
     1899{ KEYWORD_RETURN(ALIGNAS); }                    // C11
     1900        YY_BREAK
     1901case 11:
     1902YY_RULE_SETUP
     1903#line 177 "lex.ll"
     1904{ KEYWORD_RETURN(ALIGNOF); }                    // C11
     1905        YY_BREAK
     1906case 12:
     1907YY_RULE_SETUP
     1908#line 178 "lex.ll"
     1909{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
     1910        YY_BREAK
     1911case 13:
     1912YY_RULE_SETUP
    18991913#line 179 "lex.ll"
    1900 { KEYWORD_RETURN(ALIGNAS); }                    // C11
    1901         YY_BREAK
    1902 case 11:
     1914{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
     1915        YY_BREAK
     1916case 14:
    19031917YY_RULE_SETUP
    19041918#line 180 "lex.ll"
    1905 { KEYWORD_RETURN(ALIGNOF); }                    // C11
    1906         YY_BREAK
    1907 case 12:
     1919{ KEYWORD_RETURN(ASM); }
     1920        YY_BREAK
     1921case 15:
    19081922YY_RULE_SETUP
    19091923#line 181 "lex.ll"
    1910 { KEYWORD_RETURN(ALIGNOF); }                    // GCC
    1911         YY_BREAK
    1912 case 13:
     1924{ KEYWORD_RETURN(ASM); }                                // GCC
     1925        YY_BREAK
     1926case 16:
    19131927YY_RULE_SETUP
    19141928#line 182 "lex.ll"
    1915 { KEYWORD_RETURN(ALIGNOF); }                    // GCC
    1916         YY_BREAK
    1917 case 14:
     1929{ KEYWORD_RETURN(ASM); }                                // GCC
     1930        YY_BREAK
     1931case 17:
    19181932YY_RULE_SETUP
    19191933#line 183 "lex.ll"
    1920 { KEYWORD_RETURN(ASM); }
    1921         YY_BREAK
    1922 case 15:
     1934{ KEYWORD_RETURN(AT); }                                 // CFA
     1935        YY_BREAK
     1936case 18:
    19231937YY_RULE_SETUP
    19241938#line 184 "lex.ll"
    1925 { KEYWORD_RETURN(ASM); }                                // GCC
    1926         YY_BREAK
    1927 case 16:
     1939{ KEYWORD_RETURN(ATOMIC); }                             // C11
     1940        YY_BREAK
     1941case 19:
    19281942YY_RULE_SETUP
    19291943#line 185 "lex.ll"
    1930 { KEYWORD_RETURN(ASM); }                                // GCC
    1931         YY_BREAK
    1932 case 17:
     1944{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1945        YY_BREAK
     1946case 20:
    19331947YY_RULE_SETUP
    19341948#line 186 "lex.ll"
    1935 { KEYWORD_RETURN(AT); }                                 // CFA
    1936         YY_BREAK
    1937 case 18:
     1949{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1950        YY_BREAK
     1951case 21:
    19381952YY_RULE_SETUP
    19391953#line 187 "lex.ll"
    1940 { KEYWORD_RETURN(ATOMIC); }                             // C11
    1941         YY_BREAK
    1942 case 19:
     1954{ KEYWORD_RETURN(AUTO); }
     1955        YY_BREAK
     1956case 22:
    19431957YY_RULE_SETUP
    19441958#line 188 "lex.ll"
    1945 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    1946         YY_BREAK
    1947 case 20:
     1959{ KEYWORD_RETURN(BOOL); }                               // C99
     1960        YY_BREAK
     1961case 23:
    19481962YY_RULE_SETUP
    19491963#line 189 "lex.ll"
    1950 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    1951         YY_BREAK
    1952 case 21:
     1964{ KEYWORD_RETURN(BREAK); }
     1965        YY_BREAK
     1966case 24:
    19531967YY_RULE_SETUP
    19541968#line 190 "lex.ll"
    1955 { KEYWORD_RETURN(AUTO); }
    1956         YY_BREAK
    1957 case 22:
     1969{ KEYWORD_RETURN(CASE); }
     1970        YY_BREAK
     1971case 25:
    19581972YY_RULE_SETUP
    19591973#line 191 "lex.ll"
    1960 { KEYWORD_RETURN(BOOL); }                               // C99
    1961         YY_BREAK
    1962 case 23:
     1974{ KEYWORD_RETURN(CATCH); }                              // CFA
     1975        YY_BREAK
     1976case 26:
    19631977YY_RULE_SETUP
    19641978#line 192 "lex.ll"
    1965 { KEYWORD_RETURN(BREAK); }
    1966         YY_BREAK
    1967 case 24:
     1979{ KEYWORD_RETURN(CATCHRESUME); }                // CFA
     1980        YY_BREAK
     1981case 27:
    19681982YY_RULE_SETUP
    19691983#line 193 "lex.ll"
    1970 { KEYWORD_RETURN(CASE); }
    1971         YY_BREAK
    1972 case 25:
     1984{ KEYWORD_RETURN(CHAR); }
     1985        YY_BREAK
     1986case 28:
    19731987YY_RULE_SETUP
    19741988#line 194 "lex.ll"
    1975 { KEYWORD_RETURN(CATCH); }                              // CFA
    1976         YY_BREAK
    1977 case 26:
     1989{ KEYWORD_RETURN(CHOOSE); }                             // CFA
     1990        YY_BREAK
     1991case 29:
    19781992YY_RULE_SETUP
    19791993#line 195 "lex.ll"
    1980 { KEYWORD_RETURN(CATCHRESUME); }                // CFA
    1981         YY_BREAK
    1982 case 27:
     1994{ KEYWORD_RETURN(COMPLEX); }                    // C99
     1995        YY_BREAK
     1996case 30:
    19831997YY_RULE_SETUP
    19841998#line 196 "lex.ll"
    1985 { KEYWORD_RETURN(CHAR); }
    1986         YY_BREAK
    1987 case 28:
     1999{ KEYWORD_RETURN(COMPLEX); }                    // GCC
     2000        YY_BREAK
     2001case 31:
    19882002YY_RULE_SETUP
    19892003#line 197 "lex.ll"
    1990 { KEYWORD_RETURN(CHOOSE); }                             // CFA
    1991         YY_BREAK
    1992 case 29:
     2004{ KEYWORD_RETURN(COMPLEX); }                    // GCC
     2005        YY_BREAK
     2006case 32:
    19932007YY_RULE_SETUP
    19942008#line 198 "lex.ll"
    1995 { KEYWORD_RETURN(COMPLEX); }                    // C99
    1996         YY_BREAK
    1997 case 30:
     2009{ KEYWORD_RETURN(CONST); }
     2010        YY_BREAK
     2011case 33:
    19982012YY_RULE_SETUP
    19992013#line 199 "lex.ll"
    2000 { KEYWORD_RETURN(COMPLEX); }                    // GCC
    2001         YY_BREAK
    2002 case 31:
     2014{ KEYWORD_RETURN(CONST); }                              // GCC
     2015        YY_BREAK
     2016case 34:
    20032017YY_RULE_SETUP
    20042018#line 200 "lex.ll"
    2005 { KEYWORD_RETURN(COMPLEX); }                    // GCC
    2006         YY_BREAK
    2007 case 32:
     2019{ KEYWORD_RETURN(CONST); }                              // GCC
     2020        YY_BREAK
     2021case 35:
    20082022YY_RULE_SETUP
    20092023#line 201 "lex.ll"
    2010 { KEYWORD_RETURN(CONST); }
    2011         YY_BREAK
    2012 case 33:
     2024{ KEYWORD_RETURN(CONTINUE); }
     2025        YY_BREAK
     2026case 36:
    20132027YY_RULE_SETUP
    20142028#line 202 "lex.ll"
    2015 { KEYWORD_RETURN(CONST); }                              // GCC
    2016         YY_BREAK
    2017 case 34:
     2029{ KEYWORD_RETURN(DEFAULT); }
     2030        YY_BREAK
     2031case 37:
    20182032YY_RULE_SETUP
    20192033#line 203 "lex.ll"
    2020 { KEYWORD_RETURN(CONST); }                              // GCC
    2021         YY_BREAK
    2022 case 35:
     2034{ KEYWORD_RETURN(DISABLE); }                    // CFA
     2035        YY_BREAK
     2036case 38:
    20232037YY_RULE_SETUP
    20242038#line 204 "lex.ll"
    2025 { KEYWORD_RETURN(CONTINUE); }
    2026         YY_BREAK
    2027 case 36:
     2039{ KEYWORD_RETURN(DO); }
     2040        YY_BREAK
     2041case 39:
    20282042YY_RULE_SETUP
    20292043#line 205 "lex.ll"
    2030 { KEYWORD_RETURN(DEFAULT); }
    2031         YY_BREAK
    2032 case 37:
     2044{ KEYWORD_RETURN(DOUBLE); }
     2045        YY_BREAK
     2046case 40:
    20332047YY_RULE_SETUP
    20342048#line 206 "lex.ll"
    2035 { KEYWORD_RETURN(DISABLE); }                    // CFA
    2036         YY_BREAK
    2037 case 38:
     2049{ KEYWORD_RETURN(DTYPE); }                              // CFA
     2050        YY_BREAK
     2051case 41:
    20382052YY_RULE_SETUP
    20392053#line 207 "lex.ll"
    2040 { KEYWORD_RETURN(DO); }
    2041         YY_BREAK
    2042 case 39:
     2054{ KEYWORD_RETURN(ELSE); }
     2055        YY_BREAK
     2056case 42:
    20432057YY_RULE_SETUP
    20442058#line 208 "lex.ll"
    2045 { KEYWORD_RETURN(DOUBLE); }
    2046         YY_BREAK
    2047 case 40:
     2059{ KEYWORD_RETURN(ENABLE); }                             // CFA
     2060        YY_BREAK
     2061case 43:
    20482062YY_RULE_SETUP
    20492063#line 209 "lex.ll"
    2050 { KEYWORD_RETURN(DTYPE); }                              // CFA
    2051         YY_BREAK
    2052 case 41:
     2064{ KEYWORD_RETURN(ENUM); }
     2065        YY_BREAK
     2066case 44:
    20532067YY_RULE_SETUP
    20542068#line 210 "lex.ll"
    2055 { KEYWORD_RETURN(ELSE); }
    2056         YY_BREAK
    2057 case 42:
     2069{ KEYWORD_RETURN(EXTENSION); }                  // GCC
     2070        YY_BREAK
     2071case 45:
    20582072YY_RULE_SETUP
    20592073#line 211 "lex.ll"
    2060 { KEYWORD_RETURN(ENABLE); }                             // CFA
    2061         YY_BREAK
    2062 case 43:
     2074{ KEYWORD_RETURN(EXTERN); }
     2075        YY_BREAK
     2076case 46:
    20632077YY_RULE_SETUP
    20642078#line 212 "lex.ll"
    2065 { KEYWORD_RETURN(ENUM); }
    2066         YY_BREAK
    2067 case 44:
     2079{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
     2080        YY_BREAK
     2081case 47:
    20682082YY_RULE_SETUP
    20692083#line 213 "lex.ll"
    2070 { KEYWORD_RETURN(EXTENSION); }                  // GCC
    2071         YY_BREAK
    2072 case 45:
     2084{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
     2085        YY_BREAK
     2086case 48:
    20732087YY_RULE_SETUP
    20742088#line 214 "lex.ll"
    2075 { KEYWORD_RETURN(EXTERN); }
    2076         YY_BREAK
    2077 case 46:
     2089{ KEYWORD_RETURN(FINALLY); }                    // CFA
     2090        YY_BREAK
     2091case 49:
    20782092YY_RULE_SETUP
    20792093#line 215 "lex.ll"
    2080 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    2081         YY_BREAK
    2082 case 47:
     2094{ KEYWORD_RETURN(FLOAT); }
     2095        YY_BREAK
     2096case 50:
    20832097YY_RULE_SETUP
    20842098#line 216 "lex.ll"
    2085 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
    2086         YY_BREAK
    2087 case 48:
     2099{ KEYWORD_RETURN(FLOAT); }                              // GCC
     2100        YY_BREAK
     2101case 51:
    20882102YY_RULE_SETUP
    20892103#line 217 "lex.ll"
    2090 { KEYWORD_RETURN(FINALLY); }                    // CFA
    2091         YY_BREAK
    2092 case 49:
     2104{ KEYWORD_RETURN(FOR); }
     2105        YY_BREAK
     2106case 52:
    20932107YY_RULE_SETUP
    20942108#line 218 "lex.ll"
    2095 { KEYWORD_RETURN(FLOAT); }
    2096         YY_BREAK
    2097 case 50:
     2109{ KEYWORD_RETURN(FORALL); }                             // CFA
     2110        YY_BREAK
     2111case 53:
    20982112YY_RULE_SETUP
    20992113#line 219 "lex.ll"
    2100 { KEYWORD_RETURN(FLOAT); }                              // GCC
    2101         YY_BREAK
    2102 case 51:
     2114{ KEYWORD_RETURN(FORTRAN); }
     2115        YY_BREAK
     2116case 54:
    21032117YY_RULE_SETUP
    21042118#line 220 "lex.ll"
    2105 { KEYWORD_RETURN(FOR); }
    2106         YY_BREAK
    2107 case 52:
     2119{ KEYWORD_RETURN(FTYPE); }                              // CFA
     2120        YY_BREAK
     2121case 55:
    21082122YY_RULE_SETUP
    21092123#line 221 "lex.ll"
    2110 { KEYWORD_RETURN(FORALL); }                             // CFA
    2111         YY_BREAK
    2112 case 53:
     2124{ KEYWORD_RETURN(GENERIC); }                    // C11
     2125        YY_BREAK
     2126case 56:
    21132127YY_RULE_SETUP
    21142128#line 222 "lex.ll"
    2115 { KEYWORD_RETURN(FORTRAN); }
    2116         YY_BREAK
    2117 case 54:
     2129{ KEYWORD_RETURN(GOTO); }
     2130        YY_BREAK
     2131case 57:
    21182132YY_RULE_SETUP
    21192133#line 223 "lex.ll"
    2120 { KEYWORD_RETURN(FTYPE); }                              // CFA
    2121         YY_BREAK
    2122 case 55:
     2134{ KEYWORD_RETURN(IF); }
     2135        YY_BREAK
     2136case 58:
    21232137YY_RULE_SETUP
    21242138#line 224 "lex.ll"
    2125 { KEYWORD_RETURN(GENERIC); }                    // C11
    2126         YY_BREAK
    2127 case 56:
     2139{ KEYWORD_RETURN(IMAGINARY); }                  // C99
     2140        YY_BREAK
     2141case 59:
    21282142YY_RULE_SETUP
    21292143#line 225 "lex.ll"
    2130 { KEYWORD_RETURN(GOTO); }
    2131         YY_BREAK
    2132 case 57:
     2144{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2145        YY_BREAK
     2146case 60:
    21332147YY_RULE_SETUP
    21342148#line 226 "lex.ll"
    2135 { KEYWORD_RETURN(IF); }
    2136         YY_BREAK
    2137 case 58:
     2149{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2150        YY_BREAK
     2151case 61:
    21382152YY_RULE_SETUP
    21392153#line 227 "lex.ll"
    2140 { KEYWORD_RETURN(IMAGINARY); }                  // C99
    2141         YY_BREAK
    2142 case 59:
     2154{ KEYWORD_RETURN(INLINE); }                             // C99
     2155        YY_BREAK
     2156case 62:
    21432157YY_RULE_SETUP
    21442158#line 228 "lex.ll"
    2145 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
    2146         YY_BREAK
    2147 case 60:
     2159{ KEYWORD_RETURN(INLINE); }                             // GCC
     2160        YY_BREAK
     2161case 63:
    21482162YY_RULE_SETUP
    21492163#line 229 "lex.ll"
    2150 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
    2151         YY_BREAK
    2152 case 61:
     2164{ KEYWORD_RETURN(INLINE); }                             // GCC
     2165        YY_BREAK
     2166case 64:
    21532167YY_RULE_SETUP
    21542168#line 230 "lex.ll"
    2155 { KEYWORD_RETURN(INLINE); }                             // C99
    2156         YY_BREAK
    2157 case 62:
     2169{ KEYWORD_RETURN(INT); }
     2170        YY_BREAK
     2171case 65:
    21582172YY_RULE_SETUP
    21592173#line 231 "lex.ll"
    2160 { KEYWORD_RETURN(INLINE); }                             // GCC
    2161         YY_BREAK
    2162 case 63:
     2174{ KEYWORD_RETURN(INT); }                                // GCC
     2175        YY_BREAK
     2176case 66:
    21632177YY_RULE_SETUP
    21642178#line 232 "lex.ll"
    2165 { KEYWORD_RETURN(INLINE); }                             // GCC
    2166         YY_BREAK
    2167 case 64:
     2179{ KEYWORD_RETURN(LABEL); }                              // GCC
     2180        YY_BREAK
     2181case 67:
    21682182YY_RULE_SETUP
    21692183#line 233 "lex.ll"
    2170 { KEYWORD_RETURN(INT); }
    2171         YY_BREAK
    2172 case 65:
     2184{ KEYWORD_RETURN(LONG); }
     2185        YY_BREAK
     2186case 68:
    21732187YY_RULE_SETUP
    21742188#line 234 "lex.ll"
    2175 { KEYWORD_RETURN(INT); }                                // GCC
    2176         YY_BREAK
    2177 case 66:
     2189{ KEYWORD_RETURN(LVALUE); }                             // CFA
     2190        YY_BREAK
     2191case 69:
    21782192YY_RULE_SETUP
    21792193#line 235 "lex.ll"
    2180 { KEYWORD_RETURN(LABEL); }                              // GCC
    2181         YY_BREAK
    2182 case 67:
     2194{ KEYWORD_RETURN(NORETURN); }                   // C11
     2195        YY_BREAK
     2196case 70:
    21832197YY_RULE_SETUP
    21842198#line 236 "lex.ll"
    2185 { KEYWORD_RETURN(LONG); }
    2186         YY_BREAK
    2187 case 68:
     2199{ KEYWORD_RETURN(OFFSETOF); }           // GCC
     2200        YY_BREAK
     2201case 71:
    21882202YY_RULE_SETUP
    21892203#line 237 "lex.ll"
    2190 { KEYWORD_RETURN(LVALUE); }                             // CFA
    2191         YY_BREAK
    2192 case 69:
     2204{ KEYWORD_RETURN(OTYPE); }                              // CFA
     2205        YY_BREAK
     2206case 72:
    21932207YY_RULE_SETUP
    21942208#line 238 "lex.ll"
    2195 { KEYWORD_RETURN(NORETURN); }                   // C11
    2196         YY_BREAK
    2197 case 70:
     2209{ KEYWORD_RETURN(REGISTER); }
     2210        YY_BREAK
     2211case 73:
    21982212YY_RULE_SETUP
    21992213#line 239 "lex.ll"
    2200 { KEYWORD_RETURN(OFFSETOF); }           // GCC
    2201         YY_BREAK
    2202 case 71:
     2214{ KEYWORD_RETURN(RESTRICT); }                   // C99
     2215        YY_BREAK
     2216case 74:
    22032217YY_RULE_SETUP
    22042218#line 240 "lex.ll"
    2205 { KEYWORD_RETURN(OTYPE); }                              // CFA
    2206         YY_BREAK
    2207 case 72:
     2219{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2220        YY_BREAK
     2221case 75:
    22082222YY_RULE_SETUP
    22092223#line 241 "lex.ll"
    2210 { KEYWORD_RETURN(REGISTER); }
    2211         YY_BREAK
    2212 case 73:
     2224{ KEYWORD_RETURN(RESTRICT); }                   // GCC
     2225        YY_BREAK
     2226case 76:
    22132227YY_RULE_SETUP
    22142228#line 242 "lex.ll"
    2215 { KEYWORD_RETURN(RESTRICT); }                   // C99
    2216         YY_BREAK
    2217 case 74:
     2229{ KEYWORD_RETURN(RETURN); }
     2230        YY_BREAK
     2231case 77:
    22182232YY_RULE_SETUP
    22192233#line 243 "lex.ll"
    2220 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    2221         YY_BREAK
    2222 case 75:
     2234{ KEYWORD_RETURN(SHORT); }
     2235        YY_BREAK
     2236case 78:
    22232237YY_RULE_SETUP
    22242238#line 244 "lex.ll"
    2225 { KEYWORD_RETURN(RESTRICT); }                   // GCC
    2226         YY_BREAK
    2227 case 76:
     2239{ KEYWORD_RETURN(SIGNED); }
     2240        YY_BREAK
     2241case 79:
    22282242YY_RULE_SETUP
    22292243#line 245 "lex.ll"
    2230 { KEYWORD_RETURN(RETURN); }
    2231         YY_BREAK
    2232 case 77:
     2244{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2245        YY_BREAK
     2246case 80:
    22332247YY_RULE_SETUP
    22342248#line 246 "lex.ll"
    2235 { KEYWORD_RETURN(SHORT); }
    2236         YY_BREAK
    2237 case 78:
     2249{ KEYWORD_RETURN(SIGNED); }                             // GCC
     2250        YY_BREAK
     2251case 81:
    22382252YY_RULE_SETUP
    22392253#line 247 "lex.ll"
    2240 { KEYWORD_RETURN(SIGNED); }
    2241         YY_BREAK
    2242 case 79:
     2254{ KEYWORD_RETURN(SIZEOF); }
     2255        YY_BREAK
     2256case 82:
    22432257YY_RULE_SETUP
    22442258#line 248 "lex.ll"
    2245 { KEYWORD_RETURN(SIGNED); }                             // GCC
    2246         YY_BREAK
    2247 case 80:
     2259{ KEYWORD_RETURN(STATIC); }
     2260        YY_BREAK
     2261case 83:
    22482262YY_RULE_SETUP
    22492263#line 249 "lex.ll"
    2250 { KEYWORD_RETURN(SIGNED); }                             // GCC
    2251         YY_BREAK
    2252 case 81:
     2264{ KEYWORD_RETURN(STATICASSERT); }               // C11
     2265        YY_BREAK
     2266case 84:
    22532267YY_RULE_SETUP
    22542268#line 250 "lex.ll"
    2255 { KEYWORD_RETURN(SIZEOF); }
    2256         YY_BREAK
    2257 case 82:
     2269{ KEYWORD_RETURN(STRUCT); }
     2270        YY_BREAK
     2271case 85:
    22582272YY_RULE_SETUP
    22592273#line 251 "lex.ll"
    2260 { KEYWORD_RETURN(STATIC); }
    2261         YY_BREAK
    2262 case 83:
     2274{ KEYWORD_RETURN(SWITCH); }
     2275        YY_BREAK
     2276case 86:
    22632277YY_RULE_SETUP
    22642278#line 252 "lex.ll"
    2265 { KEYWORD_RETURN(STATICASSERT); }               // C11
    2266         YY_BREAK
    2267 case 84:
     2279{ KEYWORD_RETURN(THREADLOCAL); }                // C11
     2280        YY_BREAK
     2281case 87:
    22682282YY_RULE_SETUP
    22692283#line 253 "lex.ll"
    2270 { KEYWORD_RETURN(STRUCT); }
    2271         YY_BREAK
    2272 case 85:
     2284{ KEYWORD_RETURN(THROW); }                              // CFA
     2285        YY_BREAK
     2286case 88:
    22732287YY_RULE_SETUP
    22742288#line 254 "lex.ll"
    2275 { KEYWORD_RETURN(SWITCH); }
    2276         YY_BREAK
    2277 case 86:
     2289{ KEYWORD_RETURN(THROWRESUME); }                // CFA
     2290        YY_BREAK
     2291case 89:
    22782292YY_RULE_SETUP
    22792293#line 255 "lex.ll"
    2280 { KEYWORD_RETURN(THREADLOCAL); }                // C11
    2281         YY_BREAK
    2282 case 87:
     2294{ KEYWORD_RETURN(TRAIT); }                              // CFA
     2295        YY_BREAK
     2296case 90:
    22832297YY_RULE_SETUP
    22842298#line 256 "lex.ll"
    2285 { KEYWORD_RETURN(THROW); }                              // CFA
    2286         YY_BREAK
    2287 case 88:
     2299{ KEYWORD_RETURN(TRY); }                                // CFA
     2300        YY_BREAK
     2301case 91:
    22882302YY_RULE_SETUP
    22892303#line 257 "lex.ll"
    2290 { KEYWORD_RETURN(THROWRESUME); }                // CFA
    2291         YY_BREAK
    2292 case 89:
     2304{ KEYWORD_RETURN(TYPEDEF); }
     2305        YY_BREAK
     2306case 92:
    22932307YY_RULE_SETUP
    22942308#line 258 "lex.ll"
    2295 { KEYWORD_RETURN(TRAIT); }                              // CFA
    2296         YY_BREAK
    2297 case 90:
     2309{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2310        YY_BREAK
     2311case 93:
    22982312YY_RULE_SETUP
    22992313#line 259 "lex.ll"
    2300 { KEYWORD_RETURN(TRY); }                                // CFA
    2301         YY_BREAK
    2302 case 91:
     2314{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2315        YY_BREAK
     2316case 94:
    23032317YY_RULE_SETUP
    23042318#line 260 "lex.ll"
    2305 { KEYWORD_RETURN(TYPEDEF); }
    2306         YY_BREAK
    2307 case 92:
     2319{ KEYWORD_RETURN(TYPEOF); }                             // GCC
     2320        YY_BREAK
     2321case 95:
    23082322YY_RULE_SETUP
    23092323#line 261 "lex.ll"
    2310 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2311         YY_BREAK
    2312 case 93:
     2324{ KEYWORD_RETURN(UNION); }
     2325        YY_BREAK
     2326case 96:
    23132327YY_RULE_SETUP
    23142328#line 262 "lex.ll"
    2315 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2316         YY_BREAK
    2317 case 94:
     2329{ KEYWORD_RETURN(UNSIGNED); }
     2330        YY_BREAK
     2331case 97:
    23182332YY_RULE_SETUP
    23192333#line 263 "lex.ll"
    2320 { KEYWORD_RETURN(TYPEOF); }                             // GCC
    2321         YY_BREAK
    2322 case 95:
     2334{ KEYWORD_RETURN(VALIST); }                     // GCC
     2335        YY_BREAK
     2336case 98:
    23232337YY_RULE_SETUP
    23242338#line 264 "lex.ll"
    2325 { KEYWORD_RETURN(UNION); }
    2326         YY_BREAK
    2327 case 96:
     2339{ KEYWORD_RETURN(VOID); }
     2340        YY_BREAK
     2341case 99:
    23282342YY_RULE_SETUP
    23292343#line 265 "lex.ll"
    2330 { KEYWORD_RETURN(UNSIGNED); }
    2331         YY_BREAK
    2332 case 97:
     2344{ KEYWORD_RETURN(VOLATILE); }
     2345        YY_BREAK
     2346case 100:
    23332347YY_RULE_SETUP
    23342348#line 266 "lex.ll"
    2335 { KEYWORD_RETURN(VALIST); }                     // GCC
    2336         YY_BREAK
    2337 case 98:
     2349{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2350        YY_BREAK
     2351case 101:
    23382352YY_RULE_SETUP
    23392353#line 267 "lex.ll"
    2340 { KEYWORD_RETURN(VOID); }
    2341         YY_BREAK
    2342 case 99:
     2354{ KEYWORD_RETURN(VOLATILE); }                   // GCC
     2355        YY_BREAK
     2356case 102:
    23432357YY_RULE_SETUP
    23442358#line 268 "lex.ll"
    2345 { KEYWORD_RETURN(VOLATILE); }
    2346         YY_BREAK
    2347 case 100:
    2348 YY_RULE_SETUP
    2349 #line 269 "lex.ll"
    2350 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    2351         YY_BREAK
    2352 case 101:
    2353 YY_RULE_SETUP
    2354 #line 270 "lex.ll"
    2355 { KEYWORD_RETURN(VOLATILE); }                   // GCC
    2356         YY_BREAK
    2357 case 102:
    2358 YY_RULE_SETUP
    2359 #line 271 "lex.ll"
    23602359{ KEYWORD_RETURN(WHILE); }
    23612360        YY_BREAK
     
    23632362case 103:
    23642363YY_RULE_SETUP
     2364#line 271 "lex.ll"
     2365{ IDENTIFIER_RETURN(); }
     2366        YY_BREAK
     2367case 104:
     2368YY_RULE_SETUP
     2369#line 272 "lex.ll"
     2370{ ATTRIBUTE_RETURN(); }
     2371        YY_BREAK
     2372case 105:
     2373YY_RULE_SETUP
     2374#line 273 "lex.ll"
     2375{ BEGIN BKQUOTE; }
     2376        YY_BREAK
     2377case 106:
     2378YY_RULE_SETUP
    23652379#line 274 "lex.ll"
    23662380{ IDENTIFIER_RETURN(); }
    23672381        YY_BREAK
    2368 case 104:
     2382case 107:
    23692383YY_RULE_SETUP
    23702384#line 275 "lex.ll"
    2371 { ATTRIBUTE_RETURN(); }
    2372         YY_BREAK
    2373 case 105:
    2374 YY_RULE_SETUP
    2375 #line 276 "lex.ll"
    2376 { BEGIN BKQUOTE; }
    2377         YY_BREAK
    2378 case 106:
    2379 YY_RULE_SETUP
    2380 #line 277 "lex.ll"
    2381 { IDENTIFIER_RETURN(); }
    2382         YY_BREAK
    2383 case 107:
    2384 YY_RULE_SETUP
    2385 #line 278 "lex.ll"
    23862385{ BEGIN 0; }
    23872386        YY_BREAK
     
    23892388case 108:
    23902389YY_RULE_SETUP
     2390#line 278 "lex.ll"
     2391{ NUMERIC_RETURN(ZERO); }                               // CFA
     2392        YY_BREAK
     2393case 109:
     2394YY_RULE_SETUP
     2395#line 279 "lex.ll"
     2396{ NUMERIC_RETURN(ONE); }                                // CFA
     2397        YY_BREAK
     2398case 110:
     2399YY_RULE_SETUP
     2400#line 280 "lex.ll"
     2401{ NUMERIC_RETURN(INTEGERconstant); }
     2402        YY_BREAK
     2403case 111:
     2404YY_RULE_SETUP
    23912405#line 281 "lex.ll"
    2392 { NUMERIC_RETURN(ZERO); }                               // CFA
    2393         YY_BREAK
    2394 case 109:
     2406{ NUMERIC_RETURN(INTEGERconstant); }
     2407        YY_BREAK
     2408case 112:
    23952409YY_RULE_SETUP
    23962410#line 282 "lex.ll"
    2397 { NUMERIC_RETURN(ONE); }                                // CFA
    2398         YY_BREAK
    2399 case 110:
     2411{ NUMERIC_RETURN(INTEGERconstant); }
     2412        YY_BREAK
     2413case 113:
    24002414YY_RULE_SETUP
    24012415#line 283 "lex.ll"
    2402 { NUMERIC_RETURN(INTEGERconstant); }
    2403         YY_BREAK
    2404 case 111:
     2416{ NUMERIC_RETURN(FLOATINGconstant); }
     2417        YY_BREAK
     2418case 114:
    24052419YY_RULE_SETUP
    24062420#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"
    24222421{ NUMERIC_RETURN(FLOATINGconstant); }
    24232422        YY_BREAK
     
    24252424case 115:
    24262425YY_RULE_SETUP
    2427 #line 290 "lex.ll"
     2426#line 287 "lex.ll"
    24282427{ BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24292428        YY_BREAK
    24302429case 116:
    24312430YY_RULE_SETUP
    2432 #line 291 "lex.ll"
     2431#line 288 "lex.ll"
    24332432{ strtext->append( yytext, yyleng ); }
    24342433        YY_BREAK
     
    24362435/* rule 117 can match eol */
    24372436YY_RULE_SETUP
    2438 #line 292 "lex.ll"
     2437#line 289 "lex.ll"
    24392438{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
    24402439        YY_BREAK
     
    24432442case 118:
    24442443YY_RULE_SETUP
    2445 #line 296 "lex.ll"
     2444#line 293 "lex.ll"
    24462445{ BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24472446        YY_BREAK
    24482447case 119:
    24492448YY_RULE_SETUP
    2450 #line 297 "lex.ll"
     2449#line 294 "lex.ll"
    24512450{ strtext->append( yytext, yyleng ); }
    24522451        YY_BREAK
     
    24542453/* rule 120 can match eol */
    24552454YY_RULE_SETUP
    2456 #line 298 "lex.ll"
     2455#line 295 "lex.ll"
    24572456{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
    24582457        YY_BREAK
     
    24612460case 121:
    24622461YY_RULE_SETUP
    2463 #line 302 "lex.ll"
     2462#line 299 "lex.ll"
    24642463{ rm_underscore(); strtext->append( yytext, yyleng ); }
    24652464        YY_BREAK
     
    24672466/* rule 122 can match eol */
    24682467YY_RULE_SETUP
    2469 #line 303 "lex.ll"
     2468#line 300 "lex.ll"
    24702469{}                                              // continuation (ALSO HANDLED BY CPP)
    24712470        YY_BREAK
    24722471case 123:
    24732472YY_RULE_SETUP
    2474 #line 304 "lex.ll"
     2473#line 301 "lex.ll"
    24752474{ strtext->append( yytext, yyleng ); } // unknown escape character
    24762475        YY_BREAK
     
    24782477case 124:
    24792478YY_RULE_SETUP
     2479#line 304 "lex.ll"
     2480{ ASCIIOP_RETURN(); }
     2481        YY_BREAK
     2482case 125:
     2483YY_RULE_SETUP
     2484#line 305 "lex.ll"
     2485{ ASCIIOP_RETURN(); }
     2486        YY_BREAK
     2487case 126:
     2488YY_RULE_SETUP
     2489#line 306 "lex.ll"
     2490{ ASCIIOP_RETURN(); }
     2491        YY_BREAK
     2492case 127:
     2493YY_RULE_SETUP
    24802494#line 307 "lex.ll"
    24812495{ ASCIIOP_RETURN(); }
    24822496        YY_BREAK
    2483 case 125:
     2497case 128:
    24842498YY_RULE_SETUP
    24852499#line 308 "lex.ll"
    24862500{ ASCIIOP_RETURN(); }
    24872501        YY_BREAK
    2488 case 126:
     2502case 129:
    24892503YY_RULE_SETUP
    24902504#line 309 "lex.ll"
    24912505{ ASCIIOP_RETURN(); }
    24922506        YY_BREAK
    2493 case 127:
     2507case 130:
    24942508YY_RULE_SETUP
    24952509#line 310 "lex.ll"
    2496 { ASCIIOP_RETURN(); }
    2497         YY_BREAK
    2498 case 128:
     2510{ ASCIIOP_RETURN(); }                                   // also operator
     2511        YY_BREAK
     2512case 131:
    24992513YY_RULE_SETUP
    25002514#line 311 "lex.ll"
    25012515{ ASCIIOP_RETURN(); }
    25022516        YY_BREAK
    2503 case 129:
     2517case 132:
    25042518YY_RULE_SETUP
    25052519#line 312 "lex.ll"
    25062520{ ASCIIOP_RETURN(); }
    25072521        YY_BREAK
    2508 case 130:
     2522case 133:
    25092523YY_RULE_SETUP
    25102524#line 313 "lex.ll"
    25112525{ ASCIIOP_RETURN(); }                                   // also operator
    25122526        YY_BREAK
    2513 case 131:
     2527case 134:
    25142528YY_RULE_SETUP
    25152529#line 314 "lex.ll"
    2516 { ASCIIOP_RETURN(); }
    2517         YY_BREAK
    2518 case 132:
    2519 YY_RULE_SETUP
    2520 #line 315 "lex.ll"
    2521 { ASCIIOP_RETURN(); }
    2522         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"
    25312530{ NAMEDOP_RETURN(ELLIPSIS); }
    25322531        YY_BREAK
     
    25342533case 135:
    25352534YY_RULE_SETUP
     2535#line 317 "lex.ll"
     2536{ RETURN_VAL('['); }
     2537        YY_BREAK
     2538case 136:
     2539YY_RULE_SETUP
     2540#line 318 "lex.ll"
     2541{ RETURN_VAL(']'); }
     2542        YY_BREAK
     2543case 137:
     2544YY_RULE_SETUP
     2545#line 319 "lex.ll"
     2546{ RETURN_VAL('{'); }
     2547        YY_BREAK
     2548case 138:
     2549YY_RULE_SETUP
    25362550#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"
    25522551{ RETURN_VAL('}'); }
    25532552        YY_BREAK
     
    25552554case 139:
    25562555YY_RULE_SETUP
     2556#line 323 "lex.ll"
     2557{ ASCIIOP_RETURN(); }
     2558        YY_BREAK
     2559case 140:
     2560YY_RULE_SETUP
     2561#line 324 "lex.ll"
     2562{ ASCIIOP_RETURN(); }
     2563        YY_BREAK
     2564case 141:
     2565YY_RULE_SETUP
     2566#line 325 "lex.ll"
     2567{ ASCIIOP_RETURN(); }
     2568        YY_BREAK
     2569case 142:
     2570YY_RULE_SETUP
    25572571#line 326 "lex.ll"
    25582572{ ASCIIOP_RETURN(); }
    25592573        YY_BREAK
    2560 case 140:
     2574case 143:
    25612575YY_RULE_SETUP
    25622576#line 327 "lex.ll"
    25632577{ ASCIIOP_RETURN(); }
    25642578        YY_BREAK
    2565 case 141:
     2579case 144:
    25662580YY_RULE_SETUP
    25672581#line 328 "lex.ll"
    25682582{ ASCIIOP_RETURN(); }
    25692583        YY_BREAK
    2570 case 142:
     2584case 145:
    25712585YY_RULE_SETUP
    25722586#line 329 "lex.ll"
    25732587{ ASCIIOP_RETURN(); }
    25742588        YY_BREAK
    2575 case 143:
     2589case 146:
    25762590YY_RULE_SETUP
    25772591#line 330 "lex.ll"
    25782592{ ASCIIOP_RETURN(); }
    25792593        YY_BREAK
    2580 case 144:
     2594case 147:
    25812595YY_RULE_SETUP
    25822596#line 331 "lex.ll"
    25832597{ ASCIIOP_RETURN(); }
    25842598        YY_BREAK
    2585 case 145:
     2599case 148:
    25862600YY_RULE_SETUP
    25872601#line 332 "lex.ll"
    25882602{ ASCIIOP_RETURN(); }
    25892603        YY_BREAK
    2590 case 146:
     2604case 149:
    25912605YY_RULE_SETUP
    25922606#line 333 "lex.ll"
    25932607{ ASCIIOP_RETURN(); }
    25942608        YY_BREAK
    2595 case 147:
     2609case 150:
    25962610YY_RULE_SETUP
    25972611#line 334 "lex.ll"
    25982612{ ASCIIOP_RETURN(); }
    25992613        YY_BREAK
    2600 case 148:
     2614case 151:
    26012615YY_RULE_SETUP
    26022616#line 335 "lex.ll"
    26032617{ ASCIIOP_RETURN(); }
    26042618        YY_BREAK
    2605 case 149:
     2619case 152:
    26062620YY_RULE_SETUP
    26072621#line 336 "lex.ll"
    26082622{ ASCIIOP_RETURN(); }
    26092623        YY_BREAK
    2610 case 150:
    2611 YY_RULE_SETUP
    2612 #line 337 "lex.ll"
    2613 { ASCIIOP_RETURN(); }
    2614         YY_BREAK
    2615 case 151:
     2624case 153:
    26162625YY_RULE_SETUP
    26172626#line 338 "lex.ll"
    2618 { ASCIIOP_RETURN(); }
    2619         YY_BREAK
    2620 case 152:
     2627{ NAMEDOP_RETURN(ICR); }
     2628        YY_BREAK
     2629case 154:
    26212630YY_RULE_SETUP
    26222631#line 339 "lex.ll"
    2623 { ASCIIOP_RETURN(); }
    2624         YY_BREAK
    2625 case 153:
     2632{ NAMEDOP_RETURN(DECR); }
     2633        YY_BREAK
     2634case 155:
     2635YY_RULE_SETUP
     2636#line 340 "lex.ll"
     2637{ NAMEDOP_RETURN(EQ); }
     2638        YY_BREAK
     2639case 156:
    26262640YY_RULE_SETUP
    26272641#line 341 "lex.ll"
    2628 { NAMEDOP_RETURN(ICR); }
    2629         YY_BREAK
    2630 case 154:
     2642{ NAMEDOP_RETURN(NE); }
     2643        YY_BREAK
     2644case 157:
    26312645YY_RULE_SETUP
    26322646#line 342 "lex.ll"
    2633 { NAMEDOP_RETURN(DECR); }
    2634         YY_BREAK
    2635 case 155:
     2647{ NAMEDOP_RETURN(LS); }
     2648        YY_BREAK
     2649case 158:
    26362650YY_RULE_SETUP
    26372651#line 343 "lex.ll"
    2638 { NAMEDOP_RETURN(EQ); }
    2639         YY_BREAK
    2640 case 156:
     2652{ NAMEDOP_RETURN(RS); }
     2653        YY_BREAK
     2654case 159:
    26412655YY_RULE_SETUP
    26422656#line 344 "lex.ll"
    2643 { NAMEDOP_RETURN(NE); }
    2644         YY_BREAK
    2645 case 157:
     2657{ NAMEDOP_RETURN(LE); }
     2658        YY_BREAK
     2659case 160:
    26462660YY_RULE_SETUP
    26472661#line 345 "lex.ll"
    2648 { NAMEDOP_RETURN(LS); }
    2649         YY_BREAK
    2650 case 158:
     2662{ NAMEDOP_RETURN(GE); }
     2663        YY_BREAK
     2664case 161:
    26512665YY_RULE_SETUP
    26522666#line 346 "lex.ll"
    2653 { NAMEDOP_RETURN(RS); }
    2654         YY_BREAK
    2655 case 159:
     2667{ NAMEDOP_RETURN(ANDAND); }
     2668        YY_BREAK
     2669case 162:
    26562670YY_RULE_SETUP
    26572671#line 347 "lex.ll"
    2658 { NAMEDOP_RETURN(LE); }
    2659         YY_BREAK
    2660 case 160:
     2672{ NAMEDOP_RETURN(OROR); }
     2673        YY_BREAK
     2674case 163:
    26612675YY_RULE_SETUP
    26622676#line 348 "lex.ll"
    2663 { NAMEDOP_RETURN(GE); }
    2664         YY_BREAK
    2665 case 161:
     2677{ NAMEDOP_RETURN(ARROW); }
     2678        YY_BREAK
     2679case 164:
    26662680YY_RULE_SETUP
    26672681#line 349 "lex.ll"
    2668 { NAMEDOP_RETURN(ANDAND); }
    2669         YY_BREAK
    2670 case 162:
     2682{ NAMEDOP_RETURN(PLUSassign); }
     2683        YY_BREAK
     2684case 165:
    26712685YY_RULE_SETUP
    26722686#line 350 "lex.ll"
    2673 { NAMEDOP_RETURN(OROR); }
    2674         YY_BREAK
    2675 case 163:
     2687{ NAMEDOP_RETURN(MINUSassign); }
     2688        YY_BREAK
     2689case 166:
    26762690YY_RULE_SETUP
    26772691#line 351 "lex.ll"
    2678 { NAMEDOP_RETURN(ARROW); }
    2679         YY_BREAK
    2680 case 164:
     2692{ NAMEDOP_RETURN(MULTassign); }
     2693        YY_BREAK
     2694case 167:
    26812695YY_RULE_SETUP
    26822696#line 352 "lex.ll"
    2683 { NAMEDOP_RETURN(PLUSassign); }
    2684         YY_BREAK
    2685 case 165:
     2697{ NAMEDOP_RETURN(DIVassign); }
     2698        YY_BREAK
     2699case 168:
    26862700YY_RULE_SETUP
    26872701#line 353 "lex.ll"
    2688 { NAMEDOP_RETURN(MINUSassign); }
    2689         YY_BREAK
    2690 case 166:
     2702{ NAMEDOP_RETURN(MODassign); }
     2703        YY_BREAK
     2704case 169:
    26912705YY_RULE_SETUP
    26922706#line 354 "lex.ll"
    2693 { NAMEDOP_RETURN(MULTassign); }
    2694         YY_BREAK
    2695 case 167:
     2707{ NAMEDOP_RETURN(ANDassign); }
     2708        YY_BREAK
     2709case 170:
    26962710YY_RULE_SETUP
    26972711#line 355 "lex.ll"
    2698 { NAMEDOP_RETURN(DIVassign); }
    2699         YY_BREAK
    2700 case 168:
     2712{ NAMEDOP_RETURN(ORassign); }
     2713        YY_BREAK
     2714case 171:
    27012715YY_RULE_SETUP
    27022716#line 356 "lex.ll"
    2703 { NAMEDOP_RETURN(MODassign); }
    2704         YY_BREAK
    2705 case 169:
     2717{ NAMEDOP_RETURN(ERassign); }
     2718        YY_BREAK
     2719case 172:
    27062720YY_RULE_SETUP
    27072721#line 357 "lex.ll"
    2708 { NAMEDOP_RETURN(ANDassign); }
    2709         YY_BREAK
    2710 case 170:
     2722{ NAMEDOP_RETURN(LSassign); }
     2723        YY_BREAK
     2724case 173:
    27112725YY_RULE_SETUP
    27122726#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:
     2727{ NAMEDOP_RETURN(RSassign); }
     2728        YY_BREAK
     2729case 174:
    27212730YY_RULE_SETUP
    27222731#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"
    27332732{ NAMEDOP_RETURN(ATassign); }                   // CFA
    27342733        YY_BREAK
     
    27362735case 175:
    27372736YY_RULE_SETUP
     2737#line 363 "lex.ll"
     2738{ IDENTIFIER_RETURN(); }                                // unary
     2739        YY_BREAK
     2740case 176:
     2741YY_RULE_SETUP
     2742#line 364 "lex.ll"
     2743{ IDENTIFIER_RETURN(); }
     2744        YY_BREAK
     2745case 177:
     2746YY_RULE_SETUP
     2747#line 365 "lex.ll"
     2748{ IDENTIFIER_RETURN(); }
     2749        YY_BREAK
     2750case 178:
     2751YY_RULE_SETUP
    27382752#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"
    27542753{ IDENTIFIER_RETURN(); }                // binary
    27552754        YY_BREAK
     
    27822781case 179:
    27832782YY_RULE_SETUP
    2784 #line 396 "lex.ll"
     2783#line 393 "lex.ll"
    27852784{
    27862785        // 1 or 2 character unary operator ?
     
    27972796case 180:
    27982797YY_RULE_SETUP
    2799 #line 408 "lex.ll"
     2798#line 405 "lex.ll"
    28002799{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    28012800        YY_BREAK
    28022801case 181:
    28032802YY_RULE_SETUP
    2804 #line 410 "lex.ll"
     2803#line 407 "lex.ll"
    28052804ECHO;
    28062805        YY_BREAK
    2807 #line 2808 "Parser/lex.cc"
     2806#line 2807 "Parser/lex.cc"
    28082807case YY_STATE_EOF(INITIAL):
    28092808case YY_STATE_EOF(COMMENT):
     
    37803779#define YYTABLES_NAME "yytables"
    37813780
    3782 #line 410 "lex.ll"
     3781#line 407 "lex.ll"
    37833782
    37843783
  • src/Parser/lex.ll

    rd1fbaa7 rfe7b281  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Wed Aug 24 13:27:04 2016
    13  * Update Count     : 487
     12 * Last Modified On : Tue Oct 18 22:19:37 2016
     13 * Update Count     : 488
    1414 */
    1515
     
    7171                                // identifier, GCC: $ in identifier
    7272identifier ([a-zA-Z_$]|{universal_char})([0-9a-zA-Z_$]|{universal_char})*
    73 
    74                                 // quoted identifier
    75 quoted_identifier "`"{identifier}"`"
    7673
    7774                                // attribute identifier, GCC: $ in identifier
  • src/Parser/parser.cc

    rd1fbaa7 rfe7b281  
    10271027     358,   360,   362,   367,   368,   374,   378,   380,   381,   382,
    10281028     384,   385,   387,   389,   391,   400,   401,   407,   408,   412,
    1029      413,   417,   421,   423,   425,   427,   432,   433,   437,   440,
    1030      442,   444,   449,   462,   464,   466,   468,   470,   472,   474,
    1031      476,   478,   480,   482,   489,   490,   496,   497,   498,   499,
    1032      503,   504,   506,   511,   512,   514,   516,   521,   522,   524,
    1033      529,   530,   532,   537,   538,   540,   542,   544,   549,   550,
    1034      552,   557,   558,   563,   564,   569,   570,   575,   576,   581,
    1035      582,   587,   588,   591,   593,   598,   603,   604,   606,   612,
    1036      613,   617,   618,   619,   620,   621,   622,   623,   624,   625,
    1037      626,   627,   628,   634,   636,   638,   640,   645,   646,   651,
    1038      652,   658,   659,   665,   666,   667,   668,   669,   670,   671,
    1039      672,   673,   683,   690,   692,   702,   703,   708,   710,   716,
    1040      718,   722,   723,   728,   733,   736,   738,   740,   750,   752,
    1041      763,   764,   766,   770,   772,   776,   777,   782,   783,   787,
    1042      792,   793,   797,   799,   805,   806,   810,   812,   814,   816,
    1043      822,   823,   827,   829,   834,   836,   838,   843,   845,   850,
    1044      852,   856,   859,   863,   866,   870,   872,   874,   876,   881,
    1045      883,   885,   890,   892,   894,   896,   898,   903,   905,   907,
    1046      909,   914,   926,   927,   932,   934,   939,   943,   945,   947,
    1047      949,   951,   957,   958,   964,   965,   969,   970,   975,   977,
    1048      983,   984,   986,   991,   996,  1006,  1008,  1012,  1013,  1018,
    1049     1020,  1024,  1025,  1029,  1031,  1035,  1036,  1040,  1041,  1045,
    1050     1046,  1061,  1062,  1063,  1064,  1065,  1069,  1074,  1081,  1091,
    1051     1096,  1101,  1109,  1114,  1119,  1124,  1129,  1137,  1159,  1164,
    1052     1171,  1173,  1180,  1185,  1190,  1201,  1206,  1211,  1216,  1221,
    1053     1230,  1235,  1243,  1244,  1245,  1246,  1252,  1257,  1265,  1266,
    1054     1267,  1268,  1272,  1273,  1274,  1275,  1280,  1281,  1290,  1291,
    1055     1296,  1297,  1302,  1304,  1306,  1308,  1310,  1313,  1312,  1324,
    1056     1325,  1327,  1337,  1338,  1343,  1345,  1347,  1349,  1351,  1354,
    1057     1356,  1359,  1364,  1366,  1368,  1370,  1372,  1374,  1376,  1378,
    1058     1380,  1382,  1384,  1386,  1388,  1394,  1395,  1397,  1399,  1401,
    1059     1406,  1407,  1413,  1414,  1416,  1418,  1423,  1425,  1427,  1429,
    1060     1434,  1435,  1437,  1439,  1444,  1445,  1447,  1452,  1453,  1455,
    1061     1457,  1462,  1464,  1466,  1471,  1472,  1476,  1478,  1484,  1483,
    1062     1487,  1489,  1494,  1496,  1502,  1503,  1508,  1509,  1511,  1512,
    1063     1521,  1522,  1524,  1526,  1531,  1533,  1539,  1540,  1542,  1545,
    1064     1548,  1553,  1554,  1559,  1564,  1568,  1570,  1576,  1575,  1582,
    1065     1584,  1590,  1591,  1599,  1600,  1604,  1605,  1606,  1608,  1610,
    1066     1617,  1618,  1620,  1622,  1627,  1628,  1634,  1635,  1639,  1640,
    1067     1645,  1646,  1647,  1649,  1657,  1658,  1660,  1663,  1665,  1669,
    1068     1670,  1671,  1673,  1675,  1679,  1684,  1692,  1693,  1702,  1704,
    1069     1709,  1710,  1711,  1715,  1716,  1717,  1721,  1722,  1723,  1727,
    1070     1728,  1729,  1734,  1735,  1736,  1737,  1743,  1744,  1746,  1751,
    1071     1752,  1757,  1758,  1759,  1760,  1761,  1776,  1777,  1782,  1783,
    1072     1789,  1791,  1794,  1796,  1798,  1821,  1822,  1824,  1826,  1831,
    1073     1832,  1834,  1839,  1844,  1845,  1851,  1850,  1854,  1858,  1860,
    1074     1862,  1868,  1869,  1874,  1879,  1881,  1886,  1888,  1889,  1891,
    1075     1896,  1898,  1900,  1905,  1907,  1912,  1917,  1925,  1931,  1930,
    1076     1944,  1945,  1950,  1951,  1955,  1960,  1965,  1973,  1978,  1989,
    1077     1990,  1995,  1996,  2002,  2003,  2007,  2008,  2009,  2012,  2011,
    1078     2022,  2031,  2037,  2043,  2052,  2058,  2064,  2070,  2076,  2084,
    1079     2090,  2098,  2104,  2113,  2114,  2115,  2119,  2123,  2125,  2130,
    1080     2131,  2135,  2136,  2141,  2147,  2148,  2151,  2153,  2154,  2158,
    1081     2159,  2160,  2161,  2195,  2197,  2198,  2200,  2205,  2210,  2215,
    1082     2217,  2219,  2224,  2226,  2228,  2230,  2235,  2237,  2246,  2248,
    1083     2249,  2254,  2256,  2258,  2263,  2265,  2267,  2272,  2274,  2276,
    1084     2285,  2286,  2287,  2291,  2293,  2295,  2300,  2302,  2304,  2309,
    1085     2311,  2313,  2328,  2330,  2331,  2333,  2338,  2339,  2344,  2346,
    1086     2348,  2353,  2355,  2357,  2359,  2364,  2366,  2368,  2378,  2380,
    1087     2381,  2383,  2388,  2390,  2392,  2397,  2399,  2401,  2403,  2408,
    1088     2410,  2412,  2443,  2445,  2446,  2448,  2453,  2458,  2466,  2468,
    1089     2470,  2475,  2477,  2482,  2484,  2498,  2499,  2501,  2506,  2508,
    1090     2510,  2512,  2514,  2519,  2520,  2522,  2524,  2529,  2531,  2533,
    1091     2539,  2541,  2543,  2547,  2549,  2551,  2553,  2567,  2568,  2570,
    1092     2575,  2577,  2579,  2581,  2583,  2588,  2589,  2591,  2593,  2598,
    1093     2600,  2602,  2608,  2609,  2611,  2620,  2623,  2625,  2628,  2630,
    1094     2632,  2645,  2646,  2648,  2653,  2655,  2657,  2659,  2661,  2666,
    1095     2667,  2669,  2671,  2676,  2678,  2686,  2687,  2688,  2693,  2694,
    1096     2698,  2700,  2702,  2704,  2706,  2708,  2715,  2717,  2719,  2721,
    1097     2723,  2725,  2727,  2729,  2731,  2733,  2738,  2740,  2742,  2747,
    1098     2773,  2774,  2776,  2780,  2781,  2785,  2787,  2789,  2791,  2793,
    1099     2795,  2802,  2804,  2806,  2808,  2810,  2812,  2817,  2822,  2824,
    1100     2826,  2844,  2846,  2851,  2852
     1029     413,   417,   421,   423,   425,   427,   432,   434,   438,   441,
     1030     443,   445,   450,   463,   465,   467,   469,   471,   473,   475,
     1031     477,   479,   481,   483,   490,   491,   497,   498,   499,   500,
     1032     504,   505,   507,   512,   513,   515,   517,   522,   523,   525,
     1033     530,   531,   533,   538,   539,   541,   543,   545,   550,   551,
     1034     553,   558,   559,   564,   565,   570,   571,   576,   577,   582,
     1035     583,   588,   589,   592,   594,   599,   604,   605,   607,   613,
     1036     614,   618,   619,   620,   621,   622,   623,   624,   625,   626,
     1037     627,   628,   629,   635,   637,   639,   641,   646,   647,   652,
     1038     653,   659,   660,   666,   667,   668,   669,   670,   671,   672,
     1039     673,   674,   684,   691,   693,   703,   704,   709,   711,   717,
     1040     719,   723,   724,   729,   734,   737,   739,   741,   751,   753,
     1041     764,   765,   767,   771,   773,   777,   778,   783,   784,   788,
     1042     793,   794,   798,   800,   806,   807,   811,   813,   815,   817,
     1043     823,   824,   828,   830,   835,   837,   839,   844,   846,   851,
     1044     853,   857,   860,   864,   867,   871,   873,   875,   877,   882,
     1045     884,   886,   891,   893,   895,   897,   899,   904,   906,   908,
     1046     910,   915,   927,   928,   933,   935,   940,   944,   946,   948,
     1047     950,   952,   958,   959,   965,   966,   970,   971,   976,   978,
     1048     984,   985,   987,   992,   997,  1007,  1009,  1013,  1014,  1019,
     1049    1021,  1025,  1026,  1030,  1032,  1036,  1037,  1041,  1042,  1046,
     1050    1047,  1062,  1063,  1064,  1065,  1066,  1070,  1075,  1082,  1092,
     1051    1097,  1102,  1110,  1115,  1120,  1125,  1130,  1138,  1160,  1165,
     1052    1172,  1174,  1181,  1186,  1191,  1202,  1207,  1212,  1217,  1222,
     1053    1231,  1236,  1244,  1245,  1246,  1247,  1253,  1258,  1266,  1267,
     1054    1268,  1269,  1273,  1274,  1275,  1276,  1281,  1282,  1291,  1292,
     1055    1297,  1298,  1303,  1305,  1307,  1309,  1311,  1314,  1313,  1325,
     1056    1326,  1328,  1338,  1339,  1344,  1346,  1348,  1350,  1352,  1355,
     1057    1357,  1360,  1365,  1367,  1369,  1371,  1373,  1375,  1377,  1379,
     1058    1381,  1383,  1385,  1387,  1389,  1395,  1396,  1398,  1400,  1402,
     1059    1407,  1408,  1414,  1415,  1417,  1419,  1424,  1426,  1428,  1430,
     1060    1435,  1436,  1438,  1440,  1445,  1446,  1448,  1453,  1454,  1456,
     1061    1458,  1463,  1465,  1467,  1472,  1473,  1477,  1479,  1485,  1484,
     1062    1488,  1490,  1495,  1497,  1503,  1504,  1509,  1510,  1512,  1513,
     1063    1522,  1523,  1525,  1527,  1532,  1534,  1540,  1541,  1543,  1546,
     1064    1549,  1554,  1555,  1560,  1565,  1569,  1571,  1577,  1576,  1583,
     1065    1585,  1591,  1592,  1600,  1601,  1605,  1606,  1607,  1609,  1611,
     1066    1618,  1619,  1621,  1623,  1628,  1629,  1635,  1636,  1640,  1641,
     1067    1646,  1647,  1648,  1650,  1658,  1659,  1661,  1664,  1666,  1670,
     1068    1671,  1672,  1674,  1676,  1680,  1685,  1693,  1694,  1703,  1705,
     1069    1710,  1711,  1712,  1716,  1717,  1718,  1722,  1723,  1724,  1728,
     1070    1729,  1730,  1735,  1736,  1737,  1738,  1744,  1745,  1747,  1752,
     1071    1753,  1758,  1759,  1760,  1761,  1762,  1777,  1778,  1783,  1784,
     1072    1790,  1792,  1795,  1797,  1799,  1822,  1823,  1825,  1827,  1832,
     1073    1833,  1835,  1840,  1845,  1846,  1852,  1851,  1855,  1859,  1861,
     1074    1863,  1869,  1870,  1875,  1880,  1882,  1887,  1889,  1890,  1892,
     1075    1897,  1899,  1901,  1906,  1908,  1913,  1918,  1926,  1932,  1931,
     1076    1945,  1946,  1951,  1952,  1956,  1961,  1966,  1974,  1979,  1990,
     1077    1991,  1996,  1997,  2003,  2004,  2008,  2009,  2010,  2013,  2012,
     1078    2023,  2032,  2038,  2044,  2053,  2059,  2065,  2071,  2077,  2085,
     1079    2091,  2099,  2105,  2114,  2115,  2116,  2120,  2124,  2126,  2131,
     1080    2132,  2136,  2137,  2142,  2148,  2149,  2152,  2154,  2155,  2159,
     1081    2160,  2161,  2162,  2196,  2198,  2199,  2201,  2206,  2211,  2216,
     1082    2218,  2220,  2225,  2227,  2229,  2231,  2236,  2238,  2247,  2249,
     1083    2250,  2255,  2257,  2259,  2264,  2266,  2268,  2273,  2275,  2277,
     1084    2286,  2287,  2288,  2292,  2294,  2296,  2301,  2303,  2305,  2310,
     1085    2312,  2314,  2329,  2331,  2332,  2334,  2339,  2340,  2345,  2347,
     1086    2349,  2354,  2356,  2358,  2360,  2365,  2367,  2369,  2379,  2381,
     1087    2382,  2384,  2389,  2391,  2393,  2398,  2400,  2402,  2404,  2409,
     1088    2411,  2413,  2444,  2446,  2447,  2449,  2454,  2459,  2467,  2469,
     1089    2471,  2476,  2478,  2483,  2485,  2499,  2500,  2502,  2507,  2509,
     1090    2511,  2513,  2515,  2520,  2521,  2523,  2525,  2530,  2532,  2534,
     1091    2540,  2542,  2544,  2548,  2550,  2552,  2554,  2568,  2569,  2571,
     1092    2576,  2578,  2580,  2582,  2584,  2589,  2590,  2592,  2594,  2599,
     1093    2601,  2603,  2609,  2610,  2612,  2621,  2624,  2626,  2629,  2631,
     1094    2633,  2646,  2647,  2649,  2654,  2656,  2658,  2660,  2662,  2667,
     1095    2668,  2670,  2672,  2677,  2679,  2687,  2688,  2689,  2694,  2695,
     1096    2699,  2701,  2703,  2705,  2707,  2709,  2716,  2718,  2720,  2722,
     1097    2724,  2727,  2729,  2731,  2733,  2735,  2740,  2742,  2744,  2749,
     1098    2775,  2776,  2778,  2782,  2783,  2787,  2789,  2791,  2793,  2795,
     1099    2797,  2804,  2806,  2808,  2810,  2812,  2814,  2819,  2824,  2826,
     1100    2828,  2846,  2848,  2853,  2854
    11011101};
    11021102#endif
     
    51815181
    51825182/* Line 1806 of yacc.c  */
    5183 #line 441 "parser.yy"
     5183#line 442 "parser.yy"
    51845184    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    51855185    break;
     
    51885188
    51895189/* Line 1806 of yacc.c  */
    5190 #line 443 "parser.yy"
     5190#line 444 "parser.yy"
    51915191    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    51925192    break;
     
    51955195
    51965196/* Line 1806 of yacc.c  */
    5197 #line 445 "parser.yy"
     5197#line 446 "parser.yy"
    51985198    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    51995199    break;
     
    52025202
    52035203/* Line 1806 of yacc.c  */
    5204 #line 450 "parser.yy"
     5204#line 451 "parser.yy"
    52055205    {
    52065206                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    52205220
    52215221/* Line 1806 of yacc.c  */
    5222 #line 463 "parser.yy"
     5222#line 464 "parser.yy"
    52235223    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    52245224    break;
     
    52275227
    52285228/* Line 1806 of yacc.c  */
    5229 #line 465 "parser.yy"
     5229#line 466 "parser.yy"
    52305230    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    52315231    break;
     
    52345234
    52355235/* Line 1806 of yacc.c  */
    5236 #line 467 "parser.yy"
     5236#line 468 "parser.yy"
    52375237    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    52385238    break;
     
    52415241
    52425242/* Line 1806 of yacc.c  */
    5243 #line 469 "parser.yy"
     5243#line 470 "parser.yy"
    52445244    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52455245    break;
     
    52485248
    52495249/* Line 1806 of yacc.c  */
    5250 #line 471 "parser.yy"
     5250#line 472 "parser.yy"
    52515251    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52525252    break;
     
    52555255
    52565256/* Line 1806 of yacc.c  */
    5257 #line 473 "parser.yy"
     5257#line 474 "parser.yy"
    52585258    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52595259    break;
     
    52625262
    52635263/* Line 1806 of yacc.c  */
    5264 #line 475 "parser.yy"
     5264#line 476 "parser.yy"
    52655265    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52665266    break;
     
    52695269
    52705270/* Line 1806 of yacc.c  */
    5271 #line 477 "parser.yy"
     5271#line 478 "parser.yy"
    52725272    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    52735273    break;
     
    52765276
    52775277/* Line 1806 of yacc.c  */
    5278 #line 479 "parser.yy"
     5278#line 480 "parser.yy"
    52795279    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    52805280    break;
     
    52835283
    52845284/* Line 1806 of yacc.c  */
    5285 #line 481 "parser.yy"
     5285#line 482 "parser.yy"
    52865286    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    52875287    break;
     
    52905290
    52915291/* Line 1806 of yacc.c  */
    5292 #line 483 "parser.yy"
     5292#line 484 "parser.yy"
    52935293    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    52945294    break;
     
    52975297
    52985298/* Line 1806 of yacc.c  */
    5299 #line 489 "parser.yy"
     5299#line 490 "parser.yy"
    53005300    { (yyval.op) = OperKinds::PointTo; }
    53015301    break;
     
    53045304
    53055305/* Line 1806 of yacc.c  */
    5306 #line 490 "parser.yy"
     5306#line 491 "parser.yy"
    53075307    { (yyval.op) = OperKinds::AddressOf; }
    53085308    break;
     
    53115311
    53125312/* Line 1806 of yacc.c  */
    5313 #line 496 "parser.yy"
     5313#line 497 "parser.yy"
    53145314    { (yyval.op) = OperKinds::UnPlus; }
    53155315    break;
     
    53185318
    53195319/* Line 1806 of yacc.c  */
    5320 #line 497 "parser.yy"
     5320#line 498 "parser.yy"
    53215321    { (yyval.op) = OperKinds::UnMinus; }
    53225322    break;
     
    53255325
    53265326/* Line 1806 of yacc.c  */
    5327 #line 498 "parser.yy"
     5327#line 499 "parser.yy"
    53285328    { (yyval.op) = OperKinds::Neg; }
    53295329    break;
     
    53325332
    53335333/* Line 1806 of yacc.c  */
    5334 #line 499 "parser.yy"
     5334#line 500 "parser.yy"
    53355335    { (yyval.op) = OperKinds::BitNeg; }
    53365336    break;
     
    53395339
    53405340/* Line 1806 of yacc.c  */
    5341 #line 505 "parser.yy"
     5341#line 506 "parser.yy"
    53425342    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53435343    break;
     
    53465346
    53475347/* Line 1806 of yacc.c  */
    5348 #line 507 "parser.yy"
     5348#line 508 "parser.yy"
    53495349    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53505350    break;
     
    53535353
    53545354/* Line 1806 of yacc.c  */
    5355 #line 513 "parser.yy"
     5355#line 514 "parser.yy"
    53565356    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53575357    break;
     
    53605360
    53615361/* Line 1806 of yacc.c  */
    5362 #line 515 "parser.yy"
     5362#line 516 "parser.yy"
    53635363    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53645364    break;
     
    53675367
    53685368/* Line 1806 of yacc.c  */
    5369 #line 517 "parser.yy"
     5369#line 518 "parser.yy"
    53705370    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53715371    break;
     
    53745374
    53755375/* Line 1806 of yacc.c  */
    5376 #line 523 "parser.yy"
     5376#line 524 "parser.yy"
    53775377    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53785378    break;
     
    53815381
    53825382/* Line 1806 of yacc.c  */
    5383 #line 525 "parser.yy"
     5383#line 526 "parser.yy"
    53845384    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53855385    break;
     
    53885388
    53895389/* Line 1806 of yacc.c  */
    5390 #line 531 "parser.yy"
     5390#line 532 "parser.yy"
    53915391    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53925392    break;
     
    53955395
    53965396/* Line 1806 of yacc.c  */
    5397 #line 533 "parser.yy"
     5397#line 534 "parser.yy"
    53985398    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53995399    break;
     
    54025402
    54035403/* Line 1806 of yacc.c  */
    5404 #line 539 "parser.yy"
     5404#line 540 "parser.yy"
    54055405    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54065406    break;
     
    54095409
    54105410/* Line 1806 of yacc.c  */
    5411 #line 541 "parser.yy"
     5411#line 542 "parser.yy"
    54125412    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54135413    break;
     
    54165416
    54175417/* Line 1806 of yacc.c  */
    5418 #line 543 "parser.yy"
     5418#line 544 "parser.yy"
    54195419    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54205420    break;
     
    54235423
    54245424/* Line 1806 of yacc.c  */
    5425 #line 545 "parser.yy"
     5425#line 546 "parser.yy"
    54265426    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54275427    break;
     
    54305430
    54315431/* Line 1806 of yacc.c  */
    5432 #line 551 "parser.yy"
     5432#line 552 "parser.yy"
    54335433    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54345434    break;
     
    54375437
    54385438/* Line 1806 of yacc.c  */
    5439 #line 553 "parser.yy"
     5439#line 554 "parser.yy"
    54405440    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54415441    break;
     
    54445444
    54455445/* Line 1806 of yacc.c  */
    5446 #line 559 "parser.yy"
     5446#line 560 "parser.yy"
    54475447    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54485448    break;
     
    54515451
    54525452/* Line 1806 of yacc.c  */
    5453 #line 565 "parser.yy"
     5453#line 566 "parser.yy"
    54545454    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54555455    break;
     
    54585458
    54595459/* Line 1806 of yacc.c  */
    5460 #line 571 "parser.yy"
     5460#line 572 "parser.yy"
    54615461    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54625462    break;
     
    54655465
    54665466/* Line 1806 of yacc.c  */
    5467 #line 577 "parser.yy"
     5467#line 578 "parser.yy"
    54685468    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    54695469    break;
     
    54725472
    54735473/* Line 1806 of yacc.c  */
    5474 #line 583 "parser.yy"
     5474#line 584 "parser.yy"
    54755475    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    54765476    break;
     
    54795479
    54805480/* Line 1806 of yacc.c  */
    5481 #line 589 "parser.yy"
     5481#line 590 "parser.yy"
    54825482    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54835483    break;
     
    54865486
    54875487/* Line 1806 of yacc.c  */
    5488 #line 592 "parser.yy"
     5488#line 593 "parser.yy"
    54895489    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    54905490    break;
     
    54935493
    54945494/* Line 1806 of yacc.c  */
    5495 #line 594 "parser.yy"
     5495#line 595 "parser.yy"
    54965496    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54975497    break;
     
    55005500
    55015501/* Line 1806 of yacc.c  */
    5502 #line 605 "parser.yy"
     5502#line 606 "parser.yy"
    55035503    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    55045504    break;
     
    55075507
    55085508/* Line 1806 of yacc.c  */
    5509 #line 607 "parser.yy"
     5509#line 608 "parser.yy"
    55105510    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
    55115511    break;
     
    55145514
    55155515/* Line 1806 of yacc.c  */
    5516 #line 612 "parser.yy"
     5516#line 613 "parser.yy"
    55175517    { (yyval.en) = nullptr; }
    55185518    break;
     
    55215521
    55225522/* Line 1806 of yacc.c  */
    5523 #line 617 "parser.yy"
     5523#line 618 "parser.yy"
    55245524    { (yyval.op) = OperKinds::Assign; }
    55255525    break;
     
    55285528
    55295529/* Line 1806 of yacc.c  */
    5530 #line 618 "parser.yy"
     5530#line 619 "parser.yy"
    55315531    { (yyval.op) = OperKinds::AtAssn; }
    55325532    break;
     
    55355535
    55365536/* Line 1806 of yacc.c  */
    5537 #line 619 "parser.yy"
     5537#line 620 "parser.yy"
    55385538    { (yyval.op) = OperKinds::MulAssn; }
    55395539    break;
     
    55425542
    55435543/* Line 1806 of yacc.c  */
    5544 #line 620 "parser.yy"
     5544#line 621 "parser.yy"
    55455545    { (yyval.op) = OperKinds::DivAssn; }
    55465546    break;
     
    55495549
    55505550/* Line 1806 of yacc.c  */
    5551 #line 621 "parser.yy"
     5551#line 622 "parser.yy"
    55525552    { (yyval.op) = OperKinds::ModAssn; }
    55535553    break;
     
    55565556
    55575557/* Line 1806 of yacc.c  */
    5558 #line 622 "parser.yy"
     5558#line 623 "parser.yy"
    55595559    { (yyval.op) = OperKinds::PlusAssn; }
    55605560    break;
     
    55635563
    55645564/* Line 1806 of yacc.c  */
    5565 #line 623 "parser.yy"
     5565#line 624 "parser.yy"
    55665566    { (yyval.op) = OperKinds::MinusAssn; }
    55675567    break;
     
    55705570
    55715571/* Line 1806 of yacc.c  */
    5572 #line 624 "parser.yy"
     5572#line 625 "parser.yy"
    55735573    { (yyval.op) = OperKinds::LSAssn; }
    55745574    break;
     
    55775577
    55785578/* Line 1806 of yacc.c  */
    5579 #line 625 "parser.yy"
     5579#line 626 "parser.yy"
    55805580    { (yyval.op) = OperKinds::RSAssn; }
    55815581    break;
     
    55845584
    55855585/* Line 1806 of yacc.c  */
    5586 #line 626 "parser.yy"
     5586#line 627 "parser.yy"
    55875587    { (yyval.op) = OperKinds::AndAssn; }
    55885588    break;
     
    55915591
    55925592/* Line 1806 of yacc.c  */
    5593 #line 627 "parser.yy"
     5593#line 628 "parser.yy"
    55945594    { (yyval.op) = OperKinds::ERAssn; }
    55955595    break;
     
    55985598
    55995599/* Line 1806 of yacc.c  */
    5600 #line 628 "parser.yy"
     5600#line 629 "parser.yy"
    56015601    { (yyval.op) = OperKinds::OrAssn; }
    56025602    break;
     
    56055605
    56065606/* Line 1806 of yacc.c  */
    5607 #line 635 "parser.yy"
     5607#line 636 "parser.yy"
    56085608    { (yyval.en) = new ExpressionNode( build_tuple() ); }
    56095609    break;
     
    56125612
    56135613/* Line 1806 of yacc.c  */
    5614 #line 637 "parser.yy"
     5614#line 638 "parser.yy"
    56155615    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
    56165616    break;
     
    56195619
    56205620/* Line 1806 of yacc.c  */
    5621 #line 639 "parser.yy"
     5621#line 640 "parser.yy"
    56225622    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    56235623    break;
     
    56265626
    56275627/* Line 1806 of yacc.c  */
    5628 #line 641 "parser.yy"
     5628#line 642 "parser.yy"
    56295629    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    56305630    break;
     
    56335633
    56345634/* Line 1806 of yacc.c  */
    5635 #line 647 "parser.yy"
     5635#line 648 "parser.yy"
    56365636    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    56375637    break;
     
    56405640
    56415641/* Line 1806 of yacc.c  */
    5642 #line 653 "parser.yy"
     5642#line 654 "parser.yy"
    56435643    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56445644    break;
     
    56475647
    56485648/* Line 1806 of yacc.c  */
    5649 #line 658 "parser.yy"
     5649#line 659 "parser.yy"
    56505650    { (yyval.en) = 0; }
    56515651    break;
     
    56545654
    56555655/* Line 1806 of yacc.c  */
    5656 #line 667 "parser.yy"
     5656#line 668 "parser.yy"
    56575657    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56585658    break;
     
    56615661
    56625662/* Line 1806 of yacc.c  */
    5663 #line 674 "parser.yy"
     5663#line 675 "parser.yy"
    56645664    {
    56655665                        Token fn;
     
    56725672
    56735673/* Line 1806 of yacc.c  */
    5674 #line 684 "parser.yy"
     5674#line 685 "parser.yy"
    56755675    {
    56765676                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56815681
    56825682/* Line 1806 of yacc.c  */
    5683 #line 691 "parser.yy"
     5683#line 692 "parser.yy"
    56845684    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    56855685    break;
     
    56885688
    56895689/* Line 1806 of yacc.c  */
    5690 #line 698 "parser.yy"
     5690#line 699 "parser.yy"
    56915691    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    56925692    break;
     
    56955695
    56965696/* Line 1806 of yacc.c  */
    5697 #line 704 "parser.yy"
     5697#line 705 "parser.yy"
    56985698    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    56995699    break;
     
    57025702
    57035703/* Line 1806 of yacc.c  */
    5704 #line 709 "parser.yy"
     5704#line 710 "parser.yy"
    57055705    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57065706    break;
     
    57095709
    57105710/* Line 1806 of yacc.c  */
    5711 #line 711 "parser.yy"
     5711#line 712 "parser.yy"
    57125712    {   // mark all fields in list
    57135713                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    57205720
    57215721/* Line 1806 of yacc.c  */
    5722 #line 717 "parser.yy"
     5722#line 718 "parser.yy"
    57235723    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57245724    break;
     
    57275727
    57285728/* Line 1806 of yacc.c  */
    5729 #line 724 "parser.yy"
     5729#line 725 "parser.yy"
    57305730    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57315731    break;
     
    57345734
    57355735/* Line 1806 of yacc.c  */
    5736 #line 729 "parser.yy"
     5736#line 730 "parser.yy"
    57375737    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    57385738    break;
     
    57415741
    57425742/* Line 1806 of yacc.c  */
    5743 #line 735 "parser.yy"
     5743#line 736 "parser.yy"
    57445744    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    57455745    break;
     
    57485748
    57495749/* Line 1806 of yacc.c  */
    5750 #line 737 "parser.yy"
     5750#line 738 "parser.yy"
    57515751    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    57525752    break;
     
    57555755
    57565756/* Line 1806 of yacc.c  */
    5757 #line 739 "parser.yy"
     5757#line 740 "parser.yy"
    57585758    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57595759    break;
     
    57625762
    57635763/* Line 1806 of yacc.c  */
    5764 #line 741 "parser.yy"
     5764#line 742 "parser.yy"
    57655765    {
    57665766                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57775777
    57785778/* Line 1806 of yacc.c  */
    5779 #line 751 "parser.yy"
     5779#line 752 "parser.yy"
    57805780    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57815781    break;
     
    57845784
    57855785/* Line 1806 of yacc.c  */
    5786 #line 753 "parser.yy"
     5786#line 754 "parser.yy"
    57875787    {
    57885788                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57945794
    57955795/* Line 1806 of yacc.c  */
    5796 #line 763 "parser.yy"
     5796#line 764 "parser.yy"
    57975797    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57985798    break;
     
    58015801
    58025802/* Line 1806 of yacc.c  */
    5803 #line 765 "parser.yy"
     5803#line 766 "parser.yy"
    58045804    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    58055805    break;
     
    58085808
    58095809/* Line 1806 of yacc.c  */
    5810 #line 770 "parser.yy"
     5810#line 771 "parser.yy"
    58115811    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    58125812    break;
     
    58155815
    58165816/* Line 1806 of yacc.c  */
    5817 #line 772 "parser.yy"
     5817#line 773 "parser.yy"
    58185818    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    58195819    break;
     
    58225822
    58235823/* Line 1806 of yacc.c  */
    5824 #line 776 "parser.yy"
     5824#line 777 "parser.yy"
    58255825    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    58265826    break;
     
    58295829
    58305830/* Line 1806 of yacc.c  */
    5831 #line 777 "parser.yy"
     5831#line 778 "parser.yy"
    58325832    { (yyval.sn) = new StatementNode( build_default() ); }
    58335833    break;
     
    58365836
    58375837/* Line 1806 of yacc.c  */
    5838 #line 783 "parser.yy"
     5838#line 784 "parser.yy"
    58395839    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    58405840    break;
     
    58435843
    58445844/* Line 1806 of yacc.c  */
    5845 #line 787 "parser.yy"
     5845#line 788 "parser.yy"
    58465846    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58475847    break;
     
    58505850
    58515851/* Line 1806 of yacc.c  */
    5852 #line 792 "parser.yy"
     5852#line 793 "parser.yy"
    58535853    { (yyval.sn) = 0; }
    58545854    break;
     
    58575857
    58585858/* Line 1806 of yacc.c  */
    5859 #line 798 "parser.yy"
     5859#line 799 "parser.yy"
    58605860    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58615861    break;
     
    58645864
    58655865/* Line 1806 of yacc.c  */
    5866 #line 800 "parser.yy"
     5866#line 801 "parser.yy"
    58675867    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
    58685868    break;
     
    58715871
    58725872/* Line 1806 of yacc.c  */
    5873 #line 805 "parser.yy"
     5873#line 806 "parser.yy"
    58745874    { (yyval.sn) = 0; }
    58755875    break;
     
    58785878
    58795879/* Line 1806 of yacc.c  */
    5880 #line 811 "parser.yy"
     5880#line 812 "parser.yy"
    58815881    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58825882    break;
     
    58855885
    58865886/* Line 1806 of yacc.c  */
    5887 #line 813 "parser.yy"
     5887#line 814 "parser.yy"
    58885888    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    58895889    break;
     
    58925892
    58935893/* Line 1806 of yacc.c  */
    5894 #line 815 "parser.yy"
     5894#line 816 "parser.yy"
    58955895    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58965896    break;
     
    58995899
    59005900/* Line 1806 of yacc.c  */
    5901 #line 817 "parser.yy"
     5901#line 818 "parser.yy"
    59025902    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    59035903    break;
     
    59065906
    59075907/* Line 1806 of yacc.c  */
    5908 #line 822 "parser.yy"
     5908#line 823 "parser.yy"
    59095909    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59105910    break;
     
    59135913
    59145914/* Line 1806 of yacc.c  */
    5915 #line 828 "parser.yy"
     5915#line 829 "parser.yy"
    59165916    { (yyval.sn) = 0; }
    59175917    break;
     
    59205920
    59215921/* Line 1806 of yacc.c  */
    5922 #line 830 "parser.yy"
     5922#line 831 "parser.yy"
    59235923    { (yyval.sn) = 0; }
    59245924    break;
     
    59275927
    59285928/* Line 1806 of yacc.c  */
    5929 #line 835 "parser.yy"
     5929#line 836 "parser.yy"
    59305930    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    59315931    break;
     
    59345934
    59355935/* Line 1806 of yacc.c  */
    5936 #line 837 "parser.yy"
     5936#line 838 "parser.yy"
    59375937    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
    59385938    break;
     
    59415941
    59425942/* Line 1806 of yacc.c  */
    5943 #line 839 "parser.yy"
     5943#line 840 "parser.yy"
    59445944    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    59455945    break;
     
    59485948
    59495949/* Line 1806 of yacc.c  */
    5950 #line 844 "parser.yy"
     5950#line 845 "parser.yy"
    59515951    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59525952    break;
     
    59555955
    59565956/* Line 1806 of yacc.c  */
    5957 #line 846 "parser.yy"
     5957#line 847 "parser.yy"
    59585958    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59595959    break;
     
    59625962
    59635963/* Line 1806 of yacc.c  */
    5964 #line 851 "parser.yy"
     5964#line 852 "parser.yy"
    59655965    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    59665966    break;
     
    59695969
    59705970/* Line 1806 of yacc.c  */
    5971 #line 855 "parser.yy"
     5971#line 856 "parser.yy"
    59725972    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    59735973    break;
     
    59765976
    59775977/* Line 1806 of yacc.c  */
    5978 #line 858 "parser.yy"
     5978#line 859 "parser.yy"
    59795979    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    59805980    break;
     
    59835983
    59845984/* Line 1806 of yacc.c  */
    5985 #line 862 "parser.yy"
     5985#line 863 "parser.yy"
    59865986    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
    59875987    break;
     
    59905990
    59915991/* Line 1806 of yacc.c  */
    5992 #line 865 "parser.yy"
     5992#line 866 "parser.yy"
    59935993    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59945994    break;
     
    59975997
    59985998/* Line 1806 of yacc.c  */
    5999 #line 869 "parser.yy"
     5999#line 870 "parser.yy"
    60006000    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    60016001    break;
     
    60046004
    60056005/* Line 1806 of yacc.c  */
    6006 #line 871 "parser.yy"
     6006#line 872 "parser.yy"
    60076007    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    60086008    break;
     
    60116011
    60126012/* Line 1806 of yacc.c  */
    6013 #line 873 "parser.yy"
     6013#line 874 "parser.yy"
    60146014    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60156015    break;
     
    60186018
    60196019/* Line 1806 of yacc.c  */
    6020 #line 875 "parser.yy"
     6020#line 876 "parser.yy"
    60216021    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60226022    break;
     
    60256025
    60266026/* Line 1806 of yacc.c  */
    6027 #line 877 "parser.yy"
     6027#line 878 "parser.yy"
    60286028    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    60296029    break;
     
    60326032
    60336033/* Line 1806 of yacc.c  */
    6034 #line 882 "parser.yy"
     6034#line 883 "parser.yy"
    60356035    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    60366036    break;
     
    60396039
    60406040/* Line 1806 of yacc.c  */
    6041 #line 884 "parser.yy"
     6041#line 885 "parser.yy"
    60426042    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    60436043    break;
     
    60466046
    60476047/* Line 1806 of yacc.c  */
    6048 #line 886 "parser.yy"
     6048#line 887 "parser.yy"
    60496049    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    60506050    break;
     
    60536053
    60546054/* Line 1806 of yacc.c  */
    6055 #line 893 "parser.yy"
     6055#line 894 "parser.yy"
    60566056    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60576057    break;
     
    60606060
    60616061/* Line 1806 of yacc.c  */
    6062 #line 895 "parser.yy"
     6062#line 896 "parser.yy"
    60636063    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60646064    break;
     
    60676067
    60686068/* Line 1806 of yacc.c  */
    6069 #line 897 "parser.yy"
     6069#line 898 "parser.yy"
    60706070    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60716071    break;
     
    60746074
    60756075/* Line 1806 of yacc.c  */
    6076 #line 899 "parser.yy"
     6076#line 900 "parser.yy"
    60776077    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60786078    break;
     
    60816081
    60826082/* Line 1806 of yacc.c  */
    6083 #line 904 "parser.yy"
     6083#line 905 "parser.yy"
    60846084    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60856085    break;
     
    60886088
    60896089/* Line 1806 of yacc.c  */
    6090 #line 906 "parser.yy"
     6090#line 907 "parser.yy"
    60916091    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    60926092    break;
     
    60956095
    60966096/* Line 1806 of yacc.c  */
    6097 #line 908 "parser.yy"
     6097#line 909 "parser.yy"
    60986098    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60996099    break;
     
    61026102
    61036103/* Line 1806 of yacc.c  */
    6104 #line 910 "parser.yy"
     6104#line 911 "parser.yy"
    61056105    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    61066106    break;
     
    61096109
    61106110/* Line 1806 of yacc.c  */
    6111 #line 915 "parser.yy"
     6111#line 916 "parser.yy"
    61126112    {
    61136113                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    61186118
    61196119/* Line 1806 of yacc.c  */
    6120 #line 928 "parser.yy"
     6120#line 929 "parser.yy"
    61216121    {
    61226122                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61286128
    61296129/* Line 1806 of yacc.c  */
    6130 #line 933 "parser.yy"
     6130#line 934 "parser.yy"
    61316131    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61326132    break;
     
    61356135
    61366136/* Line 1806 of yacc.c  */
    6137 #line 935 "parser.yy"
     6137#line 936 "parser.yy"
    61386138    {
    61396139                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61456145
    61466146/* Line 1806 of yacc.c  */
    6147 #line 944 "parser.yy"
     6147#line 945 "parser.yy"
    61486148    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
    61496149    break;
     
    61526152
    61536153/* Line 1806 of yacc.c  */
    6154 #line 946 "parser.yy"
     6154#line 947 "parser.yy"
    61556155    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
    61566156    break;
     
    61596159
    61606160/* Line 1806 of yacc.c  */
    6161 #line 948 "parser.yy"
     6161#line 949 "parser.yy"
    61626162    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
    61636163    break;
     
    61666166
    61676167/* Line 1806 of yacc.c  */
    6168 #line 950 "parser.yy"
     6168#line 951 "parser.yy"
    61696169    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
    61706170    break;
     
    61736173
    61746174/* Line 1806 of yacc.c  */
    6175 #line 952 "parser.yy"
     6175#line 953 "parser.yy"
    61766176    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
    61776177    break;
     
    61806180
    61816181/* Line 1806 of yacc.c  */
    6182 #line 957 "parser.yy"
     6182#line 958 "parser.yy"
    61836183    { (yyval.flag) = false; }
    61846184    break;
     
    61876187
    61886188/* Line 1806 of yacc.c  */
    6189 #line 959 "parser.yy"
     6189#line 960 "parser.yy"
    61906190    { (yyval.flag) = true; }
    61916191    break;
     
    61946194
    61956195/* Line 1806 of yacc.c  */
    6196 #line 964 "parser.yy"
     6196#line 965 "parser.yy"
    61976197    { (yyval.en) = 0; }
    61986198    break;
     
    62016201
    62026202/* Line 1806 of yacc.c  */
    6203 #line 971 "parser.yy"
     6203#line 972 "parser.yy"
    62046204    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    62056205    break;
     
    62086208
    62096209/* Line 1806 of yacc.c  */
    6210 #line 976 "parser.yy"
     6210#line 977 "parser.yy"
    62116211    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    62126212    break;
     
    62156215
    62166216/* Line 1806 of yacc.c  */
    6217 #line 978 "parser.yy"
     6217#line 979 "parser.yy"
    62186218    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    62196219    break;
     
    62226222
    62236223/* Line 1806 of yacc.c  */
    6224 #line 983 "parser.yy"
     6224#line 984 "parser.yy"
    62256225    { (yyval.en) = 0; }
    62266226    break;
     
    62296229
    62306230/* Line 1806 of yacc.c  */
    6231 #line 985 "parser.yy"
     6231#line 986 "parser.yy"
    62326232    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    62336233    break;
     
    62366236
    62376237/* Line 1806 of yacc.c  */
    6238 #line 987 "parser.yy"
     6238#line 988 "parser.yy"
    62396239    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    62406240    break;
     
    62436243
    62446244/* Line 1806 of yacc.c  */
    6245 #line 992 "parser.yy"
     6245#line 993 "parser.yy"
    62466246    {
    62476247                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     
    62536253
    62546254/* Line 1806 of yacc.c  */
    6255 #line 997 "parser.yy"
     6255#line 998 "parser.yy"
    62566256    {
    62576257                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     
    62636263
    62646264/* Line 1806 of yacc.c  */
    6265 #line 1007 "parser.yy"
     6265#line 1008 "parser.yy"
    62666266    { (yyval.decl) = 0; }
    62676267    break;
     
    62706270
    62716271/* Line 1806 of yacc.c  */
    6272 #line 1014 "parser.yy"
     6272#line 1015 "parser.yy"
    62736273    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62746274    break;
     
    62776277
    62786278/* Line 1806 of yacc.c  */
    6279 #line 1019 "parser.yy"
     6279#line 1020 "parser.yy"
    62806280    { (yyval.decl) = 0; }
    62816281    break;
     
    62846284
    62856285/* Line 1806 of yacc.c  */
    6286 #line 1026 "parser.yy"
     6286#line 1027 "parser.yy"
    62876287    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62886288    break;
    62896289
    62906290  case 247:
    6291 
    6292 /* Line 1806 of yacc.c  */
    6293 #line 1040 "parser.yy"
    6294     {}
    6295     break;
    6296 
    6297   case 248:
    62986291
    62996292/* Line 1806 of yacc.c  */
     
    63026295    break;
    63036296
     6297  case 248:
     6298
     6299/* Line 1806 of yacc.c  */
     6300#line 1042 "parser.yy"
     6301    {}
     6302    break;
     6303
    63046304  case 256:
    63056305
    63066306/* Line 1806 of yacc.c  */
    6307 #line 1070 "parser.yy"
     6307#line 1071 "parser.yy"
    63086308    {
    63096309                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63156315
    63166316/* Line 1806 of yacc.c  */
    6317 #line 1077 "parser.yy"
     6317#line 1078 "parser.yy"
    63186318    {
    63196319                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63256325
    63266326/* Line 1806 of yacc.c  */
    6327 #line 1082 "parser.yy"
     6327#line 1083 "parser.yy"
    63286328    {
    63296329                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63356335
    63366336/* Line 1806 of yacc.c  */
    6337 #line 1092 "parser.yy"
     6337#line 1093 "parser.yy"
    63386338    {
    63396339                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63456345
    63466346/* Line 1806 of yacc.c  */
    6347 #line 1097 "parser.yy"
     6347#line 1098 "parser.yy"
    63486348    {
    63496349                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63556355
    63566356/* Line 1806 of yacc.c  */
    6357 #line 1102 "parser.yy"
     6357#line 1103 "parser.yy"
    63586358    {
    63596359                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63656365
    63666366/* Line 1806 of yacc.c  */
    6367 #line 1110 "parser.yy"
     6367#line 1111 "parser.yy"
    63686368    {
    63696369                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63756375
    63766376/* Line 1806 of yacc.c  */
    6377 #line 1115 "parser.yy"
     6377#line 1116 "parser.yy"
    63786378    {
    63796379                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63856385
    63866386/* Line 1806 of yacc.c  */
    6387 #line 1120 "parser.yy"
     6387#line 1121 "parser.yy"
    63886388    {
    63896389                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63956395
    63966396/* Line 1806 of yacc.c  */
    6397 #line 1125 "parser.yy"
     6397#line 1126 "parser.yy"
    63986398    {
    63996399                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64056405
    64066406/* Line 1806 of yacc.c  */
    6407 #line 1130 "parser.yy"
     6407#line 1131 "parser.yy"
    64086408    {
    64096409                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64156415
    64166416/* Line 1806 of yacc.c  */
    6417 #line 1138 "parser.yy"
     6417#line 1139 "parser.yy"
    64186418    {
    64196419                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    64246424
    64256425/* Line 1806 of yacc.c  */
    6426 #line 1161 "parser.yy"
     6426#line 1162 "parser.yy"
    64276427    {
    64286428                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64336433
    64346434/* Line 1806 of yacc.c  */
    6435 #line 1165 "parser.yy"
     6435#line 1166 "parser.yy"
    64366436    {
    64376437                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64426442
    64436443/* Line 1806 of yacc.c  */
    6444 #line 1172 "parser.yy"
     6444#line 1173 "parser.yy"
    64456445    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64466446    break;
     
    64496449
    64506450/* Line 1806 of yacc.c  */
    6451 #line 1176 "parser.yy"
     6451#line 1177 "parser.yy"
    64526452    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64536453    break;
     
    64566456
    64576457/* Line 1806 of yacc.c  */
    6458 #line 1181 "parser.yy"
     6458#line 1182 "parser.yy"
    64596459    {
    64606460                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64666466
    64676467/* Line 1806 of yacc.c  */
    6468 #line 1186 "parser.yy"
     6468#line 1187 "parser.yy"
    64696469    {
    64706470                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64766476
    64776477/* Line 1806 of yacc.c  */
    6478 #line 1191 "parser.yy"
     6478#line 1192 "parser.yy"
    64796479    {
    64806480                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64866486
    64876487/* Line 1806 of yacc.c  */
    6488 #line 1202 "parser.yy"
     6488#line 1203 "parser.yy"
    64896489    {
    64906490                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64966496
    64976497/* Line 1806 of yacc.c  */
    6498 #line 1207 "parser.yy"
     6498#line 1208 "parser.yy"
    64996499    {
    65006500                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65066506
    65076507/* Line 1806 of yacc.c  */
    6508 #line 1212 "parser.yy"
     6508#line 1213 "parser.yy"
    65096509    {
    65106510                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65166516
    65176517/* Line 1806 of yacc.c  */
    6518 #line 1217 "parser.yy"
     6518#line 1218 "parser.yy"
    65196519    {
    65206520                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65266526
    65276527/* Line 1806 of yacc.c  */
    6528 #line 1222 "parser.yy"
     6528#line 1223 "parser.yy"
    65296529    {
    65306530                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65366536
    65376537/* Line 1806 of yacc.c  */
    6538 #line 1231 "parser.yy"
     6538#line 1232 "parser.yy"
    65396539    {
    65406540                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65466546
    65476547/* Line 1806 of yacc.c  */
    6548 #line 1236 "parser.yy"
     6548#line 1237 "parser.yy"
    65496549    {
    65506550                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65566556
    65576557/* Line 1806 of yacc.c  */
    6558 #line 1253 "parser.yy"
     6558#line 1254 "parser.yy"
    65596559    {
    65606560                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65666566
    65676567/* Line 1806 of yacc.c  */
    6568 #line 1258 "parser.yy"
     6568#line 1259 "parser.yy"
    65696569    {
    65706570                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65766576
    65776577/* Line 1806 of yacc.c  */
    6578 #line 1280 "parser.yy"
     6578#line 1281 "parser.yy"
    65796579    { (yyval.decl) = 0; }
    65806580    break;
     
    65836583
    65846584/* Line 1806 of yacc.c  */
    6585 #line 1292 "parser.yy"
     6585#line 1293 "parser.yy"
    65866586    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65876587    break;
     
    65906590
    65916591/* Line 1806 of yacc.c  */
    6592 #line 1303 "parser.yy"
     6592#line 1304 "parser.yy"
    65936593    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65946594    break;
     
    65976597
    65986598/* Line 1806 of yacc.c  */
    6599 #line 1305 "parser.yy"
     6599#line 1306 "parser.yy"
    66006600    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    66016601    break;
     
    66046604
    66056605/* Line 1806 of yacc.c  */
    6606 #line 1307 "parser.yy"
     6606#line 1308 "parser.yy"
    66076607    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66086608    break;
     
    66116611
    66126612/* Line 1806 of yacc.c  */
    6613 #line 1309 "parser.yy"
     6613#line 1310 "parser.yy"
    66146614    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66156615    break;
     
    66186618
    66196619/* Line 1806 of yacc.c  */
    6620 #line 1311 "parser.yy"
     6620#line 1312 "parser.yy"
    66216621    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    66226622    break;
     
    66256625
    66266626/* Line 1806 of yacc.c  */
    6627 #line 1313 "parser.yy"
     6627#line 1314 "parser.yy"
    66286628    {
    66296629                        typedefTable.enterScope();
     
    66346634
    66356635/* Line 1806 of yacc.c  */
    6636 #line 1317 "parser.yy"
     6636#line 1318 "parser.yy"
    66376637    {
    66386638                        typedefTable.leaveScope();
     
    66446644
    66456645/* Line 1806 of yacc.c  */
    6646 #line 1326 "parser.yy"
     6646#line 1327 "parser.yy"
    66476647    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66486648    break;
     
    66516651
    66526652/* Line 1806 of yacc.c  */
    6653 #line 1328 "parser.yy"
     6653#line 1329 "parser.yy"
    66546654    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66556655    break;
     
    66586658
    66596659/* Line 1806 of yacc.c  */
    6660 #line 1339 "parser.yy"
     6660#line 1340 "parser.yy"
    66616661    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66626662    break;
     
    66656665
    66666666/* Line 1806 of yacc.c  */
    6667 #line 1344 "parser.yy"
     6667#line 1345 "parser.yy"
    66686668    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66696669    break;
     
    66726672
    66736673/* Line 1806 of yacc.c  */
    6674 #line 1346 "parser.yy"
     6674#line 1347 "parser.yy"
    66756675    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66766676    break;
     
    66796679
    66806680/* Line 1806 of yacc.c  */
    6681 #line 1348 "parser.yy"
     6681#line 1349 "parser.yy"
    66826682    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66836683    break;
     
    66866686
    66876687/* Line 1806 of yacc.c  */
    6688 #line 1350 "parser.yy"
     6688#line 1351 "parser.yy"
    66896689    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66906690    break;
     
    66936693
    66946694/* Line 1806 of yacc.c  */
    6695 #line 1353 "parser.yy"
     6695#line 1354 "parser.yy"
    66966696    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    66976697    break;
     
    67006700
    67016701/* Line 1806 of yacc.c  */
    6702 #line 1355 "parser.yy"
     6702#line 1356 "parser.yy"
    67036703    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    67046704    break;
     
    67076707
    67086708/* Line 1806 of yacc.c  */
    6709 #line 1358 "parser.yy"
     6709#line 1359 "parser.yy"
    67106710    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    67116711    break;
     
    67146714
    67156715/* Line 1806 of yacc.c  */
    6716 #line 1360 "parser.yy"
     6716#line 1361 "parser.yy"
    67176717    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    67186718    break;
     
    67216721
    67226722/* Line 1806 of yacc.c  */
    6723 #line 1365 "parser.yy"
     6723#line 1366 "parser.yy"
    67246724    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    67256725    break;
     
    67286728
    67296729/* Line 1806 of yacc.c  */
    6730 #line 1367 "parser.yy"
     6730#line 1368 "parser.yy"
    67316731    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    67326732    break;
     
    67356735
    67366736/* Line 1806 of yacc.c  */
    6737 #line 1369 "parser.yy"
     6737#line 1370 "parser.yy"
    67386738    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    67396739    break;
     
    67426742
    67436743/* Line 1806 of yacc.c  */
    6744 #line 1371 "parser.yy"
     6744#line 1372 "parser.yy"
    67456745    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    67466746    break;
     
    67496749
    67506750/* Line 1806 of yacc.c  */
    6751 #line 1373 "parser.yy"
     6751#line 1374 "parser.yy"
    67526752    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    67536753    break;
     
    67566756
    67576757/* Line 1806 of yacc.c  */
    6758 #line 1375 "parser.yy"
     6758#line 1376 "parser.yy"
    67596759    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    67606760    break;
     
    67636763
    67646764/* Line 1806 of yacc.c  */
    6765 #line 1377 "parser.yy"
     6765#line 1378 "parser.yy"
    67666766    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    67676767    break;
     
    67706770
    67716771/* Line 1806 of yacc.c  */
    6772 #line 1379 "parser.yy"
     6772#line 1380 "parser.yy"
    67736773    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    67746774    break;
     
    67776777
    67786778/* Line 1806 of yacc.c  */
    6779 #line 1381 "parser.yy"
     6779#line 1382 "parser.yy"
    67806780    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    67816781    break;
     
    67846784
    67856785/* Line 1806 of yacc.c  */
    6786 #line 1383 "parser.yy"
     6786#line 1384 "parser.yy"
    67876787    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    67886788    break;
     
    67916791
    67926792/* Line 1806 of yacc.c  */
    6793 #line 1385 "parser.yy"
     6793#line 1386 "parser.yy"
    67946794    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    67956795    break;
     
    67986798
    67996799/* Line 1806 of yacc.c  */
    6800 #line 1387 "parser.yy"
     6800#line 1388 "parser.yy"
    68016801    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    68026802    break;
     
    68056805
    68066806/* Line 1806 of yacc.c  */
    6807 #line 1389 "parser.yy"
     6807#line 1390 "parser.yy"
    68086808    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    68096809    break;
     
    68126812
    68136813/* Line 1806 of yacc.c  */
    6814 #line 1396 "parser.yy"
     6814#line 1397 "parser.yy"
    68156815    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68166816    break;
     
    68196819
    68206820/* Line 1806 of yacc.c  */
    6821 #line 1398 "parser.yy"
     6821#line 1399 "parser.yy"
    68226822    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68236823    break;
     
    68266826
    68276827/* Line 1806 of yacc.c  */
    6828 #line 1400 "parser.yy"
     6828#line 1401 "parser.yy"
    68296829    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68306830    break;
     
    68336833
    68346834/* Line 1806 of yacc.c  */
    6835 #line 1402 "parser.yy"
     6835#line 1403 "parser.yy"
    68366836    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    68376837    break;
     
    68406840
    68416841/* Line 1806 of yacc.c  */
    6842 #line 1408 "parser.yy"
     6842#line 1409 "parser.yy"
    68436843    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68446844    break;
     
    68476847
    68486848/* Line 1806 of yacc.c  */
    6849 #line 1415 "parser.yy"
     6849#line 1416 "parser.yy"
    68506850    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68516851    break;
     
    68546854
    68556855/* Line 1806 of yacc.c  */
    6856 #line 1417 "parser.yy"
     6856#line 1418 "parser.yy"
    68576857    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68586858    break;
     
    68616861
    68626862/* Line 1806 of yacc.c  */
    6863 #line 1419 "parser.yy"
     6863#line 1420 "parser.yy"
    68646864    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    68656865    break;
     
    68686868
    68696869/* Line 1806 of yacc.c  */
    6870 #line 1424 "parser.yy"
     6870#line 1425 "parser.yy"
    68716871    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    68726872    break;
     
    68756875
    68766876/* Line 1806 of yacc.c  */
    6877 #line 1426 "parser.yy"
     6877#line 1427 "parser.yy"
    68786878    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    68796879    break;
     
    68826882
    68836883/* Line 1806 of yacc.c  */
    6884 #line 1428 "parser.yy"
     6884#line 1429 "parser.yy"
    68856885    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    68866886    break;
     
    68896889
    68906890/* Line 1806 of yacc.c  */
    6891 #line 1430 "parser.yy"
     6891#line 1431 "parser.yy"
    68926892    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    68936893    break;
     
    68966896
    68976897/* Line 1806 of yacc.c  */
    6898 #line 1436 "parser.yy"
     6898#line 1437 "parser.yy"
    68996899    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69006900    break;
     
    69036903
    69046904/* Line 1806 of yacc.c  */
    6905 #line 1438 "parser.yy"
     6905#line 1439 "parser.yy"
    69066906    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69076907    break;
     
    69106910
    69116911/* Line 1806 of yacc.c  */
    6912 #line 1440 "parser.yy"
     6912#line 1441 "parser.yy"
    69136913    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69146914    break;
     
    69176917
    69186918/* Line 1806 of yacc.c  */
    6919 #line 1446 "parser.yy"
     6919#line 1447 "parser.yy"
    69206920    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69216921    break;
     
    69246924
    69256925/* Line 1806 of yacc.c  */
    6926 #line 1448 "parser.yy"
     6926#line 1449 "parser.yy"
    69276927    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69286928    break;
     
    69316931
    69326932/* Line 1806 of yacc.c  */
    6933 #line 1454 "parser.yy"
     6933#line 1455 "parser.yy"
    69346934    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69356935    break;
     
    69386938
    69396939/* Line 1806 of yacc.c  */
    6940 #line 1456 "parser.yy"
     6940#line 1457 "parser.yy"
    69416941    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69426942    break;
     
    69456945
    69466946/* Line 1806 of yacc.c  */
    6947 #line 1458 "parser.yy"
     6947#line 1459 "parser.yy"
    69486948    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69496949    break;
     
    69526952
    69536953/* Line 1806 of yacc.c  */
    6954 #line 1463 "parser.yy"
     6954#line 1464 "parser.yy"
    69556955    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    69566956    break;
     
    69596959
    69606960/* Line 1806 of yacc.c  */
    6961 #line 1465 "parser.yy"
     6961#line 1466 "parser.yy"
    69626962    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69636963    break;
     
    69666966
    69676967/* Line 1806 of yacc.c  */
    6968 #line 1467 "parser.yy"
     6968#line 1468 "parser.yy"
    69696969    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69706970    break;
     
    69736973
    69746974/* Line 1806 of yacc.c  */
    6975 #line 1477 "parser.yy"
     6975#line 1478 "parser.yy"
    69766976    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
    69776977    break;
     
    69806980
    69816981/* Line 1806 of yacc.c  */
    6982 #line 1479 "parser.yy"
     6982#line 1480 "parser.yy"
    69836983    {
    69846984                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    69906990
    69916991/* Line 1806 of yacc.c  */
    6992 #line 1484 "parser.yy"
     6992#line 1485 "parser.yy"
    69936993    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    69946994    break;
     
    69976997
    69986998/* Line 1806 of yacc.c  */
    6999 #line 1486 "parser.yy"
     6999#line 1487 "parser.yy"
    70007000    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
    70017001    break;
     
    70047004
    70057005/* Line 1806 of yacc.c  */
    7006 #line 1488 "parser.yy"
     7006#line 1489 "parser.yy"
    70077007    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    70087008    break;
     
    70117011
    70127012/* Line 1806 of yacc.c  */
    7013 #line 1490 "parser.yy"
     7013#line 1491 "parser.yy"
    70147014    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    70157015    break;
     
    70187018
    70197019/* Line 1806 of yacc.c  */
    7020 #line 1495 "parser.yy"
     7020#line 1496 "parser.yy"
    70217021    { (yyval.aggKey) = DeclarationNode::Struct; }
    70227022    break;
     
    70257025
    70267026/* Line 1806 of yacc.c  */
    7027 #line 1497 "parser.yy"
     7027#line 1498 "parser.yy"
    70287028    { (yyval.aggKey) = DeclarationNode::Union; }
    70297029    break;
     
    70327032
    70337033/* Line 1806 of yacc.c  */
    7034 #line 1502 "parser.yy"
     7034#line 1503 "parser.yy"
    70357035    { (yyval.decl) = 0; }
    70367036    break;
     
    70397039
    70407040/* Line 1806 of yacc.c  */
    7041 #line 1504 "parser.yy"
     7041#line 1505 "parser.yy"
    70427042    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    70437043    break;
     
    70467046
    70477047/* Line 1806 of yacc.c  */
    7048 #line 1510 "parser.yy"
     7048#line 1511 "parser.yy"
    70497049    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    70507050    break;
     
    70537053
    70547054/* Line 1806 of yacc.c  */
    7055 #line 1513 "parser.yy"
     7055#line 1514 "parser.yy"
    70567056    {   // mark all fields in list
    70577057                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    70647064
    70657065/* Line 1806 of yacc.c  */
    7066 #line 1523 "parser.yy"
     7066#line 1524 "parser.yy"
    70677067    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    70687068    break;
     
    70717071
    70727072/* Line 1806 of yacc.c  */
    7073 #line 1525 "parser.yy"
     7073#line 1526 "parser.yy"
    70747074    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    70757075    break;
     
    70787078
    70797079/* Line 1806 of yacc.c  */
    7080 #line 1527 "parser.yy"
     7080#line 1528 "parser.yy"
    70817081    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70827082    break;
     
    70857085
    70867086/* Line 1806 of yacc.c  */
    7087 #line 1532 "parser.yy"
     7087#line 1533 "parser.yy"
    70887088    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70897089    break;
     
    70927092
    70937093/* Line 1806 of yacc.c  */
    7094 #line 1534 "parser.yy"
     7094#line 1535 "parser.yy"
    70957095    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    70967096    break;
     
    70997099
    71007100/* Line 1806 of yacc.c  */
    7101 #line 1539 "parser.yy"
     7101#line 1540 "parser.yy"
    71027102    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    71037103    break;
     
    71067106
    71077107/* Line 1806 of yacc.c  */
    7108 #line 1541 "parser.yy"
     7108#line 1542 "parser.yy"
    71097109    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    71107110    break;
     
    71137113
    71147114/* Line 1806 of yacc.c  */
    7115 #line 1544 "parser.yy"
     7115#line 1545 "parser.yy"
    71167116    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71177117    break;
     
    71207120
    71217121/* Line 1806 of yacc.c  */
    7122 #line 1547 "parser.yy"
     7122#line 1548 "parser.yy"
    71237123    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71247124    break;
     
    71277127
    71287128/* Line 1806 of yacc.c  */
    7129 #line 1553 "parser.yy"
     7129#line 1554 "parser.yy"
    71307130    { (yyval.en) = 0; }
    71317131    break;
     
    71347134
    71357135/* Line 1806 of yacc.c  */
    7136 #line 1555 "parser.yy"
     7136#line 1556 "parser.yy"
    71377137    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71387138    break;
     
    71417141
    71427142/* Line 1806 of yacc.c  */
    7143 #line 1560 "parser.yy"
     7143#line 1561 "parser.yy"
    71447144    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71457145    break;
     
    71487148
    71497149/* Line 1806 of yacc.c  */
    7150 #line 1569 "parser.yy"
     7150#line 1570 "parser.yy"
    71517151    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
    71527152    break;
     
    71557155
    71567156/* Line 1806 of yacc.c  */
    7157 #line 1571 "parser.yy"
     7157#line 1572 "parser.yy"
    71587158    {
    71597159                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    71657165
    71667166/* Line 1806 of yacc.c  */
    7167 #line 1576 "parser.yy"
     7167#line 1577 "parser.yy"
    71687168    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    71697169    break;
     
    71727172
    71737173/* Line 1806 of yacc.c  */
    7174 #line 1578 "parser.yy"
     7174#line 1579 "parser.yy"
    71757175    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    71767176    break;
     
    71797179
    71807180/* Line 1806 of yacc.c  */
    7181 #line 1583 "parser.yy"
     7181#line 1584 "parser.yy"
    71827182    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    71837183    break;
     
    71867186
    71877187/* Line 1806 of yacc.c  */
    7188 #line 1585 "parser.yy"
     7188#line 1586 "parser.yy"
    71897189    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71907190    break;
     
    71937193
    71947194/* Line 1806 of yacc.c  */
    7195 #line 1590 "parser.yy"
     7195#line 1591 "parser.yy"
    71967196    { (yyval.en) = 0; }
    71977197    break;
     
    72007200
    72017201/* Line 1806 of yacc.c  */
    7202 #line 1592 "parser.yy"
     7202#line 1593 "parser.yy"
    72037203    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    72047204    break;
     
    72077207
    72087208/* Line 1806 of yacc.c  */
    7209 #line 1599 "parser.yy"
     7209#line 1600 "parser.yy"
    72107210    { (yyval.decl) = 0; }
    72117211    break;
     
    72147214
    72157215/* Line 1806 of yacc.c  */
    7216 #line 1607 "parser.yy"
     7216#line 1608 "parser.yy"
    72177217    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72187218    break;
     
    72217221
    72227222/* Line 1806 of yacc.c  */
    7223 #line 1609 "parser.yy"
     7223#line 1610 "parser.yy"
    72247224    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72257225    break;
     
    72287228
    72297229/* Line 1806 of yacc.c  */
    7230 #line 1611 "parser.yy"
     7230#line 1612 "parser.yy"
    72317231    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72327232    break;
     
    72357235
    72367236/* Line 1806 of yacc.c  */
    7237 #line 1619 "parser.yy"
     7237#line 1620 "parser.yy"
    72387238    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72397239    break;
     
    72427242
    72437243/* Line 1806 of yacc.c  */
    7244 #line 1621 "parser.yy"
     7244#line 1622 "parser.yy"
    72457245    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72467246    break;
     
    72497249
    72507250/* Line 1806 of yacc.c  */
    7251 #line 1623 "parser.yy"
     7251#line 1624 "parser.yy"
    72527252    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    72537253    break;
     
    72567256
    72577257/* Line 1806 of yacc.c  */
    7258 #line 1629 "parser.yy"
     7258#line 1630 "parser.yy"
    72597259    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72607260    break;
     
    72637263
    72647264/* Line 1806 of yacc.c  */
    7265 #line 1634 "parser.yy"
     7265#line 1635 "parser.yy"
    72667266    { (yyval.decl) = 0; }
    72677267    break;
     
    72707270
    72717271/* Line 1806 of yacc.c  */
    7272 #line 1641 "parser.yy"
     7272#line 1642 "parser.yy"
    72737273    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72747274    break;
     
    72777277
    72787278/* Line 1806 of yacc.c  */
    7279 #line 1648 "parser.yy"
     7279#line 1649 "parser.yy"
    72807280    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72817281    break;
     
    72847284
    72857285/* Line 1806 of yacc.c  */
    7286 #line 1650 "parser.yy"
     7286#line 1651 "parser.yy"
    72877287    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72887288    break;
     
    72917291
    72927292/* Line 1806 of yacc.c  */
    7293 #line 1659 "parser.yy"
     7293#line 1660 "parser.yy"
    72947294    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72957295    break;
     
    72987298
    72997299/* Line 1806 of yacc.c  */
    7300 #line 1662 "parser.yy"
     7300#line 1663 "parser.yy"
    73017301    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73027302    break;
     
    73057305
    73067306/* Line 1806 of yacc.c  */
    7307 #line 1664 "parser.yy"
     7307#line 1665 "parser.yy"
    73087308    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    73097309    break;
     
    73127312
    73137313/* Line 1806 of yacc.c  */
    7314 #line 1674 "parser.yy"
     7314#line 1675 "parser.yy"
    73157315    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73167316    break;
     
    73197319
    73207320/* Line 1806 of yacc.c  */
    7321 #line 1680 "parser.yy"
     7321#line 1681 "parser.yy"
    73227322    {
    73237323                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73297329
    73307330/* Line 1806 of yacc.c  */
    7331 #line 1685 "parser.yy"
     7331#line 1686 "parser.yy"
    73327332    {
    73337333                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73397339
    73407340/* Line 1806 of yacc.c  */
    7341 #line 1694 "parser.yy"
     7341#line 1695 "parser.yy"
    73427342    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73437343    break;
     
    73467346
    73477347/* Line 1806 of yacc.c  */
    7348 #line 1703 "parser.yy"
     7348#line 1704 "parser.yy"
    73497349    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73507350    break;
     
    73537353
    73547354/* Line 1806 of yacc.c  */
    7355 #line 1705 "parser.yy"
     7355#line 1706 "parser.yy"
    73567356    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    73577357    break;
     
    73607360
    73617361/* Line 1806 of yacc.c  */
    7362 #line 1730 "parser.yy"
     7362#line 1731 "parser.yy"
    73637363    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73647364    break;
     
    73677367
    73687368/* Line 1806 of yacc.c  */
    7369 #line 1738 "parser.yy"
     7369#line 1739 "parser.yy"
    73707370    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73717371    break;
     
    73747374
    73757375/* Line 1806 of yacc.c  */
    7376 #line 1743 "parser.yy"
     7376#line 1744 "parser.yy"
    73777377    { (yyval.in) = 0; }
    73787378    break;
     
    73817381
    73827382/* Line 1806 of yacc.c  */
    7383 #line 1745 "parser.yy"
     7383#line 1746 "parser.yy"
    73847384    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73857385    break;
     
    73887388
    73897389/* Line 1806 of yacc.c  */
    7390 #line 1747 "parser.yy"
     7390#line 1748 "parser.yy"
    73917391    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    73927392    break;
     
    73957395
    73967396/* Line 1806 of yacc.c  */
    7397 #line 1751 "parser.yy"
     7397#line 1752 "parser.yy"
    73987398    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    73997399    break;
     
    74027402
    74037403/* Line 1806 of yacc.c  */
    7404 #line 1752 "parser.yy"
     7404#line 1753 "parser.yy"
    74057405    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    74067406    break;
     
    74097409
    74107410/* Line 1806 of yacc.c  */
    7411 #line 1757 "parser.yy"
     7411#line 1758 "parser.yy"
    74127412    { (yyval.in) = 0; }
    74137413    break;
     
    74167416
    74177417/* Line 1806 of yacc.c  */
    7418 #line 1759 "parser.yy"
     7418#line 1760 "parser.yy"
    74197419    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    74207420    break;
     
    74237423
    74247424/* Line 1806 of yacc.c  */
    7425 #line 1760 "parser.yy"
     7425#line 1761 "parser.yy"
    74267426    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    74277427    break;
     
    74307430
    74317431/* Line 1806 of yacc.c  */
    7432 #line 1762 "parser.yy"
     7432#line 1763 "parser.yy"
    74337433    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74347434    break;
     
    74377437
    74387438/* Line 1806 of yacc.c  */
    7439 #line 1778 "parser.yy"
     7439#line 1779 "parser.yy"
    74407440    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    74417441    break;
     
    74447444
    74457445/* Line 1806 of yacc.c  */
    7446 #line 1784 "parser.yy"
     7446#line 1785 "parser.yy"
    74477447    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    74487448    break;
     
    74517451
    74527452/* Line 1806 of yacc.c  */
    7453 #line 1790 "parser.yy"
     7453#line 1791 "parser.yy"
    74547454    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    74557455    break;
     
    74587458
    74597459/* Line 1806 of yacc.c  */
    7460 #line 1793 "parser.yy"
     7460#line 1794 "parser.yy"
    74617461    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74627462    break;
     
    74657465
    74667466/* Line 1806 of yacc.c  */
    7467 #line 1795 "parser.yy"
     7467#line 1796 "parser.yy"
    74687468    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74697469    break;
     
    74727472
    74737473/* Line 1806 of yacc.c  */
    7474 #line 1797 "parser.yy"
     7474#line 1798 "parser.yy"
    74757475    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    74767476    break;
     
    74797479
    74807480/* Line 1806 of yacc.c  */
    7481 #line 1799 "parser.yy"
     7481#line 1800 "parser.yy"
    74827482    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74837483    break;
     
    74867486
    74877487/* Line 1806 of yacc.c  */
    7488 #line 1823 "parser.yy"
     7488#line 1824 "parser.yy"
    74897489    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74907490    break;
     
    74937493
    74947494/* Line 1806 of yacc.c  */
    7495 #line 1825 "parser.yy"
     7495#line 1826 "parser.yy"
    74967496    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74977497    break;
     
    75007500
    75017501/* Line 1806 of yacc.c  */
    7502 #line 1827 "parser.yy"
     7502#line 1828 "parser.yy"
    75037503    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    75047504    break;
     
    75077507
    75087508/* Line 1806 of yacc.c  */
    7509 #line 1833 "parser.yy"
     7509#line 1834 "parser.yy"
    75107510    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75117511    break;
     
    75147514
    75157515/* Line 1806 of yacc.c  */
    7516 #line 1835 "parser.yy"
     7516#line 1836 "parser.yy"
    75177517    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75187518    break;
     
    75217521
    75227522/* Line 1806 of yacc.c  */
    7523 #line 1840 "parser.yy"
     7523#line 1841 "parser.yy"
    75247524    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75257525    break;
     
    75287528
    75297529/* Line 1806 of yacc.c  */
    7530 #line 1846 "parser.yy"
     7530#line 1847 "parser.yy"
    75317531    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75327532    break;
     
    75357535
    75367536/* Line 1806 of yacc.c  */
    7537 #line 1851 "parser.yy"
     7537#line 1852 "parser.yy"
    75387538    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75397539    break;
     
    75427542
    75437543/* Line 1806 of yacc.c  */
    7544 #line 1853 "parser.yy"
     7544#line 1854 "parser.yy"
    75457545    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75467546    break;
     
    75497549
    75507550/* Line 1806 of yacc.c  */
    7551 #line 1859 "parser.yy"
     7551#line 1860 "parser.yy"
    75527552    { (yyval.tclass) = DeclarationNode::Otype; }
    75537553    break;
     
    75567556
    75577557/* Line 1806 of yacc.c  */
    7558 #line 1861 "parser.yy"
     7558#line 1862 "parser.yy"
    75597559    { (yyval.tclass) = DeclarationNode::Ftype; }
    75607560    break;
     
    75637563
    75647564/* Line 1806 of yacc.c  */
    7565 #line 1863 "parser.yy"
     7565#line 1864 "parser.yy"
    75667566    { (yyval.tclass) = DeclarationNode::Dtype; }
    75677567    break;
     
    75707570
    75717571/* Line 1806 of yacc.c  */
    7572 #line 1868 "parser.yy"
     7572#line 1869 "parser.yy"
    75737573    { (yyval.decl) = 0; }
    75747574    break;
     
    75777577
    75787578/* Line 1806 of yacc.c  */
    7579 #line 1870 "parser.yy"
     7579#line 1871 "parser.yy"
    75807580    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    75817581    break;
     
    75847584
    75857585/* Line 1806 of yacc.c  */
    7586 #line 1875 "parser.yy"
     7586#line 1876 "parser.yy"
    75877587    {
    75887588                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    75947594
    75957595/* Line 1806 of yacc.c  */
    7596 #line 1880 "parser.yy"
     7596#line 1881 "parser.yy"
    75977597    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    75987598    break;
     
    76017601
    76027602/* Line 1806 of yacc.c  */
    7603 #line 1882 "parser.yy"
     7603#line 1883 "parser.yy"
    76047604    { (yyval.decl) = 0; }
    76057605    break;
     
    76087608
    76097609/* Line 1806 of yacc.c  */
    7610 #line 1887 "parser.yy"
     7610#line 1888 "parser.yy"
    76117611    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    76127612    break;
     
    76157615
    76167616/* Line 1806 of yacc.c  */
    7617 #line 1890 "parser.yy"
     7617#line 1891 "parser.yy"
    76187618    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    76197619    break;
     
    76227622
    76237623/* Line 1806 of yacc.c  */
    7624 #line 1892 "parser.yy"
     7624#line 1893 "parser.yy"
    76257625    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    76267626    break;
     
    76297629
    76307630/* Line 1806 of yacc.c  */
    7631 #line 1897 "parser.yy"
     7631#line 1898 "parser.yy"
    76327632    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76337633    break;
     
    76367636
    76377637/* Line 1806 of yacc.c  */
    7638 #line 1899 "parser.yy"
     7638#line 1900 "parser.yy"
    76397639    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76407640    break;
     
    76437643
    76447644/* Line 1806 of yacc.c  */
    7645 #line 1901 "parser.yy"
     7645#line 1902 "parser.yy"
    76467646    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76477647    break;
     
    76507650
    76517651/* Line 1806 of yacc.c  */
    7652 #line 1906 "parser.yy"
     7652#line 1907 "parser.yy"
    76537653    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76547654    break;
     
    76577657
    76587658/* Line 1806 of yacc.c  */
    7659 #line 1908 "parser.yy"
     7659#line 1909 "parser.yy"
    76607660    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76617661    break;
     
    76647664
    76657665/* Line 1806 of yacc.c  */
    7666 #line 1913 "parser.yy"
     7666#line 1914 "parser.yy"
    76677667    {
    76687668                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76747674
    76757675/* Line 1806 of yacc.c  */
    7676 #line 1918 "parser.yy"
     7676#line 1919 "parser.yy"
    76777677    {
    76787678                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76847684
    76857685/* Line 1806 of yacc.c  */
    7686 #line 1926 "parser.yy"
     7686#line 1927 "parser.yy"
    76877687    {
    76887688                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76947694
    76957695/* Line 1806 of yacc.c  */
    7696 #line 1931 "parser.yy"
     7696#line 1932 "parser.yy"
    76977697    {
    76987698                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    77047704
    77057705/* Line 1806 of yacc.c  */
    7706 #line 1936 "parser.yy"
     7706#line 1937 "parser.yy"
    77077707    {
    77087708                        typedefTable.leaveTrait();
     
    77157715
    77167716/* Line 1806 of yacc.c  */
    7717 #line 1946 "parser.yy"
     7717#line 1947 "parser.yy"
    77187718    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77197719    break;
     
    77227722
    77237723/* Line 1806 of yacc.c  */
    7724 #line 1956 "parser.yy"
     7724#line 1957 "parser.yy"
    77257725    {
    77267726                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77327732
    77337733/* Line 1806 of yacc.c  */
    7734 #line 1961 "parser.yy"
     7734#line 1962 "parser.yy"
    77357735    {
    77367736                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77427742
    77437743/* Line 1806 of yacc.c  */
    7744 #line 1966 "parser.yy"
     7744#line 1967 "parser.yy"
    77457745    {
    77467746                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77527752
    77537753/* Line 1806 of yacc.c  */
    7754 #line 1974 "parser.yy"
     7754#line 1975 "parser.yy"
    77557755    {
    77567756                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77627762
    77637763/* Line 1806 of yacc.c  */
    7764 #line 1979 "parser.yy"
     7764#line 1980 "parser.yy"
    77657765    {
    77667766                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77727772
    77737773/* Line 1806 of yacc.c  */
    7774 #line 1989 "parser.yy"
     7774#line 1990 "parser.yy"
    77757775    {}
    77767776    break;
     
    77797779
    77807780/* Line 1806 of yacc.c  */
    7781 #line 1991 "parser.yy"
     7781#line 1992 "parser.yy"
    77827782    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
    77837783    break;
     
    77867786
    77877787/* Line 1806 of yacc.c  */
    7788 #line 1997 "parser.yy"
     7788#line 1998 "parser.yy"
    77897789    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77907790    break;
     
    77937793
    77947794/* Line 1806 of yacc.c  */
    7795 #line 2002 "parser.yy"
     7795#line 2003 "parser.yy"
    77967796    { (yyval.decl) = 0; }
    77977797    break;
     
    78007800
    78017801/* Line 1806 of yacc.c  */
    7802 #line 2010 "parser.yy"
     7802#line 2011 "parser.yy"
    78037803    {}
    78047804    break;
     
    78077807
    78087808/* Line 1806 of yacc.c  */
    7809 #line 2012 "parser.yy"
     7809#line 2013 "parser.yy"
    78107810    {
    78117811                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     
    78177817
    78187818/* Line 1806 of yacc.c  */
    7819 #line 2017 "parser.yy"
     7819#line 2018 "parser.yy"
    78207820    {
    78217821                        linkage = linkageStack.top();
     
    78287828
    78297829/* Line 1806 of yacc.c  */
    7830 #line 2023 "parser.yy"
     7830#line 2024 "parser.yy"
    78317831    {   // mark all fields in list
    78327832                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    78397839
    78407840/* Line 1806 of yacc.c  */
    7841 #line 2038 "parser.yy"
     7841#line 2039 "parser.yy"
    78427842    {
    78437843                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78507850
    78517851/* Line 1806 of yacc.c  */
    7852 #line 2044 "parser.yy"
     7852#line 2045 "parser.yy"
    78537853    {
    78547854                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78617861
    78627862/* Line 1806 of yacc.c  */
    7863 #line 2053 "parser.yy"
     7863#line 2054 "parser.yy"
    78647864    {
    78657865                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78727872
    78737873/* Line 1806 of yacc.c  */
    7874 #line 2059 "parser.yy"
     7874#line 2060 "parser.yy"
    78757875    {
    78767876                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78837883
    78847884/* Line 1806 of yacc.c  */
    7885 #line 2065 "parser.yy"
     7885#line 2066 "parser.yy"
    78867886    {
    78877887                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78947894
    78957895/* Line 1806 of yacc.c  */
    7896 #line 2071 "parser.yy"
     7896#line 2072 "parser.yy"
    78977897    {
    78987898                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79057905
    79067906/* Line 1806 of yacc.c  */
    7907 #line 2077 "parser.yy"
     7907#line 2078 "parser.yy"
    79087908    {
    79097909                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79167916
    79177917/* Line 1806 of yacc.c  */
    7918 #line 2085 "parser.yy"
     7918#line 2086 "parser.yy"
    79197919    {
    79207920                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79277927
    79287928/* Line 1806 of yacc.c  */
    7929 #line 2091 "parser.yy"
     7929#line 2092 "parser.yy"
    79307930    {
    79317931                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79387938
    79397939/* Line 1806 of yacc.c  */
    7940 #line 2099 "parser.yy"
     7940#line 2100 "parser.yy"
    79417941    {
    79427942                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79497949
    79507950/* Line 1806 of yacc.c  */
    7951 #line 2105 "parser.yy"
     7951#line 2106 "parser.yy"
    79527952    {
    79537953                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79607960
    79617961/* Line 1806 of yacc.c  */
    7962 #line 2120 "parser.yy"
     7962#line 2121 "parser.yy"
    79637963    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    79647964    break;
     
    79677967
    79687968/* Line 1806 of yacc.c  */
    7969 #line 2125 "parser.yy"
     7969#line 2126 "parser.yy"
    79707970    { delete (yyvsp[(3) - (5)].str); }
    79717971    break;
     
    79747974
    79757975/* Line 1806 of yacc.c  */
    7976 #line 2130 "parser.yy"
     7976#line 2131 "parser.yy"
    79777977    { (yyval.decl) = 0; }
    79787978    break;
     
    79817981
    79827982/* Line 1806 of yacc.c  */
    7983 #line 2137 "parser.yy"
     7983#line 2138 "parser.yy"
    79847984    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    79857985    break;
     
    79887988
    79897989/* Line 1806 of yacc.c  */
    7990 #line 2143 "parser.yy"
     7990#line 2144 "parser.yy"
    79917991    { (yyval.decl) = 0; }
    79927992    break;
     
    79957995
    79967996/* Line 1806 of yacc.c  */
    7997 #line 2154 "parser.yy"
     7997#line 2155 "parser.yy"
    79987998    { delete (yyvsp[(3) - (4)].en); }
    79997999    break;
     
    80028002
    80038003/* Line 1806 of yacc.c  */
    8004 #line 2158 "parser.yy"
     8004#line 2159 "parser.yy"
    80058005    { delete (yyvsp[(1) - (1)].tok); }
    80068006    break;
    80078007
    80088008  case 560:
    8009 
    8010 /* Line 1806 of yacc.c  */
    8011 #line 2159 "parser.yy"
    8012     { delete (yyvsp[(1) - (1)].decl); }
    8013     break;
    8014 
    8015   case 561:
    80168009
    80178010/* Line 1806 of yacc.c  */
     
    80208013    break;
    80218014
    8022   case 562:
     8015  case 561:
    80238016
    80248017/* Line 1806 of yacc.c  */
     
    80278020    break;
    80288021
     8022  case 562:
     8023
     8024/* Line 1806 of yacc.c  */
     8025#line 2162 "parser.yy"
     8026    { delete (yyvsp[(1) - (1)].decl); }
     8027    break;
     8028
    80298029  case 563:
    80308030
    80318031/* Line 1806 of yacc.c  */
    8032 #line 2196 "parser.yy"
     8032#line 2197 "parser.yy"
    80338033    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80348034    break;
     
    80378037
    80388038/* Line 1806 of yacc.c  */
    8039 #line 2199 "parser.yy"
     8039#line 2200 "parser.yy"
    80408040    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80418041    break;
     
    80448044
    80458045/* Line 1806 of yacc.c  */
    8046 #line 2201 "parser.yy"
     8046#line 2202 "parser.yy"
    80478047    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80488048    break;
     
    80518051
    80528052/* Line 1806 of yacc.c  */
    8053 #line 2206 "parser.yy"
     8053#line 2207 "parser.yy"
    80548054    {
    80558055                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80618061
    80628062/* Line 1806 of yacc.c  */
    8063 #line 2211 "parser.yy"
     8063#line 2212 "parser.yy"
    80648064    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80658065    break;
     
    80688068
    80698069/* Line 1806 of yacc.c  */
    8070 #line 2216 "parser.yy"
     8070#line 2217 "parser.yy"
    80718071    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80728072    break;
     
    80758075
    80768076/* Line 1806 of yacc.c  */
    8077 #line 2218 "parser.yy"
     8077#line 2219 "parser.yy"
    80788078    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80798079    break;
     
    80828082
    80838083/* Line 1806 of yacc.c  */
    8084 #line 2220 "parser.yy"
     8084#line 2221 "parser.yy"
    80858085    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80868086    break;
     
    80898089
    80908090/* Line 1806 of yacc.c  */
    8091 #line 2225 "parser.yy"
     8091#line 2226 "parser.yy"
    80928092    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80938093    break;
     
    80968096
    80978097/* Line 1806 of yacc.c  */
    8098 #line 2227 "parser.yy"
     8098#line 2228 "parser.yy"
    80998099    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81008100    break;
     
    81038103
    81048104/* Line 1806 of yacc.c  */
    8105 #line 2229 "parser.yy"
     8105#line 2230 "parser.yy"
    81068106    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81078107    break;
     
    81108110
    81118111/* Line 1806 of yacc.c  */
    8112 #line 2231 "parser.yy"
     8112#line 2232 "parser.yy"
    81138113    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81148114    break;
     
    81178117
    81188118/* Line 1806 of yacc.c  */
    8119 #line 2236 "parser.yy"
     8119#line 2237 "parser.yy"
    81208120    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81218121    break;
     
    81248124
    81258125/* Line 1806 of yacc.c  */
    8126 #line 2238 "parser.yy"
     8126#line 2239 "parser.yy"
    81278127    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81288128    break;
     
    81318131
    81328132/* Line 1806 of yacc.c  */
    8133 #line 2247 "parser.yy"
     8133#line 2248 "parser.yy"
    81348134    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81358135    break;
     
    81388138
    81398139/* Line 1806 of yacc.c  */
    8140 #line 2250 "parser.yy"
     8140#line 2251 "parser.yy"
    81418141    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81428142    break;
     
    81458145
    81468146/* Line 1806 of yacc.c  */
    8147 #line 2255 "parser.yy"
     8147#line 2256 "parser.yy"
    81488148    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81498149    break;
     
    81528152
    81538153/* Line 1806 of yacc.c  */
    8154 #line 2257 "parser.yy"
     8154#line 2258 "parser.yy"
    81558155    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81568156    break;
     
    81598159
    81608160/* Line 1806 of yacc.c  */
    8161 #line 2259 "parser.yy"
     8161#line 2260 "parser.yy"
    81628162    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81638163    break;
     
    81668166
    81678167/* Line 1806 of yacc.c  */
    8168 #line 2264 "parser.yy"
     8168#line 2265 "parser.yy"
    81698169    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81708170    break;
     
    81738173
    81748174/* Line 1806 of yacc.c  */
    8175 #line 2266 "parser.yy"
     8175#line 2267 "parser.yy"
    81768176    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81778177    break;
     
    81808180
    81818181/* Line 1806 of yacc.c  */
    8182 #line 2268 "parser.yy"
     8182#line 2269 "parser.yy"
    81838183    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81848184    break;
     
    81878187
    81888188/* Line 1806 of yacc.c  */
    8189 #line 2273 "parser.yy"
     8189#line 2274 "parser.yy"
    81908190    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81918191    break;
     
    81948194
    81958195/* Line 1806 of yacc.c  */
    8196 #line 2275 "parser.yy"
     8196#line 2276 "parser.yy"
    81978197    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81988198    break;
     
    82018201
    82028202/* Line 1806 of yacc.c  */
    8203 #line 2277 "parser.yy"
     8203#line 2278 "parser.yy"
    82048204    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82058205    break;
     
    82088208
    82098209/* Line 1806 of yacc.c  */
    8210 #line 2292 "parser.yy"
     8210#line 2293 "parser.yy"
    82118211    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    82128212    break;
     
    82158215
    82168216/* Line 1806 of yacc.c  */
    8217 #line 2294 "parser.yy"
     8217#line 2295 "parser.yy"
    82188218    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    82198219    break;
     
    82228222
    82238223/* Line 1806 of yacc.c  */
    8224 #line 2296 "parser.yy"
     8224#line 2297 "parser.yy"
    82258225    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82268226    break;
     
    82298229
    82308230/* Line 1806 of yacc.c  */
    8231 #line 2301 "parser.yy"
     8231#line 2302 "parser.yy"
    82328232    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82338233    break;
     
    82368236
    82378237/* Line 1806 of yacc.c  */
    8238 #line 2303 "parser.yy"
     8238#line 2304 "parser.yy"
    82398239    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82408240    break;
     
    82438243
    82448244/* Line 1806 of yacc.c  */
    8245 #line 2305 "parser.yy"
     8245#line 2306 "parser.yy"
    82468246    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82478247    break;
     
    82508250
    82518251/* Line 1806 of yacc.c  */
    8252 #line 2310 "parser.yy"
     8252#line 2311 "parser.yy"
    82538253    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82548254    break;
     
    82578257
    82588258/* Line 1806 of yacc.c  */
    8259 #line 2312 "parser.yy"
     8259#line 2313 "parser.yy"
    82608260    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82618261    break;
     
    82648264
    82658265/* Line 1806 of yacc.c  */
    8266 #line 2314 "parser.yy"
     8266#line 2315 "parser.yy"
    82678267    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82688268    break;
     
    82718271
    82728272/* Line 1806 of yacc.c  */
    8273 #line 2329 "parser.yy"
     8273#line 2330 "parser.yy"
    82748274    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82758275    break;
     
    82788278
    82798279/* Line 1806 of yacc.c  */
    8280 #line 2332 "parser.yy"
     8280#line 2333 "parser.yy"
    82818281    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82828282    break;
     
    82858285
    82868286/* Line 1806 of yacc.c  */
    8287 #line 2334 "parser.yy"
     8287#line 2335 "parser.yy"
    82888288    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82898289    break;
     
    82928292
    82938293/* Line 1806 of yacc.c  */
    8294 #line 2340 "parser.yy"
     8294#line 2341 "parser.yy"
    82958295    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82968296    break;
     
    82998299
    83008300/* Line 1806 of yacc.c  */
    8301 #line 2345 "parser.yy"
     8301#line 2346 "parser.yy"
    83028302    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83038303    break;
     
    83068306
    83078307/* Line 1806 of yacc.c  */
    8308 #line 2347 "parser.yy"
     8308#line 2348 "parser.yy"
    83098309    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83108310    break;
     
    83138313
    83148314/* Line 1806 of yacc.c  */
    8315 #line 2349 "parser.yy"
     8315#line 2350 "parser.yy"
    83168316    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83178317    break;
     
    83208320
    83218321/* Line 1806 of yacc.c  */
    8322 #line 2354 "parser.yy"
     8322#line 2355 "parser.yy"
    83238323    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83248324    break;
     
    83278327
    83288328/* Line 1806 of yacc.c  */
    8329 #line 2356 "parser.yy"
     8329#line 2357 "parser.yy"
    83308330    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83318331    break;
     
    83348334
    83358335/* Line 1806 of yacc.c  */
    8336 #line 2358 "parser.yy"
     8336#line 2359 "parser.yy"
    83378337    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83388338    break;
     
    83418341
    83428342/* Line 1806 of yacc.c  */
    8343 #line 2360 "parser.yy"
     8343#line 2361 "parser.yy"
    83448344    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83458345    break;
     
    83488348
    83498349/* Line 1806 of yacc.c  */
    8350 #line 2365 "parser.yy"
     8350#line 2366 "parser.yy"
    83518351    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83528352    break;
     
    83558355
    83568356/* Line 1806 of yacc.c  */
    8357 #line 2367 "parser.yy"
     8357#line 2368 "parser.yy"
    83588358    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83598359    break;
     
    83628362
    83638363/* Line 1806 of yacc.c  */
    8364 #line 2369 "parser.yy"
     8364#line 2370 "parser.yy"
    83658365    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83668366    break;
     
    83698369
    83708370/* Line 1806 of yacc.c  */
    8371 #line 2379 "parser.yy"
     8371#line 2380 "parser.yy"
    83728372    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83738373    break;
     
    83768376
    83778377/* Line 1806 of yacc.c  */
    8378 #line 2382 "parser.yy"
     8378#line 2383 "parser.yy"
    83798379    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83808380    break;
     
    83838383
    83848384/* Line 1806 of yacc.c  */
    8385 #line 2384 "parser.yy"
     8385#line 2385 "parser.yy"
    83868386    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83878387    break;
     
    83908390
    83918391/* Line 1806 of yacc.c  */
    8392 #line 2389 "parser.yy"
     8392#line 2390 "parser.yy"
    83938393    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83948394    break;
     
    83978397
    83988398/* Line 1806 of yacc.c  */
    8399 #line 2391 "parser.yy"
     8399#line 2392 "parser.yy"
    84008400    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84018401    break;
     
    84048404
    84058405/* Line 1806 of yacc.c  */
    8406 #line 2393 "parser.yy"
     8406#line 2394 "parser.yy"
    84078407    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84088408    break;
     
    84118411
    84128412/* Line 1806 of yacc.c  */
    8413 #line 2398 "parser.yy"
     8413#line 2399 "parser.yy"
    84148414    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84158415    break;
     
    84188418
    84198419/* Line 1806 of yacc.c  */
    8420 #line 2400 "parser.yy"
     8420#line 2401 "parser.yy"
    84218421    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84228422    break;
     
    84258425
    84268426/* Line 1806 of yacc.c  */
    8427 #line 2402 "parser.yy"
     8427#line 2403 "parser.yy"
    84288428    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84298429    break;
     
    84328432
    84338433/* Line 1806 of yacc.c  */
    8434 #line 2404 "parser.yy"
     8434#line 2405 "parser.yy"
    84358435    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84368436    break;
     
    84398439
    84408440/* Line 1806 of yacc.c  */
    8441 #line 2409 "parser.yy"
     8441#line 2410 "parser.yy"
    84428442    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84438443    break;
     
    84468446
    84478447/* Line 1806 of yacc.c  */
    8448 #line 2411 "parser.yy"
     8448#line 2412 "parser.yy"
    84498449    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84508450    break;
     
    84538453
    84548454/* Line 1806 of yacc.c  */
    8455 #line 2413 "parser.yy"
     8455#line 2414 "parser.yy"
    84568456    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84578457    break;
     
    84608460
    84618461/* Line 1806 of yacc.c  */
    8462 #line 2444 "parser.yy"
     8462#line 2445 "parser.yy"
    84638463    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84648464    break;
     
    84678467
    84688468/* Line 1806 of yacc.c  */
    8469 #line 2447 "parser.yy"
     8469#line 2448 "parser.yy"
    84708470    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84718471    break;
     
    84748474
    84758475/* Line 1806 of yacc.c  */
    8476 #line 2449 "parser.yy"
     8476#line 2450 "parser.yy"
    84778477    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84788478    break;
     
    84818481
    84828482/* Line 1806 of yacc.c  */
    8483 #line 2454 "parser.yy"
     8483#line 2455 "parser.yy"
    84848484    {
    84858485                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84918491
    84928492/* Line 1806 of yacc.c  */
    8493 #line 2459 "parser.yy"
     8493#line 2460 "parser.yy"
    84948494    {
    84958495                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85018501
    85028502/* Line 1806 of yacc.c  */
    8503 #line 2467 "parser.yy"
     8503#line 2468 "parser.yy"
    85048504    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85058505    break;
     
    85088508
    85098509/* Line 1806 of yacc.c  */
    8510 #line 2469 "parser.yy"
     8510#line 2470 "parser.yy"
    85118511    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85128512    break;
     
    85158515
    85168516/* Line 1806 of yacc.c  */
    8517 #line 2471 "parser.yy"
     8517#line 2472 "parser.yy"
    85188518    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85198519    break;
     
    85228522
    85238523/* Line 1806 of yacc.c  */
    8524 #line 2476 "parser.yy"
     8524#line 2477 "parser.yy"
    85258525    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    85268526    break;
     
    85298529
    85308530/* Line 1806 of yacc.c  */
    8531 #line 2478 "parser.yy"
     8531#line 2479 "parser.yy"
    85328532    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85338533    break;
     
    85368536
    85378537/* Line 1806 of yacc.c  */
    8538 #line 2483 "parser.yy"
     8538#line 2484 "parser.yy"
    85398539    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85408540    break;
     
    85438543
    85448544/* Line 1806 of yacc.c  */
    8545 #line 2485 "parser.yy"
     8545#line 2486 "parser.yy"
    85468546    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85478547    break;
     
    85508550
    85518551/* Line 1806 of yacc.c  */
    8552 #line 2500 "parser.yy"
     8552#line 2501 "parser.yy"
    85538553    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85548554    break;
     
    85578557
    85588558/* Line 1806 of yacc.c  */
    8559 #line 2502 "parser.yy"
     8559#line 2503 "parser.yy"
    85608560    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85618561    break;
     
    85648564
    85658565/* Line 1806 of yacc.c  */
    8566 #line 2507 "parser.yy"
     8566#line 2508 "parser.yy"
    85678567    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85688568    break;
     
    85718571
    85728572/* Line 1806 of yacc.c  */
    8573 #line 2509 "parser.yy"
     8573#line 2510 "parser.yy"
    85748574    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85758575    break;
     
    85788578
    85798579/* Line 1806 of yacc.c  */
    8580 #line 2511 "parser.yy"
     8580#line 2512 "parser.yy"
    85818581    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85828582    break;
     
    85858585
    85868586/* Line 1806 of yacc.c  */
    8587 #line 2513 "parser.yy"
     8587#line 2514 "parser.yy"
    85888588    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85898589    break;
     
    85928592
    85938593/* Line 1806 of yacc.c  */
    8594 #line 2515 "parser.yy"
     8594#line 2516 "parser.yy"
    85958595    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85968596    break;
     
    85998599
    86008600/* Line 1806 of yacc.c  */
    8601 #line 2521 "parser.yy"
     8601#line 2522 "parser.yy"
    86028602    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86038603    break;
     
    86068606
    86078607/* Line 1806 of yacc.c  */
    8608 #line 2523 "parser.yy"
     8608#line 2524 "parser.yy"
    86098609    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86108610    break;
     
    86138613
    86148614/* Line 1806 of yacc.c  */
    8615 #line 2525 "parser.yy"
     8615#line 2526 "parser.yy"
    86168616    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86178617    break;
     
    86208620
    86218621/* Line 1806 of yacc.c  */
    8622 #line 2530 "parser.yy"
     8622#line 2531 "parser.yy"
    86238623    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    86248624    break;
     
    86278627
    86288628/* Line 1806 of yacc.c  */
    8629 #line 2532 "parser.yy"
     8629#line 2533 "parser.yy"
    86308630    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86318631    break;
     
    86348634
    86358635/* Line 1806 of yacc.c  */
    8636 #line 2534 "parser.yy"
     8636#line 2535 "parser.yy"
    86378637    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86388638    break;
     
    86418641
    86428642/* Line 1806 of yacc.c  */
    8643 #line 2540 "parser.yy"
     8643#line 2541 "parser.yy"
    86448644    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86458645    break;
     
    86488648
    86498649/* Line 1806 of yacc.c  */
    8650 #line 2542 "parser.yy"
     8650#line 2543 "parser.yy"
    86518651    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    86528652    break;
     
    86558655
    86568656/* Line 1806 of yacc.c  */
    8657 #line 2548 "parser.yy"
     8657#line 2549 "parser.yy"
    86588658    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    86598659    break;
     
    86628662
    86638663/* Line 1806 of yacc.c  */
    8664 #line 2550 "parser.yy"
     8664#line 2551 "parser.yy"
    86658665    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    86668666    break;
     
    86698669
    86708670/* Line 1806 of yacc.c  */
    8671 #line 2552 "parser.yy"
     8671#line 2553 "parser.yy"
    86728672    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    86738673    break;
     
    86768676
    86778677/* Line 1806 of yacc.c  */
    8678 #line 2554 "parser.yy"
     8678#line 2555 "parser.yy"
    86798679    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    86808680    break;
     
    86838683
    86848684/* Line 1806 of yacc.c  */
    8685 #line 2569 "parser.yy"
     8685#line 2570 "parser.yy"
    86868686    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86878687    break;
     
    86908690
    86918691/* Line 1806 of yacc.c  */
    8692 #line 2571 "parser.yy"
     8692#line 2572 "parser.yy"
    86938693    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86948694    break;
     
    86978697
    86988698/* Line 1806 of yacc.c  */
    8699 #line 2576 "parser.yy"
     8699#line 2577 "parser.yy"
    87008700    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    87018701    break;
     
    87048704
    87058705/* Line 1806 of yacc.c  */
    8706 #line 2578 "parser.yy"
     8706#line 2579 "parser.yy"
    87078707    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87088708    break;
     
    87118711
    87128712/* Line 1806 of yacc.c  */
    8713 #line 2580 "parser.yy"
     8713#line 2581 "parser.yy"
    87148714    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87158715    break;
     
    87188718
    87198719/* Line 1806 of yacc.c  */
    8720 #line 2582 "parser.yy"