Changes in / [fe7b281:d1fbaa78]


Ignore:
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • doc/user/user.tex

    rfe7b281 rd1fbaa78  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Thu Sep 29 11:50:28 2016
    14 %% Update Count     : 1325
     13%% Last Modified On : Sun Aug 14 08:23:06 2016
     14%% Update Count     : 1323
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    3333\usepackage{textcomp}
    3434\usepackage[latin1]{inputenc}
    35 
    3635\usepackage{fullpage,times,comment}
    3736\usepackage{epic,eepic}
     
    18541853case 1:  case 2:  case 3: ...
    18551854\end{lstlisting}
    1856 still works.
     1855still work.
    18571856Nevertheless, 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
     1858Therefore, 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=======
    18581860Therefore, 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
    18591862\begin{lstlisting}
    18601863®choose® ( i ) {
  • src/Parser/lex.cc

    rfe7b281 rd1fbaa78  
    14691469 * Created On       : Sat Sep 22 08:58:10 2001
    14701470 * Last Modified By : Peter A. Buhr
    1471  * Last Modified On : Tue Oct 18 22:19:37 2016
    1472  * Update Count     : 488
     1471 * Last Modified On : Wed Aug 24 13:27:04 2016
     1472 * Update Count     : 487
    14731473 */
    14741474#line 20 "lex.ll"
     
    15171517
    15181518// identifier, GCC: $ in identifier
     1519// quoted identifier
    15191520// attribute identifier, GCC: $ in identifier
    15201521// numeric constants, CFA: '_' in constant
     
    15311532
    15321533
    1533 #line 1534 "Parser/lex.cc"
     1534#line 1535 "Parser/lex.cc"
    15341535
    15351536#define INITIAL 0
     
    17231724        register int yy_act;
    17241725   
    1725 #line 136 "lex.ll"
     1726#line 139 "lex.ll"
    17261727
    17271728                                   /* line directives */
    1728 #line 1729 "Parser/lex.cc"
     1729#line 1730 "Parser/lex.cc"
    17291730
    17301731        if ( !(yy_init) )
     
    18231824/* rule 1 can match eol */
    18241825YY_RULE_SETUP
    1825 #line 138 "lex.ll"
     1826#line 141 "lex.ll"
    18261827{
    18271828        /* " stop highlighting */
     
    18491850/* rule 2 can match eol */
    18501851YY_RULE_SETUP
    1851 #line 160 "lex.ll"
     1852#line 163 "lex.ll"
    18521853;
    18531854        YY_BREAK
     
    18551856case 3:
    18561857YY_RULE_SETUP
    1857 #line 163 "lex.ll"
     1858#line 166 "lex.ll"
    18581859{ BEGIN COMMENT; }
    18591860        YY_BREAK
     
    18611862/* rule 4 can match eol */
    18621863YY_RULE_SETUP
    1863 #line 164 "lex.ll"
     1864#line 167 "lex.ll"
    18641865;
    18651866        YY_BREAK
    18661867case 5:
    18671868YY_RULE_SETUP
    1868 #line 165 "lex.ll"
     1869#line 168 "lex.ll"
    18691870{ BEGIN 0; }
    18701871        YY_BREAK
     
    18731874/* rule 6 can match eol */
    18741875YY_RULE_SETUP
    1875 #line 168 "lex.ll"
     1876#line 171 "lex.ll"
    18761877;
    18771878        YY_BREAK
     
    18791880case 7:
    18801881YY_RULE_SETUP
    1881 #line 171 "lex.ll"
     1882#line 174 "lex.ll"
    18821883{ WHITE_RETURN(' '); }
    18831884        YY_BREAK
    18841885case 8:
    18851886YY_RULE_SETUP
    1886 #line 172 "lex.ll"
     1887#line 175 "lex.ll"
    18871888{ WHITE_RETURN(' '); }
    18881889        YY_BREAK
     
    18901891/* rule 9 can match eol */
    18911892YY_RULE_SETUP
    1892 #line 173 "lex.ll"
     1893#line 176 "lex.ll"
    18931894{ NEWLINE_RETURN(); }
    18941895        YY_BREAK
     
    18961897case 10:
    18971898YY_RULE_SETUP
    1898 #line 176 "lex.ll"
     1899#line 179 "lex.ll"
    18991900{ KEYWORD_RETURN(ALIGNAS); }                    // C11
    19001901        YY_BREAK
    19011902case 11:
    19021903YY_RULE_SETUP
    1903 #line 177 "lex.ll"
     1904#line 180 "lex.ll"
    19041905{ KEYWORD_RETURN(ALIGNOF); }                    // C11
    19051906        YY_BREAK
    19061907case 12:
    19071908YY_RULE_SETUP
    1908 #line 178 "lex.ll"
     1909#line 181 "lex.ll"
    19091910{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    19101911        YY_BREAK
    19111912case 13:
    19121913YY_RULE_SETUP
    1913 #line 179 "lex.ll"
     1914#line 182 "lex.ll"
    19141915{ KEYWORD_RETURN(ALIGNOF); }                    // GCC
    19151916        YY_BREAK
    19161917case 14:
    19171918YY_RULE_SETUP
    1918 #line 180 "lex.ll"
     1919#line 183 "lex.ll"
    19191920{ KEYWORD_RETURN(ASM); }
    19201921        YY_BREAK
    19211922case 15:
    19221923YY_RULE_SETUP
    1923 #line 181 "lex.ll"
     1924#line 184 "lex.ll"
    19241925{ KEYWORD_RETURN(ASM); }                                // GCC
    19251926        YY_BREAK
    19261927case 16:
    19271928YY_RULE_SETUP
    1928 #line 182 "lex.ll"
     1929#line 185 "lex.ll"
    19291930{ KEYWORD_RETURN(ASM); }                                // GCC
    19301931        YY_BREAK
    19311932case 17:
    19321933YY_RULE_SETUP
    1933 #line 183 "lex.ll"
     1934#line 186 "lex.ll"
    19341935{ KEYWORD_RETURN(AT); }                                 // CFA
    19351936        YY_BREAK
    19361937case 18:
    19371938YY_RULE_SETUP
    1938 #line 184 "lex.ll"
     1939#line 187 "lex.ll"
    19391940{ KEYWORD_RETURN(ATOMIC); }                             // C11
    19401941        YY_BREAK
    19411942case 19:
    19421943YY_RULE_SETUP
    1943 #line 185 "lex.ll"
     1944#line 188 "lex.ll"
    19441945{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    19451946        YY_BREAK
    19461947case 20:
    19471948YY_RULE_SETUP
    1948 #line 186 "lex.ll"
     1949#line 189 "lex.ll"
    19491950{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    19501951        YY_BREAK
    19511952case 21:
    19521953YY_RULE_SETUP
    1953 #line 187 "lex.ll"
     1954#line 190 "lex.ll"
    19541955{ KEYWORD_RETURN(AUTO); }
    19551956        YY_BREAK
    19561957case 22:
    19571958YY_RULE_SETUP
    1958 #line 188 "lex.ll"
     1959#line 191 "lex.ll"
    19591960{ KEYWORD_RETURN(BOOL); }                               // C99
    19601961        YY_BREAK
    19611962case 23:
    19621963YY_RULE_SETUP
    1963 #line 189 "lex.ll"
     1964#line 192 "lex.ll"
    19641965{ KEYWORD_RETURN(BREAK); }
    19651966        YY_BREAK
    19661967case 24:
    19671968YY_RULE_SETUP
    1968 #line 190 "lex.ll"
     1969#line 193 "lex.ll"
    19691970{ KEYWORD_RETURN(CASE); }
    19701971        YY_BREAK
    19711972case 25:
    19721973YY_RULE_SETUP
    1973 #line 191 "lex.ll"
     1974#line 194 "lex.ll"
    19741975{ KEYWORD_RETURN(CATCH); }                              // CFA
    19751976        YY_BREAK
    19761977case 26:
    19771978YY_RULE_SETUP
    1978 #line 192 "lex.ll"
     1979#line 195 "lex.ll"
    19791980{ KEYWORD_RETURN(CATCHRESUME); }                // CFA
    19801981        YY_BREAK
    19811982case 27:
    19821983YY_RULE_SETUP
    1983 #line 193 "lex.ll"
     1984#line 196 "lex.ll"
    19841985{ KEYWORD_RETURN(CHAR); }
    19851986        YY_BREAK
    19861987case 28:
    19871988YY_RULE_SETUP
    1988 #line 194 "lex.ll"
     1989#line 197 "lex.ll"
    19891990{ KEYWORD_RETURN(CHOOSE); }                             // CFA
    19901991        YY_BREAK
    19911992case 29:
    19921993YY_RULE_SETUP
    1993 #line 195 "lex.ll"
     1994#line 198 "lex.ll"
    19941995{ KEYWORD_RETURN(COMPLEX); }                    // C99
    19951996        YY_BREAK
    19961997case 30:
    19971998YY_RULE_SETUP
    1998 #line 196 "lex.ll"
     1999#line 199 "lex.ll"
    19992000{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    20002001        YY_BREAK
    20012002case 31:
    20022003YY_RULE_SETUP
    2003 #line 197 "lex.ll"
     2004#line 200 "lex.ll"
    20042005{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    20052006        YY_BREAK
    20062007case 32:
    20072008YY_RULE_SETUP
    2008 #line 198 "lex.ll"
     2009#line 201 "lex.ll"
    20092010{ KEYWORD_RETURN(CONST); }
    20102011        YY_BREAK
    20112012case 33:
    20122013YY_RULE_SETUP
    2013 #line 199 "lex.ll"
     2014#line 202 "lex.ll"
    20142015{ KEYWORD_RETURN(CONST); }                              // GCC
    20152016        YY_BREAK
    20162017case 34:
    20172018YY_RULE_SETUP
    2018 #line 200 "lex.ll"
     2019#line 203 "lex.ll"
    20192020{ KEYWORD_RETURN(CONST); }                              // GCC
    20202021        YY_BREAK
    20212022case 35:
    20222023YY_RULE_SETUP
    2023 #line 201 "lex.ll"
     2024#line 204 "lex.ll"
    20242025{ KEYWORD_RETURN(CONTINUE); }
    20252026        YY_BREAK
    20262027case 36:
    20272028YY_RULE_SETUP
    2028 #line 202 "lex.ll"
     2029#line 205 "lex.ll"
    20292030{ KEYWORD_RETURN(DEFAULT); }
    20302031        YY_BREAK
    20312032case 37:
    20322033YY_RULE_SETUP
    2033 #line 203 "lex.ll"
     2034#line 206 "lex.ll"
    20342035{ KEYWORD_RETURN(DISABLE); }                    // CFA
    20352036        YY_BREAK
    20362037case 38:
    20372038YY_RULE_SETUP
    2038 #line 204 "lex.ll"
     2039#line 207 "lex.ll"
    20392040{ KEYWORD_RETURN(DO); }
    20402041        YY_BREAK
    20412042case 39:
    20422043YY_RULE_SETUP
    2043 #line 205 "lex.ll"
     2044#line 208 "lex.ll"
    20442045{ KEYWORD_RETURN(DOUBLE); }
    20452046        YY_BREAK
    20462047case 40:
    20472048YY_RULE_SETUP
    2048 #line 206 "lex.ll"
     2049#line 209 "lex.ll"
    20492050{ KEYWORD_RETURN(DTYPE); }                              // CFA
    20502051        YY_BREAK
    20512052case 41:
    20522053YY_RULE_SETUP
    2053 #line 207 "lex.ll"
     2054#line 210 "lex.ll"
    20542055{ KEYWORD_RETURN(ELSE); }
    20552056        YY_BREAK
    20562057case 42:
    20572058YY_RULE_SETUP
    2058 #line 208 "lex.ll"
     2059#line 211 "lex.ll"
    20592060{ KEYWORD_RETURN(ENABLE); }                             // CFA
    20602061        YY_BREAK
    20612062case 43:
    20622063YY_RULE_SETUP
    2063 #line 209 "lex.ll"
     2064#line 212 "lex.ll"
    20642065{ KEYWORD_RETURN(ENUM); }
    20652066        YY_BREAK
    20662067case 44:
    20672068YY_RULE_SETUP
    2068 #line 210 "lex.ll"
     2069#line 213 "lex.ll"
    20692070{ KEYWORD_RETURN(EXTENSION); }                  // GCC
    20702071        YY_BREAK
    20712072case 45:
    20722073YY_RULE_SETUP
    2073 #line 211 "lex.ll"
     2074#line 214 "lex.ll"
    20742075{ KEYWORD_RETURN(EXTERN); }
    20752076        YY_BREAK
    20762077case 46:
    20772078YY_RULE_SETUP
    2078 #line 212 "lex.ll"
     2079#line 215 "lex.ll"
    20792080{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
    20802081        YY_BREAK
    20812082case 47:
    20822083YY_RULE_SETUP
    2083 #line 213 "lex.ll"
     2084#line 216 "lex.ll"
    20842085{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
    20852086        YY_BREAK
    20862087case 48:
    20872088YY_RULE_SETUP
    2088 #line 214 "lex.ll"
     2089#line 217 "lex.ll"
    20892090{ KEYWORD_RETURN(FINALLY); }                    // CFA
    20902091        YY_BREAK
    20912092case 49:
    20922093YY_RULE_SETUP
    2093 #line 215 "lex.ll"
     2094#line 218 "lex.ll"
    20942095{ KEYWORD_RETURN(FLOAT); }
    20952096        YY_BREAK
    20962097case 50:
    20972098YY_RULE_SETUP
    2098 #line 216 "lex.ll"
     2099#line 219 "lex.ll"
    20992100{ KEYWORD_RETURN(FLOAT); }                              // GCC
    21002101        YY_BREAK
    21012102case 51:
    21022103YY_RULE_SETUP
    2103 #line 217 "lex.ll"
     2104#line 220 "lex.ll"
    21042105{ KEYWORD_RETURN(FOR); }
    21052106        YY_BREAK
    21062107case 52:
    21072108YY_RULE_SETUP
    2108 #line 218 "lex.ll"
     2109#line 221 "lex.ll"
    21092110{ KEYWORD_RETURN(FORALL); }                             // CFA
    21102111        YY_BREAK
    21112112case 53:
    21122113YY_RULE_SETUP
    2113 #line 219 "lex.ll"
     2114#line 222 "lex.ll"
    21142115{ KEYWORD_RETURN(FORTRAN); }
    21152116        YY_BREAK
    21162117case 54:
    21172118YY_RULE_SETUP
    2118 #line 220 "lex.ll"
     2119#line 223 "lex.ll"
    21192120{ KEYWORD_RETURN(FTYPE); }                              // CFA
    21202121        YY_BREAK
    21212122case 55:
    21222123YY_RULE_SETUP
    2123 #line 221 "lex.ll"
     2124#line 224 "lex.ll"
    21242125{ KEYWORD_RETURN(GENERIC); }                    // C11
    21252126        YY_BREAK
    21262127case 56:
    21272128YY_RULE_SETUP
    2128 #line 222 "lex.ll"
     2129#line 225 "lex.ll"
    21292130{ KEYWORD_RETURN(GOTO); }
    21302131        YY_BREAK
    21312132case 57:
    21322133YY_RULE_SETUP
    2133 #line 223 "lex.ll"
     2134#line 226 "lex.ll"
    21342135{ KEYWORD_RETURN(IF); }
    21352136        YY_BREAK
    21362137case 58:
    21372138YY_RULE_SETUP
    2138 #line 224 "lex.ll"
     2139#line 227 "lex.ll"
    21392140{ KEYWORD_RETURN(IMAGINARY); }                  // C99
    21402141        YY_BREAK
    21412142case 59:
    21422143YY_RULE_SETUP
    2143 #line 225 "lex.ll"
     2144#line 228 "lex.ll"
    21442145{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    21452146        YY_BREAK
    21462147case 60:
    21472148YY_RULE_SETUP
    2148 #line 226 "lex.ll"
     2149#line 229 "lex.ll"
    21492150{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    21502151        YY_BREAK
    21512152case 61:
    21522153YY_RULE_SETUP
    2153 #line 227 "lex.ll"
     2154#line 230 "lex.ll"
    21542155{ KEYWORD_RETURN(INLINE); }                             // C99
    21552156        YY_BREAK
    21562157case 62:
    21572158YY_RULE_SETUP
    2158 #line 228 "lex.ll"
     2159#line 231 "lex.ll"
    21592160{ KEYWORD_RETURN(INLINE); }                             // GCC
    21602161        YY_BREAK
    21612162case 63:
    21622163YY_RULE_SETUP
    2163 #line 229 "lex.ll"
     2164#line 232 "lex.ll"
    21642165{ KEYWORD_RETURN(INLINE); }                             // GCC
    21652166        YY_BREAK
    21662167case 64:
    21672168YY_RULE_SETUP
    2168 #line 230 "lex.ll"
     2169#line 233 "lex.ll"
    21692170{ KEYWORD_RETURN(INT); }
    21702171        YY_BREAK
    21712172case 65:
    21722173YY_RULE_SETUP
    2173 #line 231 "lex.ll"
     2174#line 234 "lex.ll"
    21742175{ KEYWORD_RETURN(INT); }                                // GCC
    21752176        YY_BREAK
    21762177case 66:
    21772178YY_RULE_SETUP
    2178 #line 232 "lex.ll"
     2179#line 235 "lex.ll"
    21792180{ KEYWORD_RETURN(LABEL); }                              // GCC
    21802181        YY_BREAK
    21812182case 67:
    21822183YY_RULE_SETUP
    2183 #line 233 "lex.ll"
     2184#line 236 "lex.ll"
    21842185{ KEYWORD_RETURN(LONG); }
    21852186        YY_BREAK
    21862187case 68:
    21872188YY_RULE_SETUP
    2188 #line 234 "lex.ll"
     2189#line 237 "lex.ll"
    21892190{ KEYWORD_RETURN(LVALUE); }                             // CFA
    21902191        YY_BREAK
    21912192case 69:
    21922193YY_RULE_SETUP
    2193 #line 235 "lex.ll"
     2194#line 238 "lex.ll"
    21942195{ KEYWORD_RETURN(NORETURN); }                   // C11
    21952196        YY_BREAK
    21962197case 70:
    21972198YY_RULE_SETUP
    2198 #line 236 "lex.ll"
     2199#line 239 "lex.ll"
    21992200{ KEYWORD_RETURN(OFFSETOF); }           // GCC
    22002201        YY_BREAK
    22012202case 71:
    22022203YY_RULE_SETUP
    2203 #line 237 "lex.ll"
     2204#line 240 "lex.ll"
    22042205{ KEYWORD_RETURN(OTYPE); }                              // CFA
    22052206        YY_BREAK
    22062207case 72:
    22072208YY_RULE_SETUP
    2208 #line 238 "lex.ll"
     2209#line 241 "lex.ll"
    22092210{ KEYWORD_RETURN(REGISTER); }
    22102211        YY_BREAK
    22112212case 73:
    22122213YY_RULE_SETUP
    2213 #line 239 "lex.ll"
     2214#line 242 "lex.ll"
    22142215{ KEYWORD_RETURN(RESTRICT); }                   // C99
    22152216        YY_BREAK
    22162217case 74:
    22172218YY_RULE_SETUP
    2218 #line 240 "lex.ll"
     2219#line 243 "lex.ll"
    22192220{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    22202221        YY_BREAK
    22212222case 75:
    22222223YY_RULE_SETUP
    2223 #line 241 "lex.ll"
     2224#line 244 "lex.ll"
    22242225{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    22252226        YY_BREAK
    22262227case 76:
    22272228YY_RULE_SETUP
    2228 #line 242 "lex.ll"
     2229#line 245 "lex.ll"
    22292230{ KEYWORD_RETURN(RETURN); }
    22302231        YY_BREAK
    22312232case 77:
    22322233YY_RULE_SETUP
    2233 #line 243 "lex.ll"
     2234#line 246 "lex.ll"
    22342235{ KEYWORD_RETURN(SHORT); }
    22352236        YY_BREAK
    22362237case 78:
    22372238YY_RULE_SETUP
    2238 #line 244 "lex.ll"
     2239#line 247 "lex.ll"
    22392240{ KEYWORD_RETURN(SIGNED); }
    22402241        YY_BREAK
    22412242case 79:
    22422243YY_RULE_SETUP
    2243 #line 245 "lex.ll"
     2244#line 248 "lex.ll"
    22442245{ KEYWORD_RETURN(SIGNED); }                             // GCC
    22452246        YY_BREAK
    22462247case 80:
    22472248YY_RULE_SETUP
    2248 #line 246 "lex.ll"
     2249#line 249 "lex.ll"
    22492250{ KEYWORD_RETURN(SIGNED); }                             // GCC
    22502251        YY_BREAK
    22512252case 81:
    22522253YY_RULE_SETUP
    2253 #line 247 "lex.ll"
     2254#line 250 "lex.ll"
    22542255{ KEYWORD_RETURN(SIZEOF); }
    22552256        YY_BREAK
    22562257case 82:
    22572258YY_RULE_SETUP
    2258 #line 248 "lex.ll"
     2259#line 251 "lex.ll"
    22592260{ KEYWORD_RETURN(STATIC); }
    22602261        YY_BREAK
    22612262case 83:
    22622263YY_RULE_SETUP
    2263 #line 249 "lex.ll"
     2264#line 252 "lex.ll"
    22642265{ KEYWORD_RETURN(STATICASSERT); }               // C11
    22652266        YY_BREAK
    22662267case 84:
    22672268YY_RULE_SETUP
    2268 #line 250 "lex.ll"
     2269#line 253 "lex.ll"
    22692270{ KEYWORD_RETURN(STRUCT); }
    22702271        YY_BREAK
    22712272case 85:
    22722273YY_RULE_SETUP
    2273 #line 251 "lex.ll"
     2274#line 254 "lex.ll"
    22742275{ KEYWORD_RETURN(SWITCH); }
    22752276        YY_BREAK
    22762277case 86:
    22772278YY_RULE_SETUP
    2278 #line 252 "lex.ll"
     2279#line 255 "lex.ll"
    22792280{ KEYWORD_RETURN(THREADLOCAL); }                // C11
    22802281        YY_BREAK
    22812282case 87:
    22822283YY_RULE_SETUP
    2283 #line 253 "lex.ll"
     2284#line 256 "lex.ll"
    22842285{ KEYWORD_RETURN(THROW); }                              // CFA
    22852286        YY_BREAK
    22862287case 88:
    22872288YY_RULE_SETUP
    2288 #line 254 "lex.ll"
     2289#line 257 "lex.ll"
    22892290{ KEYWORD_RETURN(THROWRESUME); }                // CFA
    22902291        YY_BREAK
    22912292case 89:
    22922293YY_RULE_SETUP
    2293 #line 255 "lex.ll"
     2294#line 258 "lex.ll"
    22942295{ KEYWORD_RETURN(TRAIT); }                              // CFA
    22952296        YY_BREAK
    22962297case 90:
    22972298YY_RULE_SETUP
    2298 #line 256 "lex.ll"
     2299#line 259 "lex.ll"
    22992300{ KEYWORD_RETURN(TRY); }                                // CFA
    23002301        YY_BREAK
    23012302case 91:
    23022303YY_RULE_SETUP
    2303 #line 257 "lex.ll"
     2304#line 260 "lex.ll"
    23042305{ KEYWORD_RETURN(TYPEDEF); }
    23052306        YY_BREAK
    23062307case 92:
    23072308YY_RULE_SETUP
    2308 #line 258 "lex.ll"
     2309#line 261 "lex.ll"
    23092310{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23102311        YY_BREAK
    23112312case 93:
    23122313YY_RULE_SETUP
    2313 #line 259 "lex.ll"
     2314#line 262 "lex.ll"
    23142315{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23152316        YY_BREAK
    23162317case 94:
    23172318YY_RULE_SETUP
    2318 #line 260 "lex.ll"
     2319#line 263 "lex.ll"
    23192320{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    23202321        YY_BREAK
    23212322case 95:
    23222323YY_RULE_SETUP
    2323 #line 261 "lex.ll"
     2324#line 264 "lex.ll"
    23242325{ KEYWORD_RETURN(UNION); }
    23252326        YY_BREAK
    23262327case 96:
    23272328YY_RULE_SETUP
    2328 #line 262 "lex.ll"
     2329#line 265 "lex.ll"
    23292330{ KEYWORD_RETURN(UNSIGNED); }
    23302331        YY_BREAK
    23312332case 97:
    23322333YY_RULE_SETUP
    2333 #line 263 "lex.ll"
     2334#line 266 "lex.ll"
    23342335{ KEYWORD_RETURN(VALIST); }                     // GCC
    23352336        YY_BREAK
    23362337case 98:
    23372338YY_RULE_SETUP
    2338 #line 264 "lex.ll"
     2339#line 267 "lex.ll"
    23392340{ KEYWORD_RETURN(VOID); }
    23402341        YY_BREAK
    23412342case 99:
    23422343YY_RULE_SETUP
    2343 #line 265 "lex.ll"
     2344#line 268 "lex.ll"
    23442345{ KEYWORD_RETURN(VOLATILE); }
    23452346        YY_BREAK
    23462347case 100:
    23472348YY_RULE_SETUP
    2348 #line 266 "lex.ll"
     2349#line 269 "lex.ll"
    23492350{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    23502351        YY_BREAK
    23512352case 101:
    23522353YY_RULE_SETUP
    2353 #line 267 "lex.ll"
     2354#line 270 "lex.ll"
    23542355{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    23552356        YY_BREAK
    23562357case 102:
    23572358YY_RULE_SETUP
    2358 #line 268 "lex.ll"
     2359#line 271 "lex.ll"
    23592360{ KEYWORD_RETURN(WHILE); }
    23602361        YY_BREAK
     
    23622363case 103:
    23632364YY_RULE_SETUP
    2364 #line 271 "lex.ll"
    2365 { IDENTIFIER_RETURN(); }
    2366         YY_BREAK
    2367 case 104:
    2368 YY_RULE_SETUP
    2369 #line 272 "lex.ll"
    2370 { ATTRIBUTE_RETURN(); }
    2371         YY_BREAK
    2372 case 105:
    2373 YY_RULE_SETUP
    2374 #line 273 "lex.ll"
    2375 { BEGIN BKQUOTE; }
    2376         YY_BREAK
    2377 case 106:
    2378 YY_RULE_SETUP
    23792365#line 274 "lex.ll"
    23802366{ IDENTIFIER_RETURN(); }
    23812367        YY_BREAK
     2368case 104:
     2369YY_RULE_SETUP
     2370#line 275 "lex.ll"
     2371{ ATTRIBUTE_RETURN(); }
     2372        YY_BREAK
     2373case 105:
     2374YY_RULE_SETUP
     2375#line 276 "lex.ll"
     2376{ BEGIN BKQUOTE; }
     2377        YY_BREAK
     2378case 106:
     2379YY_RULE_SETUP
     2380#line 277 "lex.ll"
     2381{ IDENTIFIER_RETURN(); }
     2382        YY_BREAK
    23822383case 107:
    23832384YY_RULE_SETUP
    2384 #line 275 "lex.ll"
     2385#line 278 "lex.ll"
    23852386{ BEGIN 0; }
    23862387        YY_BREAK
     
    23882389case 108:
    23892390YY_RULE_SETUP
    2390 #line 278 "lex.ll"
     2391#line 281 "lex.ll"
    23912392{ NUMERIC_RETURN(ZERO); }                               // CFA
    23922393        YY_BREAK
    23932394case 109:
    23942395YY_RULE_SETUP
    2395 #line 279 "lex.ll"
     2396#line 282 "lex.ll"
    23962397{ NUMERIC_RETURN(ONE); }                                // CFA
    23972398        YY_BREAK
    23982399case 110:
    23992400YY_RULE_SETUP
    2400 #line 280 "lex.ll"
     2401#line 283 "lex.ll"
    24012402{ NUMERIC_RETURN(INTEGERconstant); }
    24022403        YY_BREAK
    24032404case 111:
    24042405YY_RULE_SETUP
    2405 #line 281 "lex.ll"
     2406#line 284 "lex.ll"
    24062407{ NUMERIC_RETURN(INTEGERconstant); }
    24072408        YY_BREAK
    24082409case 112:
    24092410YY_RULE_SETUP
    2410 #line 282 "lex.ll"
     2411#line 285 "lex.ll"
    24112412{ NUMERIC_RETURN(INTEGERconstant); }
    24122413        YY_BREAK
    24132414case 113:
    24142415YY_RULE_SETUP
    2415 #line 283 "lex.ll"
     2416#line 286 "lex.ll"
    24162417{ NUMERIC_RETURN(FLOATINGconstant); }
    24172418        YY_BREAK
    24182419case 114:
    24192420YY_RULE_SETUP
    2420 #line 284 "lex.ll"
     2421#line 287 "lex.ll"
    24212422{ NUMERIC_RETURN(FLOATINGconstant); }
    24222423        YY_BREAK
     
    24242425case 115:
    24252426YY_RULE_SETUP
    2426 #line 287 "lex.ll"
     2427#line 290 "lex.ll"
    24272428{ BEGIN QUOTE; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24282429        YY_BREAK
    24292430case 116:
    24302431YY_RULE_SETUP
    2431 #line 288 "lex.ll"
     2432#line 291 "lex.ll"
    24322433{ strtext->append( yytext, yyleng ); }
    24332434        YY_BREAK
     
    24352436/* rule 117 can match eol */
    24362437YY_RULE_SETUP
    2437 #line 289 "lex.ll"
     2438#line 292 "lex.ll"
    24382439{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(CHARACTERconstant); }
    24392440        YY_BREAK
     
    24422443case 118:
    24432444YY_RULE_SETUP
    2444 #line 293 "lex.ll"
     2445#line 296 "lex.ll"
    24452446{ BEGIN STRING; rm_underscore(); strtext = new std::string( yytext, yyleng ); }
    24462447        YY_BREAK
    24472448case 119:
    24482449YY_RULE_SETUP
    2449 #line 294 "lex.ll"
     2450#line 297 "lex.ll"
    24502451{ strtext->append( yytext, yyleng ); }
    24512452        YY_BREAK
     
    24532454/* rule 120 can match eol */
    24542455YY_RULE_SETUP
    2455 #line 295 "lex.ll"
     2456#line 298 "lex.ll"
    24562457{ BEGIN 0; strtext->append( yytext, yyleng ); RETURN_STR(STRINGliteral); }
    24572458        YY_BREAK
     
    24602461case 121:
    24612462YY_RULE_SETUP
    2462 #line 299 "lex.ll"
     2463#line 302 "lex.ll"
    24632464{ rm_underscore(); strtext->append( yytext, yyleng ); }
    24642465        YY_BREAK
     
    24662467/* rule 122 can match eol */
    24672468YY_RULE_SETUP
    2468 #line 300 "lex.ll"
     2469#line 303 "lex.ll"
    24692470{}                                              // continuation (ALSO HANDLED BY CPP)
    24702471        YY_BREAK
    24712472case 123:
    24722473YY_RULE_SETUP
    2473 #line 301 "lex.ll"
     2474#line 304 "lex.ll"
    24742475{ strtext->append( yytext, yyleng ); } // unknown escape character
    24752476        YY_BREAK
     
    24772478case 124:
    24782479YY_RULE_SETUP
    2479 #line 304 "lex.ll"
    2480 { ASCIIOP_RETURN(); }
    2481         YY_BREAK
    2482 case 125:
    2483 YY_RULE_SETUP
    2484 #line 305 "lex.ll"
    2485 { ASCIIOP_RETURN(); }
    2486         YY_BREAK
    2487 case 126:
    2488 YY_RULE_SETUP
    2489 #line 306 "lex.ll"
    2490 { ASCIIOP_RETURN(); }
    2491         YY_BREAK
    2492 case 127:
    2493 YY_RULE_SETUP
    24942480#line 307 "lex.ll"
    24952481{ ASCIIOP_RETURN(); }
    24962482        YY_BREAK
    2497 case 128:
     2483case 125:
    24982484YY_RULE_SETUP
    24992485#line 308 "lex.ll"
    25002486{ ASCIIOP_RETURN(); }
    25012487        YY_BREAK
    2502 case 129:
     2488case 126:
    25032489YY_RULE_SETUP
    25042490#line 309 "lex.ll"
    25052491{ ASCIIOP_RETURN(); }
    25062492        YY_BREAK
    2507 case 130:
     2493case 127:
    25082494YY_RULE_SETUP
    25092495#line 310 "lex.ll"
    2510 { ASCIIOP_RETURN(); }                                   // also operator
    2511         YY_BREAK
    2512 case 131:
     2496{ ASCIIOP_RETURN(); }
     2497        YY_BREAK
     2498case 128:
    25132499YY_RULE_SETUP
    25142500#line 311 "lex.ll"
    25152501{ ASCIIOP_RETURN(); }
    25162502        YY_BREAK
    2517 case 132:
     2503case 129:
    25182504YY_RULE_SETUP
    25192505#line 312 "lex.ll"
    25202506{ ASCIIOP_RETURN(); }
    25212507        YY_BREAK
    2522 case 133:
     2508case 130:
    25232509YY_RULE_SETUP
    25242510#line 313 "lex.ll"
    25252511{ ASCIIOP_RETURN(); }                                   // also operator
    25262512        YY_BREAK
     2513case 131:
     2514YY_RULE_SETUP
     2515#line 314 "lex.ll"
     2516{ ASCIIOP_RETURN(); }
     2517        YY_BREAK
     2518case 132:
     2519YY_RULE_SETUP
     2520#line 315 "lex.ll"
     2521{ ASCIIOP_RETURN(); }
     2522        YY_BREAK
     2523case 133:
     2524YY_RULE_SETUP
     2525#line 316 "lex.ll"
     2526{ ASCIIOP_RETURN(); }                                   // also operator
     2527        YY_BREAK
    25272528case 134:
    25282529YY_RULE_SETUP
    2529 #line 314 "lex.ll"
     2530#line 317 "lex.ll"
    25302531{ NAMEDOP_RETURN(ELLIPSIS); }
    25312532        YY_BREAK
     
    25332534case 135:
    25342535YY_RULE_SETUP
    2535 #line 317 "lex.ll"
     2536#line 320 "lex.ll"
    25362537{ RETURN_VAL('['); }
    25372538        YY_BREAK
    25382539case 136:
    25392540YY_RULE_SETUP
    2540 #line 318 "lex.ll"
     2541#line 321 "lex.ll"
    25412542{ RETURN_VAL(']'); }
    25422543        YY_BREAK
    25432544case 137:
    25442545YY_RULE_SETUP
    2545 #line 319 "lex.ll"
     2546#line 322 "lex.ll"
    25462547{ RETURN_VAL('{'); }
    25472548        YY_BREAK
    25482549case 138:
    25492550YY_RULE_SETUP
    2550 #line 320 "lex.ll"
     2551#line 323 "lex.ll"
    25512552{ RETURN_VAL('}'); }
    25522553        YY_BREAK
     
    25542555case 139:
    25552556YY_RULE_SETUP
    2556 #line 323 "lex.ll"
    2557 { ASCIIOP_RETURN(); }
    2558         YY_BREAK
    2559 case 140:
    2560 YY_RULE_SETUP
    2561 #line 324 "lex.ll"
    2562 { ASCIIOP_RETURN(); }
    2563         YY_BREAK
    2564 case 141:
    2565 YY_RULE_SETUP
    2566 #line 325 "lex.ll"
    2567 { ASCIIOP_RETURN(); }
    2568         YY_BREAK
    2569 case 142:
    2570 YY_RULE_SETUP
    25712557#line 326 "lex.ll"
    25722558{ ASCIIOP_RETURN(); }
    25732559        YY_BREAK
    2574 case 143:
     2560case 140:
    25752561YY_RULE_SETUP
    25762562#line 327 "lex.ll"
    25772563{ ASCIIOP_RETURN(); }
    25782564        YY_BREAK
    2579 case 144:
     2565case 141:
    25802566YY_RULE_SETUP
    25812567#line 328 "lex.ll"
    25822568{ ASCIIOP_RETURN(); }
    25832569        YY_BREAK
    2584 case 145:
     2570case 142:
    25852571YY_RULE_SETUP
    25862572#line 329 "lex.ll"
    25872573{ ASCIIOP_RETURN(); }
    25882574        YY_BREAK
    2589 case 146:
     2575case 143:
    25902576YY_RULE_SETUP
    25912577#line 330 "lex.ll"
    25922578{ ASCIIOP_RETURN(); }
    25932579        YY_BREAK
    2594 case 147:
     2580case 144:
    25952581YY_RULE_SETUP
    25962582#line 331 "lex.ll"
    25972583{ ASCIIOP_RETURN(); }
    25982584        YY_BREAK
    2599 case 148:
     2585case 145:
    26002586YY_RULE_SETUP
    26012587#line 332 "lex.ll"
    26022588{ ASCIIOP_RETURN(); }
    26032589        YY_BREAK
    2604 case 149:
     2590case 146:
    26052591YY_RULE_SETUP
    26062592#line 333 "lex.ll"
    26072593{ ASCIIOP_RETURN(); }
    26082594        YY_BREAK
    2609 case 150:
     2595case 147:
    26102596YY_RULE_SETUP
    26112597#line 334 "lex.ll"
    26122598{ ASCIIOP_RETURN(); }
    26132599        YY_BREAK
    2614 case 151:
     2600case 148:
    26152601YY_RULE_SETUP
    26162602#line 335 "lex.ll"
    26172603{ ASCIIOP_RETURN(); }
    26182604        YY_BREAK
    2619 case 152:
     2605case 149:
    26202606YY_RULE_SETUP
    26212607#line 336 "lex.ll"
    26222608{ ASCIIOP_RETURN(); }
    26232609        YY_BREAK
     2610case 150:
     2611YY_RULE_SETUP
     2612#line 337 "lex.ll"
     2613{ ASCIIOP_RETURN(); }
     2614        YY_BREAK
     2615case 151:
     2616YY_RULE_SETUP
     2617#line 338 "lex.ll"
     2618{ ASCIIOP_RETURN(); }
     2619        YY_BREAK
     2620case 152:
     2621YY_RULE_SETUP
     2622#line 339 "lex.ll"
     2623{ ASCIIOP_RETURN(); }
     2624        YY_BREAK
    26242625case 153:
    26252626YY_RULE_SETUP
    2626 #line 338 "lex.ll"
     2627#line 341 "lex.ll"
    26272628{ NAMEDOP_RETURN(ICR); }
    26282629        YY_BREAK
    26292630case 154:
    26302631YY_RULE_SETUP
    2631 #line 339 "lex.ll"
     2632#line 342 "lex.ll"
    26322633{ NAMEDOP_RETURN(DECR); }
    26332634        YY_BREAK
    26342635case 155:
    26352636YY_RULE_SETUP
    2636 #line 340 "lex.ll"
     2637#line 343 "lex.ll"
    26372638{ NAMEDOP_RETURN(EQ); }
    26382639        YY_BREAK
    26392640case 156:
    26402641YY_RULE_SETUP
    2641 #line 341 "lex.ll"
     2642#line 344 "lex.ll"
    26422643{ NAMEDOP_RETURN(NE); }
    26432644        YY_BREAK
    26442645case 157:
    26452646YY_RULE_SETUP
    2646 #line 342 "lex.ll"
     2647#line 345 "lex.ll"
    26472648{ NAMEDOP_RETURN(LS); }
    26482649        YY_BREAK
    26492650case 158:
    26502651YY_RULE_SETUP
    2651 #line 343 "lex.ll"
     2652#line 346 "lex.ll"
    26522653{ NAMEDOP_RETURN(RS); }
    26532654        YY_BREAK
    26542655case 159:
    26552656YY_RULE_SETUP
    2656 #line 344 "lex.ll"
     2657#line 347 "lex.ll"
    26572658{ NAMEDOP_RETURN(LE); }
    26582659        YY_BREAK
    26592660case 160:
    26602661YY_RULE_SETUP
    2661 #line 345 "lex.ll"
     2662#line 348 "lex.ll"
    26622663{ NAMEDOP_RETURN(GE); }
    26632664        YY_BREAK
    26642665case 161:
    26652666YY_RULE_SETUP
    2666 #line 346 "lex.ll"
     2667#line 349 "lex.ll"
    26672668{ NAMEDOP_RETURN(ANDAND); }
    26682669        YY_BREAK
    26692670case 162:
    26702671YY_RULE_SETUP
    2671 #line 347 "lex.ll"
     2672#line 350 "lex.ll"
    26722673{ NAMEDOP_RETURN(OROR); }
    26732674        YY_BREAK
    26742675case 163:
    26752676YY_RULE_SETUP
    2676 #line 348 "lex.ll"
     2677#line 351 "lex.ll"
    26772678{ NAMEDOP_RETURN(ARROW); }
    26782679        YY_BREAK
    26792680case 164:
    26802681YY_RULE_SETUP
    2681 #line 349 "lex.ll"
     2682#line 352 "lex.ll"
    26822683{ NAMEDOP_RETURN(PLUSassign); }
    26832684        YY_BREAK
    26842685case 165:
    26852686YY_RULE_SETUP
    2686 #line 350 "lex.ll"
     2687#line 353 "lex.ll"
    26872688{ NAMEDOP_RETURN(MINUSassign); }
    26882689        YY_BREAK
    26892690case 166:
    26902691YY_RULE_SETUP
    2691 #line 351 "lex.ll"
     2692#line 354 "lex.ll"
    26922693{ NAMEDOP_RETURN(MULTassign); }
    26932694        YY_BREAK
    26942695case 167:
    26952696YY_RULE_SETUP
    2696 #line 352 "lex.ll"
     2697#line 355 "lex.ll"
    26972698{ NAMEDOP_RETURN(DIVassign); }
    26982699        YY_BREAK
    26992700case 168:
    27002701YY_RULE_SETUP
    2701 #line 353 "lex.ll"
     2702#line 356 "lex.ll"
    27022703{ NAMEDOP_RETURN(MODassign); }
    27032704        YY_BREAK
    27042705case 169:
    27052706YY_RULE_SETUP
    2706 #line 354 "lex.ll"
     2707#line 357 "lex.ll"
    27072708{ NAMEDOP_RETURN(ANDassign); }
    27082709        YY_BREAK
    27092710case 170:
    27102711YY_RULE_SETUP
    2711 #line 355 "lex.ll"
     2712#line 358 "lex.ll"
    27122713{ NAMEDOP_RETURN(ORassign); }
    27132714        YY_BREAK
    27142715case 171:
    27152716YY_RULE_SETUP
    2716 #line 356 "lex.ll"
     2717#line 359 "lex.ll"
    27172718{ NAMEDOP_RETURN(ERassign); }
    27182719        YY_BREAK
    27192720case 172:
    27202721YY_RULE_SETUP
    2721 #line 357 "lex.ll"
     2722#line 360 "lex.ll"
    27222723{ NAMEDOP_RETURN(LSassign); }
    27232724        YY_BREAK
    27242725case 173:
    27252726YY_RULE_SETUP
    2726 #line 358 "lex.ll"
     2727#line 361 "lex.ll"
    27272728{ NAMEDOP_RETURN(RSassign); }
    27282729        YY_BREAK
    27292730case 174:
    27302731YY_RULE_SETUP
    2731 #line 360 "lex.ll"
     2732#line 363 "lex.ll"
    27322733{ NAMEDOP_RETURN(ATassign); }                   // CFA
    27332734        YY_BREAK
     
    27352736case 175:
    27362737YY_RULE_SETUP
    2737 #line 363 "lex.ll"
     2738#line 366 "lex.ll"
    27382739{ IDENTIFIER_RETURN(); }                                // unary
    27392740        YY_BREAK
    27402741case 176:
    27412742YY_RULE_SETUP
    2742 #line 364 "lex.ll"
     2743#line 367 "lex.ll"
    27432744{ IDENTIFIER_RETURN(); }
    27442745        YY_BREAK
    27452746case 177:
    27462747YY_RULE_SETUP
    2747 #line 365 "lex.ll"
     2748#line 368 "lex.ll"
    27482749{ IDENTIFIER_RETURN(); }
    27492750        YY_BREAK
    27502751case 178:
    27512752YY_RULE_SETUP
    2752 #line 366 "lex.ll"
     2753#line 369 "lex.ll"
    27532754{ IDENTIFIER_RETURN(); }                // binary
    27542755        YY_BREAK
     
    27812782case 179:
    27822783YY_RULE_SETUP
    2783 #line 393 "lex.ll"
     2784#line 396 "lex.ll"
    27842785{
    27852786        // 1 or 2 character unary operator ?
     
    27962797case 180:
    27972798YY_RULE_SETUP
    2798 #line 405 "lex.ll"
     2799#line 408 "lex.ll"
    27992800{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    28002801        YY_BREAK
    28012802case 181:
    28022803YY_RULE_SETUP
    2803 #line 407 "lex.ll"
     2804#line 410 "lex.ll"
    28042805ECHO;
    28052806        YY_BREAK
    2806 #line 2807 "Parser/lex.cc"
     2807#line 2808 "Parser/lex.cc"
    28072808case YY_STATE_EOF(INITIAL):
    28082809case YY_STATE_EOF(COMMENT):
     
    37793780#define YYTABLES_NAME "yytables"
    37803781
    3781 #line 407 "lex.ll"
     3782#line 410 "lex.ll"
    37823783
    37833784
  • src/Parser/lex.ll

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

    rfe7b281 rd1fbaa78  
    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,   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
     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
    11011101};
    11021102#endif
     
    51815181
    51825182/* Line 1806 of yacc.c  */
    5183 #line 442 "parser.yy"
     5183#line 441 "parser.yy"
    51845184    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    51855185    break;
     
    51885188
    51895189/* Line 1806 of yacc.c  */
    5190 #line 444 "parser.yy"
     5190#line 443 "parser.yy"
    51915191    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    51925192    break;
     
    51955195
    51965196/* Line 1806 of yacc.c  */
    5197 #line 446 "parser.yy"
     5197#line 445 "parser.yy"
    51985198    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    51995199    break;
     
    52025202
    52035203/* Line 1806 of yacc.c  */
    5204 #line 451 "parser.yy"
     5204#line 450 "parser.yy"
    52055205    {
    52065206                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    52205220
    52215221/* Line 1806 of yacc.c  */
    5222 #line 464 "parser.yy"
     5222#line 463 "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 466 "parser.yy"
     5229#line 465 "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 468 "parser.yy"
     5236#line 467 "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 470 "parser.yy"
     5243#line 469 "parser.yy"
    52445244    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52455245    break;
     
    52485248
    52495249/* Line 1806 of yacc.c  */
    5250 #line 472 "parser.yy"
     5250#line 471 "parser.yy"
    52515251    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52525252    break;
     
    52555255
    52565256/* Line 1806 of yacc.c  */
    5257 #line 474 "parser.yy"
     5257#line 473 "parser.yy"
    52585258    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52595259    break;
     
    52625262
    52635263/* Line 1806 of yacc.c  */
    5264 #line 476 "parser.yy"
     5264#line 475 "parser.yy"
    52655265    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52665266    break;
     
    52695269
    52705270/* Line 1806 of yacc.c  */
    5271 #line 478 "parser.yy"
     5271#line 477 "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 480 "parser.yy"
     5278#line 479 "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 482 "parser.yy"
     5285#line 481 "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 484 "parser.yy"
     5292#line 483 "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"
     5300    { (yyval.op) = OperKinds::PointTo; }
     5301    break;
     5302
     5303  case 65:
     5304
     5305/* Line 1806 of yacc.c  */
    52995306#line 490 "parser.yy"
    5300     { (yyval.op) = OperKinds::PointTo; }
    5301     break;
    5302 
    5303   case 65:
    5304 
    5305 /* Line 1806 of yacc.c  */
    5306 #line 491 "parser.yy"
    53075307    { (yyval.op) = OperKinds::AddressOf; }
    53085308    break;
     
    53115311
    53125312/* Line 1806 of yacc.c  */
     5313#line 496 "parser.yy"
     5314    { (yyval.op) = OperKinds::UnPlus; }
     5315    break;
     5316
     5317  case 67:
     5318
     5319/* Line 1806 of yacc.c  */
    53135320#line 497 "parser.yy"
    5314     { (yyval.op) = OperKinds::UnPlus; }
    5315     break;
    5316 
    5317   case 67:
     5321    { (yyval.op) = OperKinds::UnMinus; }
     5322    break;
     5323
     5324  case 68:
    53185325
    53195326/* Line 1806 of yacc.c  */
    53205327#line 498 "parser.yy"
    5321     { (yyval.op) = OperKinds::UnMinus; }
    5322     break;
    5323 
    5324   case 68:
     5328    { (yyval.op) = OperKinds::Neg; }
     5329    break;
     5330
     5331  case 69:
    53255332
    53265333/* Line 1806 of yacc.c  */
    53275334#line 499 "parser.yy"
    5328     { (yyval.op) = OperKinds::Neg; }
    5329     break;
    5330 
    5331   case 69:
    5332 
    5333 /* Line 1806 of yacc.c  */
    5334 #line 500 "parser.yy"
    53355335    { (yyval.op) = OperKinds::BitNeg; }
    53365336    break;
     
    53395339
    53405340/* Line 1806 of yacc.c  */
    5341 #line 506 "parser.yy"
     5341#line 505 "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 508 "parser.yy"
     5348#line 507 "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 514 "parser.yy"
     5355#line 513 "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 516 "parser.yy"
     5362#line 515 "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 518 "parser.yy"
     5369#line 517 "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 524 "parser.yy"
     5376#line 523 "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 526 "parser.yy"
     5383#line 525 "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 532 "parser.yy"
     5390#line 531 "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 534 "parser.yy"
     5397#line 533 "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 540 "parser.yy"
     5404#line 539 "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 542 "parser.yy"
     5411#line 541 "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 544 "parser.yy"
     5418#line 543 "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 546 "parser.yy"
     5425#line 545 "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 552 "parser.yy"
     5432#line 551 "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 554 "parser.yy"
     5439#line 553 "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 560 "parser.yy"
     5446#line 559 "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 566 "parser.yy"
     5453#line 565 "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 572 "parser.yy"
     5460#line 571 "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 578 "parser.yy"
     5467#line 577 "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 584 "parser.yy"
     5474#line 583 "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 590 "parser.yy"
     5481#line 589 "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 593 "parser.yy"
     5488#line 592 "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 595 "parser.yy"
     5495#line 594 "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 606 "parser.yy"
     5502#line 605 "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 608 "parser.yy"
     5509#line 607 "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 613 "parser.yy"
     5516#line 612 "parser.yy"
    55175517    { (yyval.en) = nullptr; }
    55185518    break;
     
    55215521
    55225522/* Line 1806 of yacc.c  */
     5523#line 617 "parser.yy"
     5524    { (yyval.op) = OperKinds::Assign; }
     5525    break;
     5526
     5527  case 112:
     5528
     5529/* Line 1806 of yacc.c  */
    55235530#line 618 "parser.yy"
    5524     { (yyval.op) = OperKinds::Assign; }
    5525     break;
    5526 
    5527   case 112:
     5531    { (yyval.op) = OperKinds::AtAssn; }
     5532    break;
     5533
     5534  case 113:
    55285535
    55295536/* Line 1806 of yacc.c  */
    55305537#line 619 "parser.yy"
    5531     { (yyval.op) = OperKinds::AtAssn; }
    5532     break;
    5533 
    5534   case 113:
     5538    { (yyval.op) = OperKinds::MulAssn; }
     5539    break;
     5540
     5541  case 114:
    55355542
    55365543/* Line 1806 of yacc.c  */
    55375544#line 620 "parser.yy"
    5538     { (yyval.op) = OperKinds::MulAssn; }
    5539     break;
    5540 
    5541   case 114:
     5545    { (yyval.op) = OperKinds::DivAssn; }
     5546    break;
     5547
     5548  case 115:
    55425549
    55435550/* Line 1806 of yacc.c  */
    55445551#line 621 "parser.yy"
    5545     { (yyval.op) = OperKinds::DivAssn; }
    5546     break;
    5547 
    5548   case 115:
     5552    { (yyval.op) = OperKinds::ModAssn; }
     5553    break;
     5554
     5555  case 116:
    55495556
    55505557/* Line 1806 of yacc.c  */
    55515558#line 622 "parser.yy"
    5552     { (yyval.op) = OperKinds::ModAssn; }
    5553     break;
    5554 
    5555   case 116:
     5559    { (yyval.op) = OperKinds::PlusAssn; }
     5560    break;
     5561
     5562  case 117:
    55565563
    55575564/* Line 1806 of yacc.c  */
    55585565#line 623 "parser.yy"
    5559     { (yyval.op) = OperKinds::PlusAssn; }
    5560     break;
    5561 
    5562   case 117:
     5566    { (yyval.op) = OperKinds::MinusAssn; }
     5567    break;
     5568
     5569  case 118:
    55635570
    55645571/* Line 1806 of yacc.c  */
    55655572#line 624 "parser.yy"
    5566     { (yyval.op) = OperKinds::MinusAssn; }
    5567     break;
    5568 
    5569   case 118:
     5573    { (yyval.op) = OperKinds::LSAssn; }
     5574    break;
     5575
     5576  case 119:
    55705577
    55715578/* Line 1806 of yacc.c  */
    55725579#line 625 "parser.yy"
    5573     { (yyval.op) = OperKinds::LSAssn; }
    5574     break;
    5575 
    5576   case 119:
     5580    { (yyval.op) = OperKinds::RSAssn; }
     5581    break;
     5582
     5583  case 120:
    55775584
    55785585/* Line 1806 of yacc.c  */
    55795586#line 626 "parser.yy"
    5580     { (yyval.op) = OperKinds::RSAssn; }
    5581     break;
    5582 
    5583   case 120:
     5587    { (yyval.op) = OperKinds::AndAssn; }
     5588    break;
     5589
     5590  case 121:
    55845591
    55855592/* Line 1806 of yacc.c  */
    55865593#line 627 "parser.yy"
    5587     { (yyval.op) = OperKinds::AndAssn; }
    5588     break;
    5589 
    5590   case 121:
     5594    { (yyval.op) = OperKinds::ERAssn; }
     5595    break;
     5596
     5597  case 122:
    55915598
    55925599/* Line 1806 of yacc.c  */
    55935600#line 628 "parser.yy"
    5594     { (yyval.op) = OperKinds::ERAssn; }
    5595     break;
    5596 
    5597   case 122:
    5598 
    5599 /* Line 1806 of yacc.c  */
    5600 #line 629 "parser.yy"
    56015601    { (yyval.op) = OperKinds::OrAssn; }
    56025602    break;
     
    56055605
    56065606/* Line 1806 of yacc.c  */
    5607 #line 636 "parser.yy"
     5607#line 635 "parser.yy"
    56085608    { (yyval.en) = new ExpressionNode( build_tuple() ); }
    56095609    break;
     
    56125612
    56135613/* Line 1806 of yacc.c  */
    5614 #line 638 "parser.yy"
     5614#line 637 "parser.yy"
    56155615    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
    56165616    break;
     
    56195619
    56205620/* Line 1806 of yacc.c  */
    5621 #line 640 "parser.yy"
     5621#line 639 "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 642 "parser.yy"
     5628#line 641 "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 648 "parser.yy"
     5635#line 647 "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 654 "parser.yy"
     5642#line 653 "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 659 "parser.yy"
     5649#line 658 "parser.yy"
    56505650    { (yyval.en) = 0; }
    56515651    break;
     
    56545654
    56555655/* Line 1806 of yacc.c  */
    5656 #line 668 "parser.yy"
     5656#line 667 "parser.yy"
    56575657    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56585658    break;
     
    56615661
    56625662/* Line 1806 of yacc.c  */
    5663 #line 675 "parser.yy"
     5663#line 674 "parser.yy"
    56645664    {
    56655665                        Token fn;
     
    56725672
    56735673/* Line 1806 of yacc.c  */
    5674 #line 685 "parser.yy"
     5674#line 684 "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 692 "parser.yy"
     5683#line 691 "parser.yy"
    56845684    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    56855685    break;
     
    56885688
    56895689/* Line 1806 of yacc.c  */
    5690 #line 699 "parser.yy"
     5690#line 698 "parser.yy"
    56915691    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    56925692    break;
     
    56955695
    56965696/* Line 1806 of yacc.c  */
    5697 #line 705 "parser.yy"
     5697#line 704 "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 710 "parser.yy"
     5704#line 709 "parser.yy"
    57055705    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57065706    break;
     
    57095709
    57105710/* Line 1806 of yacc.c  */
    5711 #line 712 "parser.yy"
     5711#line 711 "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 718 "parser.yy"
     5722#line 717 "parser.yy"
    57235723    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57245724    break;
     
    57275727
    57285728/* Line 1806 of yacc.c  */
    5729 #line 725 "parser.yy"
     5729#line 724 "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 730 "parser.yy"
     5736#line 729 "parser.yy"
    57375737    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    57385738    break;
     
    57415741
    57425742/* Line 1806 of yacc.c  */
    5743 #line 736 "parser.yy"
     5743#line 735 "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 738 "parser.yy"
     5750#line 737 "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 740 "parser.yy"
     5757#line 739 "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 742 "parser.yy"
     5764#line 741 "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 752 "parser.yy"
     5779#line 751 "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 754 "parser.yy"
     5786#line 753 "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 764 "parser.yy"
     5796#line 763 "parser.yy"
    57975797    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57985798    break;
     
    58015801
    58025802/* Line 1806 of yacc.c  */
    5803 #line 766 "parser.yy"
     5803#line 765 "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 771 "parser.yy"
     5810#line 770 "parser.yy"
    58115811    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    58125812    break;
     
    58155815
    58165816/* Line 1806 of yacc.c  */
    5817 #line 773 "parser.yy"
     5817#line 772 "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"
     5825    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
     5826    break;
     5827
     5828  case 166:
     5829
     5830/* Line 1806 of yacc.c  */
    58245831#line 777 "parser.yy"
    5825     { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    5826     break;
    5827 
    5828   case 166:
    5829 
    5830 /* Line 1806 of yacc.c  */
    5831 #line 778 "parser.yy"
    58325832    { (yyval.sn) = new StatementNode( build_default() ); }
    58335833    break;
     
    58365836
    58375837/* Line 1806 of yacc.c  */
    5838 #line 784 "parser.yy"
     5838#line 783 "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 788 "parser.yy"
     5845#line 787 "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 793 "parser.yy"
     5852#line 792 "parser.yy"
    58535853    { (yyval.sn) = 0; }
    58545854    break;
     
    58575857
    58585858/* Line 1806 of yacc.c  */
    5859 #line 799 "parser.yy"
     5859#line 798 "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 801 "parser.yy"
     5866#line 800 "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 806 "parser.yy"
     5873#line 805 "parser.yy"
    58745874    { (yyval.sn) = 0; }
    58755875    break;
     
    58785878
    58795879/* Line 1806 of yacc.c  */
    5880 #line 812 "parser.yy"
     5880#line 811 "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 814 "parser.yy"
     5887#line 813 "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 816 "parser.yy"
     5894#line 815 "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 818 "parser.yy"
     5901#line 817 "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 823 "parser.yy"
     5908#line 822 "parser.yy"
    59095909    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59105910    break;
     
    59135913
    59145914/* Line 1806 of yacc.c  */
    5915 #line 829 "parser.yy"
     5915#line 828 "parser.yy"
    59165916    { (yyval.sn) = 0; }
    59175917    break;
     
    59205920
    59215921/* Line 1806 of yacc.c  */
    5922 #line 831 "parser.yy"
     5922#line 830 "parser.yy"
    59235923    { (yyval.sn) = 0; }
    59245924    break;
     
    59275927
    59285928/* Line 1806 of yacc.c  */
    5929 #line 836 "parser.yy"
     5929#line 835 "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 838 "parser.yy"
     5936#line 837 "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 840 "parser.yy"
     5943#line 839 "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 845 "parser.yy"
     5950#line 844 "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 847 "parser.yy"
     5957#line 846 "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 852 "parser.yy"
     5964#line 851 "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 856 "parser.yy"
     5971#line 855 "parser.yy"
    59725972    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    59735973    break;
     
    59765976
    59775977/* Line 1806 of yacc.c  */
    5978 #line 859 "parser.yy"
     5978#line 858 "parser.yy"
    59795979    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    59805980    break;
     
    59835983
    59845984/* Line 1806 of yacc.c  */
    5985 #line 863 "parser.yy"
     5985#line 862 "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 866 "parser.yy"
     5992#line 865 "parser.yy"
    59935993    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59945994    break;
     
    59975997
    59985998/* Line 1806 of yacc.c  */
    5999 #line 870 "parser.yy"
     5999#line 869 "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 872 "parser.yy"
     6006#line 871 "parser.yy"
    60076007    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    60086008    break;
     
    60116011
    60126012/* Line 1806 of yacc.c  */
    6013 #line 874 "parser.yy"
     6013#line 873 "parser.yy"
    60146014    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60156015    break;
     
    60186018
    60196019/* Line 1806 of yacc.c  */
    6020 #line 876 "parser.yy"
     6020#line 875 "parser.yy"
    60216021    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60226022    break;
     
    60256025
    60266026/* Line 1806 of yacc.c  */
    6027 #line 878 "parser.yy"
     6027#line 877 "parser.yy"
    60286028    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    60296029    break;
     
    60326032
    60336033/* Line 1806 of yacc.c  */
    6034 #line 883 "parser.yy"
     6034#line 882 "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 885 "parser.yy"
     6041#line 884 "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 887 "parser.yy"
     6048#line 886 "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 894 "parser.yy"
     6055#line 893 "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 896 "parser.yy"
     6062#line 895 "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 898 "parser.yy"
     6069#line 897 "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 900 "parser.yy"
     6076#line 899 "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 905 "parser.yy"
     6083#line 904 "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 907 "parser.yy"
     6090#line 906 "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 909 "parser.yy"
     6097#line 908 "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 911 "parser.yy"
     6104#line 910 "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 916 "parser.yy"
     6111#line 915 "parser.yy"
    61126112    {
    61136113                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    61186118
    61196119/* Line 1806 of yacc.c  */
    6120 #line 929 "parser.yy"
     6120#line 928 "parser.yy"
    61216121    {
    61226122                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61286128
    61296129/* Line 1806 of yacc.c  */
    6130 #line 934 "parser.yy"
     6130#line 933 "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 936 "parser.yy"
     6137#line 935 "parser.yy"
    61386138    {
    61396139                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61456145
    61466146/* Line 1806 of yacc.c  */
    6147 #line 945 "parser.yy"
     6147#line 944 "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 947 "parser.yy"
     6154#line 946 "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 949 "parser.yy"
     6161#line 948 "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 951 "parser.yy"
     6168#line 950 "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 953 "parser.yy"
     6175#line 952 "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 958 "parser.yy"
     6182#line 957 "parser.yy"
    61836183    { (yyval.flag) = false; }
    61846184    break;
     
    61876187
    61886188/* Line 1806 of yacc.c  */
    6189 #line 960 "parser.yy"
     6189#line 959 "parser.yy"
    61906190    { (yyval.flag) = true; }
    61916191    break;
     
    61946194
    61956195/* Line 1806 of yacc.c  */
    6196 #line 965 "parser.yy"
     6196#line 964 "parser.yy"
    61976197    { (yyval.en) = 0; }
    61986198    break;
     
    62016201
    62026202/* Line 1806 of yacc.c  */
    6203 #line 972 "parser.yy"
     6203#line 971 "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 977 "parser.yy"
     6210#line 976 "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 979 "parser.yy"
     6217#line 978 "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 984 "parser.yy"
     6224#line 983 "parser.yy"
    62256225    { (yyval.en) = 0; }
    62266226    break;
     
    62296229
    62306230/* Line 1806 of yacc.c  */
    6231 #line 986 "parser.yy"
     6231#line 985 "parser.yy"
    62326232    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    62336233    break;
     
    62366236
    62376237/* Line 1806 of yacc.c  */
    6238 #line 988 "parser.yy"
     6238#line 987 "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 993 "parser.yy"
     6245#line 992 "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 998 "parser.yy"
     6255#line 997 "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 1008 "parser.yy"
     6265#line 1007 "parser.yy"
    62666266    { (yyval.decl) = 0; }
    62676267    break;
     
    62706270
    62716271/* Line 1806 of yacc.c  */
    6272 #line 1015 "parser.yy"
     6272#line 1014 "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 1020 "parser.yy"
     6279#line 1019 "parser.yy"
    62806280    { (yyval.decl) = 0; }
    62816281    break;
     
    62846284
    62856285/* Line 1806 of yacc.c  */
    6286 #line 1027 "parser.yy"
     6286#line 1026 "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:
    62916298
    62926299/* Line 1806 of yacc.c  */
     
    62956302    break;
    62966303
    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 1071 "parser.yy"
     6307#line 1070 "parser.yy"
    63086308    {
    63096309                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63156315
    63166316/* Line 1806 of yacc.c  */
    6317 #line 1078 "parser.yy"
     6317#line 1077 "parser.yy"
    63186318    {
    63196319                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63256325
    63266326/* Line 1806 of yacc.c  */
    6327 #line 1083 "parser.yy"
     6327#line 1082 "parser.yy"
    63286328    {
    63296329                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63356335
    63366336/* Line 1806 of yacc.c  */
    6337 #line 1093 "parser.yy"
     6337#line 1092 "parser.yy"
    63386338    {
    63396339                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63456345
    63466346/* Line 1806 of yacc.c  */
    6347 #line 1098 "parser.yy"
     6347#line 1097 "parser.yy"
    63486348    {
    63496349                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63556355
    63566356/* Line 1806 of yacc.c  */
    6357 #line 1103 "parser.yy"
     6357#line 1102 "parser.yy"
    63586358    {
    63596359                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63656365
    63666366/* Line 1806 of yacc.c  */
    6367 #line 1111 "parser.yy"
     6367#line 1110 "parser.yy"
    63686368    {
    63696369                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63756375
    63766376/* Line 1806 of yacc.c  */
    6377 #line 1116 "parser.yy"
     6377#line 1115 "parser.yy"
    63786378    {
    63796379                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63856385
    63866386/* Line 1806 of yacc.c  */
    6387 #line 1121 "parser.yy"
     6387#line 1120 "parser.yy"
    63886388    {
    63896389                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63956395
    63966396/* Line 1806 of yacc.c  */
    6397 #line 1126 "parser.yy"
     6397#line 1125 "parser.yy"
    63986398    {
    63996399                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64056405
    64066406/* Line 1806 of yacc.c  */
    6407 #line 1131 "parser.yy"
     6407#line 1130 "parser.yy"
    64086408    {
    64096409                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64156415
    64166416/* Line 1806 of yacc.c  */
    6417 #line 1139 "parser.yy"
     6417#line 1138 "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 1162 "parser.yy"
     6426#line 1161 "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 1166 "parser.yy"
     6435#line 1165 "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 1173 "parser.yy"
     6444#line 1172 "parser.yy"
    64456445    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64466446    break;
     
    64496449
    64506450/* Line 1806 of yacc.c  */
    6451 #line 1177 "parser.yy"
     6451#line 1176 "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 1182 "parser.yy"
     6458#line 1181 "parser.yy"
    64596459    {
    64606460                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64666466
    64676467/* Line 1806 of yacc.c  */
    6468 #line 1187 "parser.yy"
     6468#line 1186 "parser.yy"
    64696469    {
    64706470                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64766476
    64776477/* Line 1806 of yacc.c  */
    6478 #line 1192 "parser.yy"
     6478#line 1191 "parser.yy"
    64796479    {
    64806480                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64866486
    64876487/* Line 1806 of yacc.c  */
    6488 #line 1203 "parser.yy"
     6488#line 1202 "parser.yy"
    64896489    {
    64906490                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64966496
    64976497/* Line 1806 of yacc.c  */
    6498 #line 1208 "parser.yy"
     6498#line 1207 "parser.yy"
    64996499    {
    65006500                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65066506
    65076507/* Line 1806 of yacc.c  */
    6508 #line 1213 "parser.yy"
     6508#line 1212 "parser.yy"
    65096509    {
    65106510                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65166516
    65176517/* Line 1806 of yacc.c  */
    6518 #line 1218 "parser.yy"
     6518#line 1217 "parser.yy"
    65196519    {
    65206520                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65266526
    65276527/* Line 1806 of yacc.c  */
    6528 #line 1223 "parser.yy"
     6528#line 1222 "parser.yy"
    65296529    {
    65306530                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65366536
    65376537/* Line 1806 of yacc.c  */
    6538 #line 1232 "parser.yy"
     6538#line 1231 "parser.yy"
    65396539    {
    65406540                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65466546
    65476547/* Line 1806 of yacc.c  */
    6548 #line 1237 "parser.yy"
     6548#line 1236 "parser.yy"
    65496549    {
    65506550                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65566556
    65576557/* Line 1806 of yacc.c  */
    6558 #line 1254 "parser.yy"
     6558#line 1253 "parser.yy"
    65596559    {
    65606560                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65666566
    65676567/* Line 1806 of yacc.c  */
    6568 #line 1259 "parser.yy"
     6568#line 1258 "parser.yy"
    65696569    {
    65706570                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65766576
    65776577/* Line 1806 of yacc.c  */
    6578 #line 1281 "parser.yy"
     6578#line 1280 "parser.yy"
    65796579    { (yyval.decl) = 0; }
    65806580    break;
     
    65836583
    65846584/* Line 1806 of yacc.c  */
    6585 #line 1293 "parser.yy"
     6585#line 1292 "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 1304 "parser.yy"
     6592#line 1303 "parser.yy"
    65936593    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65946594    break;
     
    65976597
    65986598/* Line 1806 of yacc.c  */
    6599 #line 1306 "parser.yy"
     6599#line 1305 "parser.yy"
    66006600    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    66016601    break;
     
    66046604
    66056605/* Line 1806 of yacc.c  */
    6606 #line 1308 "parser.yy"
     6606#line 1307 "parser.yy"
    66076607    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66086608    break;
     
    66116611
    66126612/* Line 1806 of yacc.c  */
    6613 #line 1310 "parser.yy"
     6613#line 1309 "parser.yy"
    66146614    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66156615    break;
     
    66186618
    66196619/* Line 1806 of yacc.c  */
    6620 #line 1312 "parser.yy"
     6620#line 1311 "parser.yy"
    66216621    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    66226622    break;
     
    66256625
    66266626/* Line 1806 of yacc.c  */
    6627 #line 1314 "parser.yy"
     6627#line 1313 "parser.yy"
    66286628    {
    66296629                        typedefTable.enterScope();
     
    66346634
    66356635/* Line 1806 of yacc.c  */
    6636 #line 1318 "parser.yy"
     6636#line 1317 "parser.yy"
    66376637    {
    66386638                        typedefTable.leaveScope();
     
    66446644
    66456645/* Line 1806 of yacc.c  */
    6646 #line 1327 "parser.yy"
     6646#line 1326 "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 1329 "parser.yy"
     6653#line 1328 "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 1340 "parser.yy"
     6660#line 1339 "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 1345 "parser.yy"
     6667#line 1344 "parser.yy"
    66686668    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66696669    break;
     
    66726672
    66736673/* Line 1806 of yacc.c  */
    6674 #line 1347 "parser.yy"
     6674#line 1346 "parser.yy"
    66756675    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66766676    break;
     
    66796679
    66806680/* Line 1806 of yacc.c  */
    6681 #line 1349 "parser.yy"
     6681#line 1348 "parser.yy"
    66826682    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66836683    break;
     
    66866686
    66876687/* Line 1806 of yacc.c  */
    6688 #line 1351 "parser.yy"
     6688#line 1350 "parser.yy"
    66896689    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66906690    break;
     
    66936693
    66946694/* Line 1806 of yacc.c  */
    6695 #line 1354 "parser.yy"
     6695#line 1353 "parser.yy"
    66966696    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    66976697    break;
     
    67006700
    67016701/* Line 1806 of yacc.c  */
    6702 #line 1356 "parser.yy"
     6702#line 1355 "parser.yy"
    67036703    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    67046704    break;
     
    67076707
    67086708/* Line 1806 of yacc.c  */
    6709 #line 1359 "parser.yy"
     6709#line 1358 "parser.yy"
    67106710    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    67116711    break;
     
    67146714
    67156715/* Line 1806 of yacc.c  */
    6716 #line 1361 "parser.yy"
     6716#line 1360 "parser.yy"
    67176717    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    67186718    break;
     
    67216721
    67226722/* Line 1806 of yacc.c  */
    6723 #line 1366 "parser.yy"
     6723#line 1365 "parser.yy"
    67246724    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    67256725    break;
     
    67286728
    67296729/* Line 1806 of yacc.c  */
    6730 #line 1368 "parser.yy"
     6730#line 1367 "parser.yy"
    67316731    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    67326732    break;
     
    67356735
    67366736/* Line 1806 of yacc.c  */
    6737 #line 1370 "parser.yy"
     6737#line 1369 "parser.yy"
    67386738    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    67396739    break;
     
    67426742
    67436743/* Line 1806 of yacc.c  */
    6744 #line 1372 "parser.yy"
     6744#line 1371 "parser.yy"
    67456745    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    67466746    break;
     
    67496749
    67506750/* Line 1806 of yacc.c  */
    6751 #line 1374 "parser.yy"
     6751#line 1373 "parser.yy"
    67526752    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    67536753    break;
     
    67566756
    67576757/* Line 1806 of yacc.c  */
    6758 #line 1376 "parser.yy"
     6758#line 1375 "parser.yy"
    67596759    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    67606760    break;
     
    67636763
    67646764/* Line 1806 of yacc.c  */
    6765 #line 1378 "parser.yy"
     6765#line 1377 "parser.yy"
    67666766    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    67676767    break;
     
    67706770
    67716771/* Line 1806 of yacc.c  */
    6772 #line 1380 "parser.yy"
     6772#line 1379 "parser.yy"
    67736773    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    67746774    break;
     
    67776777
    67786778/* Line 1806 of yacc.c  */
    6779 #line 1382 "parser.yy"
     6779#line 1381 "parser.yy"
    67806780    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    67816781    break;
     
    67846784
    67856785/* Line 1806 of yacc.c  */
    6786 #line 1384 "parser.yy"
     6786#line 1383 "parser.yy"
    67876787    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    67886788    break;
     
    67916791
    67926792/* Line 1806 of yacc.c  */
    6793 #line 1386 "parser.yy"
     6793#line 1385 "parser.yy"
    67946794    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    67956795    break;
     
    67986798
    67996799/* Line 1806 of yacc.c  */
    6800 #line 1388 "parser.yy"
     6800#line 1387 "parser.yy"
    68016801    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    68026802    break;
     
    68056805
    68066806/* Line 1806 of yacc.c  */
    6807 #line 1390 "parser.yy"
     6807#line 1389 "parser.yy"
    68086808    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    68096809    break;
     
    68126812
    68136813/* Line 1806 of yacc.c  */
    6814 #line 1397 "parser.yy"
     6814#line 1396 "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 1399 "parser.yy"
     6821#line 1398 "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 1401 "parser.yy"
     6828#line 1400 "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 1403 "parser.yy"
     6835#line 1402 "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 1409 "parser.yy"
     6842#line 1408 "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 1416 "parser.yy"
     6849#line 1415 "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 1418 "parser.yy"
     6856#line 1417 "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 1420 "parser.yy"
     6863#line 1419 "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 1425 "parser.yy"
     6870#line 1424 "parser.yy"
    68716871    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    68726872    break;
     
    68756875
    68766876/* Line 1806 of yacc.c  */
    6877 #line 1427 "parser.yy"
     6877#line 1426 "parser.yy"
    68786878    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    68796879    break;
     
    68826882
    68836883/* Line 1806 of yacc.c  */
    6884 #line 1429 "parser.yy"
     6884#line 1428 "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 1431 "parser.yy"
     6891#line 1430 "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 1437 "parser.yy"
     6898#line 1436 "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 1439 "parser.yy"
     6905#line 1438 "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 1441 "parser.yy"
     6912#line 1440 "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 1447 "parser.yy"
     6919#line 1446 "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 1449 "parser.yy"
     6926#line 1448 "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 1455 "parser.yy"
     6933#line 1454 "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 1457 "parser.yy"
     6940#line 1456 "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 1459 "parser.yy"
     6947#line 1458 "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 1464 "parser.yy"
     6954#line 1463 "parser.yy"
    69556955    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    69566956    break;
     
    69596959
    69606960/* Line 1806 of yacc.c  */
    6961 #line 1466 "parser.yy"
     6961#line 1465 "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 1468 "parser.yy"
     6968#line 1467 "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 1478 "parser.yy"
     6975#line 1477 "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 1480 "parser.yy"
     6982#line 1479 "parser.yy"
    69836983    {
    69846984                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    69906990
    69916991/* Line 1806 of yacc.c  */
    6992 #line 1485 "parser.yy"
     6992#line 1484 "parser.yy"
    69936993    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    69946994    break;
     
    69976997
    69986998/* Line 1806 of yacc.c  */
    6999 #line 1487 "parser.yy"
     6999#line 1486 "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 1489 "parser.yy"
     7006#line 1488 "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 1491 "parser.yy"
     7013#line 1490 "parser.yy"
    70147014    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    70157015    break;
     
    70187018
    70197019/* Line 1806 of yacc.c  */
    7020 #line 1496 "parser.yy"
     7020#line 1495 "parser.yy"
    70217021    { (yyval.aggKey) = DeclarationNode::Struct; }
    70227022    break;
     
    70257025
    70267026/* Line 1806 of yacc.c  */
    7027 #line 1498 "parser.yy"
     7027#line 1497 "parser.yy"
    70287028    { (yyval.aggKey) = DeclarationNode::Union; }
    70297029    break;
     
    70327032
    70337033/* Line 1806 of yacc.c  */
    7034 #line 1503 "parser.yy"
     7034#line 1502 "parser.yy"
    70357035    { (yyval.decl) = 0; }
    70367036    break;
     
    70397039
    70407040/* Line 1806 of yacc.c  */
    7041 #line 1505 "parser.yy"
     7041#line 1504 "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 1511 "parser.yy"
     7048#line 1510 "parser.yy"
    70497049    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    70507050    break;
     
    70537053
    70547054/* Line 1806 of yacc.c  */
    7055 #line 1514 "parser.yy"
     7055#line 1513 "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 1524 "parser.yy"
     7066#line 1523 "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 1526 "parser.yy"
     7073#line 1525 "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 1528 "parser.yy"
     7080#line 1527 "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 1533 "parser.yy"
     7087#line 1532 "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 1535 "parser.yy"
     7094#line 1534 "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 1540 "parser.yy"
     7101#line 1539 "parser.yy"
    71027102    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    71037103    break;
     
    71067106
    71077107/* Line 1806 of yacc.c  */
    7108 #line 1542 "parser.yy"
     7108#line 1541 "parser.yy"
    71097109    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    71107110    break;
     
    71137113
    71147114/* Line 1806 of yacc.c  */
    7115 #line 1545 "parser.yy"
     7115#line 1544 "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 1548 "parser.yy"
     7122#line 1547 "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 1554 "parser.yy"
     7129#line 1553 "parser.yy"
    71307130    { (yyval.en) = 0; }
    71317131    break;
     
    71347134
    71357135/* Line 1806 of yacc.c  */
    7136 #line 1556 "parser.yy"
     7136#line 1555 "parser.yy"
    71377137    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71387138    break;
     
    71417141
    71427142/* Line 1806 of yacc.c  */
    7143 #line 1561 "parser.yy"
     7143#line 1560 "parser.yy"
    71447144    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71457145    break;
     
    71487148
    71497149/* Line 1806 of yacc.c  */
    7150 #line 1570 "parser.yy"
     7150#line 1569 "parser.yy"
    71517151    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
    71527152    break;
     
    71557155
    71567156/* Line 1806 of yacc.c  */
    7157 #line 1572 "parser.yy"
     7157#line 1571 "parser.yy"
    71587158    {
    71597159                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    71657165
    71667166/* Line 1806 of yacc.c  */
    7167 #line 1577 "parser.yy"
     7167#line 1576 "parser.yy"
    71687168    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    71697169    break;
     
    71727172
    71737173/* Line 1806 of yacc.c  */
    7174 #line 1579 "parser.yy"
     7174#line 1578 "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 1584 "parser.yy"
     7181#line 1583 "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 1586 "parser.yy"
     7188#line 1585 "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 1591 "parser.yy"
     7195#line 1590 "parser.yy"
    71967196    { (yyval.en) = 0; }
    71977197    break;
     
    72007200
    72017201/* Line 1806 of yacc.c  */
    7202 #line 1593 "parser.yy"
     7202#line 1592 "parser.yy"
    72037203    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    72047204    break;
     
    72077207
    72087208/* Line 1806 of yacc.c  */
    7209 #line 1600 "parser.yy"
     7209#line 1599 "parser.yy"
    72107210    { (yyval.decl) = 0; }
    72117211    break;
     
    72147214
    72157215/* Line 1806 of yacc.c  */
    7216 #line 1608 "parser.yy"
     7216#line 1607 "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 1610 "parser.yy"
     7223#line 1609 "parser.yy"
    72247224    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72257225    break;
     
    72287228
    72297229/* Line 1806 of yacc.c  */
    7230 #line 1612 "parser.yy"
     7230#line 1611 "parser.yy"
    72317231    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72327232    break;
     
    72357235
    72367236/* Line 1806 of yacc.c  */
    7237 #line 1620 "parser.yy"
     7237#line 1619 "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 1622 "parser.yy"
     7244#line 1621 "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 1624 "parser.yy"
     7251#line 1623 "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 1630 "parser.yy"
     7258#line 1629 "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 1635 "parser.yy"
     7265#line 1634 "parser.yy"
    72667266    { (yyval.decl) = 0; }
    72677267    break;
     
    72707270
    72717271/* Line 1806 of yacc.c  */
    7272 #line 1642 "parser.yy"
     7272#line 1641 "parser.yy"
    72737273    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72747274    break;
     
    72777277
    72787278/* Line 1806 of yacc.c  */
    7279 #line 1649 "parser.yy"
     7279#line 1648 "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 1651 "parser.yy"
     7286#line 1650 "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 1660 "parser.yy"
     7293#line 1659 "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 1663 "parser.yy"
     7300#line 1662 "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 1665 "parser.yy"
     7307#line 1664 "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 1675 "parser.yy"
     7314#line 1674 "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 1681 "parser.yy"
     7321#line 1680 "parser.yy"
    73227322    {
    73237323                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73297329
    73307330/* Line 1806 of yacc.c  */
    7331 #line 1686 "parser.yy"
     7331#line 1685 "parser.yy"
    73327332    {
    73337333                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73397339
    73407340/* Line 1806 of yacc.c  */
    7341 #line 1695 "parser.yy"
     7341#line 1694 "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 1704 "parser.yy"
     7348#line 1703 "parser.yy"
    73497349    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73507350    break;
     
    73537353
    73547354/* Line 1806 of yacc.c  */
    7355 #line 1706 "parser.yy"
     7355#line 1705 "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 1731 "parser.yy"
     7362#line 1730 "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 1739 "parser.yy"
     7369#line 1738 "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 1744 "parser.yy"
     7376#line 1743 "parser.yy"
    73777377    { (yyval.in) = 0; }
    73787378    break;
     
    73817381
    73827382/* Line 1806 of yacc.c  */
    7383 #line 1746 "parser.yy"
     7383#line 1745 "parser.yy"
    73847384    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73857385    break;
     
    73887388
    73897389/* Line 1806 of yacc.c  */
    7390 #line 1748 "parser.yy"
     7390#line 1747 "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"
     7398    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
     7399    break;
     7400
     7401  case 460:
     7402
     7403/* Line 1806 of yacc.c  */
    73977404#line 1752 "parser.yy"
    7398     { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    7399     break;
    7400 
    7401   case 460:
    7402 
    7403 /* Line 1806 of yacc.c  */
    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 1758 "parser.yy"
     7411#line 1757 "parser.yy"
    74127412    { (yyval.in) = 0; }
    74137413    break;
     
    74167416
    74177417/* Line 1806 of yacc.c  */
     7418#line 1759 "parser.yy"
     7419    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
     7420    break;
     7421
     7422  case 464:
     7423
     7424/* Line 1806 of yacc.c  */
    74187425#line 1760 "parser.yy"
    7419     { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    7420     break;
    7421 
    7422   case 464:
    7423 
    7424 /* Line 1806 of yacc.c  */
    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 1763 "parser.yy"
     7432#line 1762 "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 1779 "parser.yy"
     7439#line 1778 "parser.yy"
    74407440    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    74417441    break;
     
    74447444
    74457445/* Line 1806 of yacc.c  */
    7446 #line 1785 "parser.yy"
     7446#line 1784 "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 1791 "parser.yy"
     7453#line 1790 "parser.yy"
    74547454    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    74557455    break;
     
    74587458
    74597459/* Line 1806 of yacc.c  */
    7460 #line 1794 "parser.yy"
     7460#line 1793 "parser.yy"
    74617461    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74627462    break;
     
    74657465
    74667466/* Line 1806 of yacc.c  */
    7467 #line 1796 "parser.yy"
     7467#line 1795 "parser.yy"
    74687468    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74697469    break;
     
    74727472
    74737473/* Line 1806 of yacc.c  */
    7474 #line 1798 "parser.yy"
     7474#line 1797 "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 1800 "parser.yy"
     7481#line 1799 "parser.yy"
    74827482    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74837483    break;
     
    74867486
    74877487/* Line 1806 of yacc.c  */
    7488 #line 1824 "parser.yy"
     7488#line 1823 "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 1826 "parser.yy"
     7495#line 1825 "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 1828 "parser.yy"
     7502#line 1827 "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 1834 "parser.yy"
     7509#line 1833 "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 1836 "parser.yy"
     7516#line 1835 "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 1841 "parser.yy"
     7523#line 1840 "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 1847 "parser.yy"
     7530#line 1846 "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 1852 "parser.yy"
     7537#line 1851 "parser.yy"
    75387538    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75397539    break;
     
    75427542
    75437543/* Line 1806 of yacc.c  */
    7544 #line 1854 "parser.yy"
     7544#line 1853 "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 1860 "parser.yy"
     7551#line 1859 "parser.yy"
    75527552    { (yyval.tclass) = DeclarationNode::Otype; }
    75537553    break;
     
    75567556
    75577557/* Line 1806 of yacc.c  */
    7558 #line 1862 "parser.yy"
     7558#line 1861 "parser.yy"
    75597559    { (yyval.tclass) = DeclarationNode::Ftype; }
    75607560    break;
     
    75637563
    75647564/* Line 1806 of yacc.c  */
    7565 #line 1864 "parser.yy"
     7565#line 1863 "parser.yy"
    75667566    { (yyval.tclass) = DeclarationNode::Dtype; }
    75677567    break;
     
    75707570
    75717571/* Line 1806 of yacc.c  */
    7572 #line 1869 "parser.yy"
     7572#line 1868 "parser.yy"
    75737573    { (yyval.decl) = 0; }
    75747574    break;
     
    75777577
    75787578/* Line 1806 of yacc.c  */
    7579 #line 1871 "parser.yy"
     7579#line 1870 "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 1876 "parser.yy"
     7586#line 1875 "parser.yy"
    75877587    {
    75887588                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    75947594
    75957595/* Line 1806 of yacc.c  */
    7596 #line 1881 "parser.yy"
     7596#line 1880 "parser.yy"
    75977597    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    75987598    break;
     
    76017601
    76027602/* Line 1806 of yacc.c  */
    7603 #line 1883 "parser.yy"
     7603#line 1882 "parser.yy"
    76047604    { (yyval.decl) = 0; }
    76057605    break;
     
    76087608
    76097609/* Line 1806 of yacc.c  */
    7610 #line 1888 "parser.yy"
     7610#line 1887 "parser.yy"
    76117611    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    76127612    break;
     
    76157615
    76167616/* Line 1806 of yacc.c  */
    7617 #line 1891 "parser.yy"
     7617#line 1890 "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 1893 "parser.yy"
     7624#line 1892 "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 1898 "parser.yy"
     7631#line 1897 "parser.yy"
    76327632    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76337633    break;
     
    76367636
    76377637/* Line 1806 of yacc.c  */
    7638 #line 1900 "parser.yy"
     7638#line 1899 "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 1902 "parser.yy"
     7645#line 1901 "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 1907 "parser.yy"
     7652#line 1906 "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 1909 "parser.yy"
     7659#line 1908 "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 1914 "parser.yy"
     7666#line 1913 "parser.yy"
    76677667    {
    76687668                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76747674
    76757675/* Line 1806 of yacc.c  */
    7676 #line 1919 "parser.yy"
     7676#line 1918 "parser.yy"
    76777677    {
    76787678                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76847684
    76857685/* Line 1806 of yacc.c  */
    7686 #line 1927 "parser.yy"
     7686#line 1926 "parser.yy"
    76877687    {
    76887688                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76947694
    76957695/* Line 1806 of yacc.c  */
    7696 #line 1932 "parser.yy"
     7696#line 1931 "parser.yy"
    76977697    {
    76987698                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    77047704
    77057705/* Line 1806 of yacc.c  */
    7706 #line 1937 "parser.yy"
     7706#line 1936 "parser.yy"
    77077707    {
    77087708                        typedefTable.leaveTrait();
     
    77157715
    77167716/* Line 1806 of yacc.c  */
    7717 #line 1947 "parser.yy"
     7717#line 1946 "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 1957 "parser.yy"
     7724#line 1956 "parser.yy"
    77257725    {
    77267726                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77327732
    77337733/* Line 1806 of yacc.c  */
    7734 #line 1962 "parser.yy"
     7734#line 1961 "parser.yy"
    77357735    {
    77367736                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77427742
    77437743/* Line 1806 of yacc.c  */
    7744 #line 1967 "parser.yy"
     7744#line 1966 "parser.yy"
    77457745    {
    77467746                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77527752
    77537753/* Line 1806 of yacc.c  */
    7754 #line 1975 "parser.yy"
     7754#line 1974 "parser.yy"
    77557755    {
    77567756                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77627762
    77637763/* Line 1806 of yacc.c  */
    7764 #line 1980 "parser.yy"
     7764#line 1979 "parser.yy"
    77657765    {
    77667766                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77727772
    77737773/* Line 1806 of yacc.c  */
    7774 #line 1990 "parser.yy"
     7774#line 1989 "parser.yy"
    77757775    {}
    77767776    break;
     
    77797779
    77807780/* Line 1806 of yacc.c  */
    7781 #line 1992 "parser.yy"
     7781#line 1991 "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 1998 "parser.yy"
     7788#line 1997 "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 2003 "parser.yy"
     7795#line 2002 "parser.yy"
    77967796    { (yyval.decl) = 0; }
    77977797    break;
     
    78007800
    78017801/* Line 1806 of yacc.c  */
    7802 #line 2011 "parser.yy"
     7802#line 2010 "parser.yy"
    78037803    {}
    78047804    break;
     
    78077807
    78087808/* Line 1806 of yacc.c  */
    7809 #line 2013 "parser.yy"
     7809#line 2012 "parser.yy"
    78107810    {
    78117811                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     
    78177817
    78187818/* Line 1806 of yacc.c  */
    7819 #line 2018 "parser.yy"
     7819#line 2017 "parser.yy"
    78207820    {
    78217821                        linkage = linkageStack.top();
     
    78287828
    78297829/* Line 1806 of yacc.c  */
    7830 #line 2024 "parser.yy"
     7830#line 2023 "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 2039 "parser.yy"
     7841#line 2038 "parser.yy"
    78427842    {
    78437843                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78507850
    78517851/* Line 1806 of yacc.c  */
    7852 #line 2045 "parser.yy"
     7852#line 2044 "parser.yy"
    78537853    {
    78547854                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78617861
    78627862/* Line 1806 of yacc.c  */
    7863 #line 2054 "parser.yy"
     7863#line 2053 "parser.yy"
    78647864    {
    78657865                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78727872
    78737873/* Line 1806 of yacc.c  */
    7874 #line 2060 "parser.yy"
     7874#line 2059 "parser.yy"
    78757875    {
    78767876                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78837883
    78847884/* Line 1806 of yacc.c  */
    7885 #line 2066 "parser.yy"
     7885#line 2065 "parser.yy"
    78867886    {
    78877887                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78947894
    78957895/* Line 1806 of yacc.c  */
    7896 #line 2072 "parser.yy"
     7896#line 2071 "parser.yy"
    78977897    {
    78987898                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79057905
    79067906/* Line 1806 of yacc.c  */
    7907 #line 2078 "parser.yy"
     7907#line 2077 "parser.yy"
    79087908    {
    79097909                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79167916
    79177917/* Line 1806 of yacc.c  */
    7918 #line 2086 "parser.yy"
     7918#line 2085 "parser.yy"
    79197919    {
    79207920                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79277927
    79287928/* Line 1806 of yacc.c  */
    7929 #line 2092 "parser.yy"
     7929#line 2091 "parser.yy"
    79307930    {
    79317931                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79387938
    79397939/* Line 1806 of yacc.c  */
    7940 #line 2100 "parser.yy"
     7940#line 2099 "parser.yy"
    79417941    {
    79427942                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79497949
    79507950/* Line 1806 of yacc.c  */
    7951 #line 2106 "parser.yy"
     7951#line 2105 "parser.yy"
    79527952    {
    79537953                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79607960
    79617961/* Line 1806 of yacc.c  */
    7962 #line 2121 "parser.yy"
     7962#line 2120 "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 2126 "parser.yy"
     7969#line 2125 "parser.yy"
    79707970    { delete (yyvsp[(3) - (5)].str); }
    79717971    break;
     
    79747974
    79757975/* Line 1806 of yacc.c  */
    7976 #line 2131 "parser.yy"
     7976#line 2130 "parser.yy"
    79777977    { (yyval.decl) = 0; }
    79787978    break;
     
    79817981
    79827982/* Line 1806 of yacc.c  */
    7983 #line 2138 "parser.yy"
     7983#line 2137 "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 2144 "parser.yy"
     7990#line 2143 "parser.yy"
    79917991    { (yyval.decl) = 0; }
    79927992    break;
     
    79957995
    79967996/* Line 1806 of yacc.c  */
    7997 #line 2155 "parser.yy"
     7997#line 2154 "parser.yy"
    79987998    { delete (yyvsp[(3) - (4)].en); }
    79997999    break;
     
    80028002
    80038003/* Line 1806 of yacc.c  */
     8004#line 2158 "parser.yy"
     8005    { delete (yyvsp[(1) - (1)].tok); }
     8006    break;
     8007
     8008  case 560:
     8009
     8010/* Line 1806 of yacc.c  */
    80048011#line 2159 "parser.yy"
    8005     { delete (yyvsp[(1) - (1)].tok); }
    8006     break;
    8007 
    8008   case 560:
     8012    { delete (yyvsp[(1) - (1)].decl); }
     8013    break;
     8014
     8015  case 561:
    80098016
    80108017/* Line 1806 of yacc.c  */
     
    80138020    break;
    80148021
    8015   case 561:
     8022  case 562:
    80168023
    80178024/* Line 1806 of yacc.c  */
     
    80208027    break;
    80218028
    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 2197 "parser.yy"
     8032#line 2196 "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 2200 "parser.yy"
     8039#line 2199 "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 2202 "parser.yy"
     8046#line 2201 "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 2207 "parser.yy"
     8053#line 2206 "parser.yy"
    80548054    {
    80558055                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80618061
    80628062/* Line 1806 of yacc.c  */
    8063 #line 2212 "parser.yy"
     8063#line 2211 "parser.yy"
    80648064    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80658065    break;
     
    80688068
    80698069/* Line 1806 of yacc.c  */
    8070 #line 2217 "parser.yy"
     8070#line 2216 "parser.yy"
    80718071    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80728072    break;
     
    80758075
    80768076/* Line 1806 of yacc.c  */
    8077 #line 2219 "parser.yy"
     8077#line 2218 "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 2221 "parser.yy"
     8084#line 2220 "parser.yy"
    80858085    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80868086    break;
     
    80898089
    80908090/* Line 1806 of yacc.c  */
    8091 #line 2226 "parser.yy"
     8091#line 2225 "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 2228 "parser.yy"
     8098#line 2227 "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 2230 "parser.yy"
     8105#line 2229 "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 2232 "parser.yy"
     8112#line 2231 "parser.yy"
    81138113    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81148114    break;
     
    81178117
    81188118/* Line 1806 of yacc.c  */
    8119 #line 2237 "parser.yy"
     8119#line 2236 "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 2239 "parser.yy"
     8126#line 2238 "parser.yy"
    81278127    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81288128    break;
     
    81318131
    81328132/* Line 1806 of yacc.c  */
    8133 #line 2248 "parser.yy"
     8133#line 2247 "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 2251 "parser.yy"
     8140#line 2250 "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 2256 "parser.yy"
     8147#line 2255 "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 2258 "parser.yy"
     8154#line 2257 "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 2260 "parser.yy"
     8161#line 2259 "parser.yy"
    81628162    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81638163    break;
     
    81668166
    81678167/* Line 1806 of yacc.c  */
    8168 #line 2265 "parser.yy"
     8168#line 2264 "parser.yy"
    81698169    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81708170    break;
     
    81738173
    81748174/* Line 1806 of yacc.c  */
    8175 #line 2267 "parser.yy"
     8175#line 2266 "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 2269 "parser.yy"
     8182#line 2268 "parser.yy"
    81838183    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81848184    break;
     
    81878187
    81888188/* Line 1806 of yacc.c  */
    8189 #line 2274 "parser.yy"
     8189#line 2273 "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 2276 "parser.yy"
     8196#line 2275 "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 2278 "parser.yy"
     8203#line 2277 "parser.yy"
    82048204    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82058205    break;
     
    82088208
    82098209/* Line 1806 of yacc.c  */
    8210 #line 2293 "parser.yy"
     8210#line 2292 "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 2295 "parser.yy"
     8217#line 2294 "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 2297 "parser.yy"
     8224#line 2296 "parser.yy"
    82258225    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82268226    break;
     
    82298229
    82308230/* Line 1806 of yacc.c  */
    8231 #line 2302 "parser.yy"
     8231#line 2301 "parser.yy"
    82328232    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82338233    break;
     
    82368236
    82378237/* Line 1806 of yacc.c  */
    8238 #line 2304 "parser.yy"
     8238#line 2303 "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 2306 "parser.yy"
     8245#line 2305 "parser.yy"
    82468246    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82478247    break;
     
    82508250
    82518251/* Line 1806 of yacc.c  */
    8252 #line 2311 "parser.yy"
     8252#line 2310 "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 2313 "parser.yy"
     8259#line 2312 "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 2315 "parser.yy"
     8266#line 2314 "parser.yy"
    82678267    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82688268    break;
     
    82718271
    82728272/* Line 1806 of yacc.c  */
    8273 #line 2330 "parser.yy"
     8273#line 2329 "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 2333 "parser.yy"
     8280#line 2332 "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 2335 "parser.yy"
     8287#line 2334 "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 2341 "parser.yy"
     8294#line 2340 "parser.yy"
    82958295    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82968296    break;
     
    82998299
    83008300/* Line 1806 of yacc.c  */
    8301 #line 2346 "parser.yy"
     8301#line 2345 "parser.yy"
    83028302    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83038303    break;
     
    83068306
    83078307/* Line 1806 of yacc.c  */
    8308 #line 2348 "parser.yy"
     8308#line 2347 "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 2350 "parser.yy"
     8315#line 2349 "parser.yy"
    83168316    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83178317    break;
     
    83208320
    83218321/* Line 1806 of yacc.c  */
    8322 #line 2355 "parser.yy"
     8322#line 2354 "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 2357 "parser.yy"
     8329#line 2356 "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 2359 "parser.yy"
     8336#line 2358 "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 2361 "parser.yy"
     8343#line 2360 "parser.yy"
    83448344    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83458345    break;
     
    83488348
    83498349/* Line 1806 of yacc.c  */
    8350 #line 2366 "parser.yy"
     8350#line 2365 "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 2368 "parser.yy"
     8357#line 2367 "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 2370 "parser.yy"
     8364#line 2369 "parser.yy"
    83658365    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83668366    break;
     
    83698369
    83708370/* Line 1806 of yacc.c  */
    8371 #line 2380 "parser.yy"
     8371#line 2379 "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 2383 "parser.yy"
     8378#line 2382 "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 2385 "parser.yy"
     8385#line 2384 "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 2390 "parser.yy"
     8392#line 2389 "parser.yy"
    83938393    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83948394    break;
     
    83978397
    83988398/* Line 1806 of yacc.c  */
    8399 #line 2392 "parser.yy"
     8399#line 2391 "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 2394 "parser.yy"
     8406#line 2393 "parser.yy"
    84078407    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84088408    break;
     
    84118411
    84128412/* Line 1806 of yacc.c  */
    8413 #line 2399 "parser.yy"
     8413#line 2398 "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 2401 "parser.yy"
     8420#line 2400 "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 2403 "parser.yy"
     8427#line 2402 "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 2405 "parser.yy"
     8434#line 2404 "parser.yy"
    84358435    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84368436    break;
     
    84398439
    84408440/* Line 1806 of yacc.c  */
    8441 #line 2410 "parser.yy"
     8441#line 2409 "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 2412 "parser.yy"
     8448#line 2411 "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 2414 "parser.yy"
     8455#line 2413 "parser.yy"
    84568456    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84578457    break;
     
    84608460
    84618461/* Line 1806 of yacc.c  */
    8462 #line 2445 "parser.yy"
     8462#line 2444 "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 2448 "parser.yy"
     8469#line 2447 "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 2450 "parser.yy"
     8476#line 2449 "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 2455 "parser.yy"
     8483#line 2454 "parser.yy"
    84848484    {
    84858485                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84918491
    84928492/* Line 1806 of yacc.c  */
    8493 #line 2460 "parser.yy"
     8493#line 2459 "parser.yy"
    84948494    {
    84958495                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85018501
    85028502/* Line 1806 of yacc.c  */
    8503 #line 2468 "parser.yy"
     8503#line 2467 "parser.yy"
    85048504    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85058505    break;
     
    85088508
    85098509/* Line 1806 of yacc.c  */
    8510 #line 2470 "parser.yy"
     8510#line 2469 "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 2472 "parser.yy"
     8517#line 2471 "parser.yy"
    85188518    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85198519    break;
     
    85228522
    85238523/* Line 1806 of yacc.c  */
    8524 #line 2477 "parser.yy"
     8524#line 2476 "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 2479 "parser.yy"
     8531#line 2478 "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 2484 "parser.yy"
     8538#line 2483 "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 2486 "parser.yy"
     8545#line 2485 "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 2501 "parser.yy"
     8552#line 2500 "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 2503 "parser.yy"
     8559#line 2502 "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 2508 "parser.yy"
     8566#line 2507 "parser.yy"
    85678567    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85688568    break;
     
    85718571
    85728572/* Line 1806 of yacc.c  */
    8573 #line 2510 "parser.yy"
     8573#line 2509 "parser.yy"
    85748574    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85758575    break;
     
    85788578
    85798579/* Line 1806 of yacc.c  */
    8580 #line 2512 "parser.yy"
     8580#line 2511 "parser.yy"
    85818581    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85828582    break;
     
    85858585
    85868586/* Line 1806 of yacc.c  */
    8587 #line 2514 "parser.yy"
     8587#line 2513 "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 2516 "parser.yy"
     8594#line 2515 "parser.yy"
    85958595    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85968596    break;
     
    85998599
    86008600/* Line 1806 of yacc.c  */
    8601 #line 2522 "parser.yy"
     8601#line 2521 "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 2524 "parser.yy"
     8608#line 2523 "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 2526 "parser.yy"
     8615#line 2525 "parser.yy"
    86168616    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86178617    break;
     
    86208620
    86218621/* Line 1806 of yacc.c  */
    8622 #line 2531 "parser.yy"
     8622#line 2530 "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 2533 "parser.yy"
     8629#line 2532 "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 2535 "parser.yy"
     8636#line 2534 "parser.yy"
    86378637    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86388638    break;
     
    86418641
    86428642/* Line 1806 of yacc.c  */
    8643 #line 2541 "parser.yy"
     8643#line 2540 "parser.yy"
    86448644    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86458645    break;
     
    86488648
    86498649/* Line 1806 of yacc.c  */
    8650 #line 2543 "parser.yy"
     8650#line 2542 "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 2549 "parser.yy"
     8657#line 2548 "parser.yy"
    86588658    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    86598659    break;
     
    86628662
    86638663/* Line 1806 of yacc.c  */
    8664 #line 2551 "parser.yy"
     8664#line 2550 "parser.yy"
    86658665    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    86668666    break;
     
    86698669
    86708670/* Line 1806 of yacc.c  */
    8671 #line 2553 "parser.yy"
     8671#line 2552 "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 2555 "parser.yy"
     8678#line 2554 "parser.yy"
    86798679    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    86808680    break;
     
    86838683
    86848684/* Line 1806 of yacc.c  */
    8685 #line 2570 "parser.yy"
     8685#line 2569 "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 2572 "parser.yy"
     8692#line 2571 "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 2577 "parser.yy"
     8699#line 2576 "parser.yy"
    87008700    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    87018701    break;
     
    87048704
    87058705/* Line 1806 of yacc.c  */
    8706 #line 2579 "parser.yy"
     8706#line 2578 "parser.yy"
    87078707    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87088708    break;
     
    87118711
    87128712/* Line 1806 of yacc.c  */
    8713 #line 2581 "parser.yy"
     8713#line 2580 "parser.yy"
    87148714    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87158715    break;
     
    87188718
    87198719/* Line 1806 of yacc.c  */
    8720 #line 2583 "parser.yy"
     8720#line 2582 "parser.yy"
    87218721    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87228722    break;
     
    87258725
    87268726/* Line 1806 of yacc.c  */
    8727 #line 2585 "parser.yy"
     8727#line 2584 "parser.yy"
    87288728    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87298729    break;
     
    87328732
    87338733/* Line 1806 of yacc.c  */
    8734 #line 2591 "parser.yy"
     8734#line 2590 "parser.yy"
    87358735    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87368736    break;
     
    87398739
    87408740/* Line 1806 of yacc.c  */
    8741 #line 2593 "parser.yy"
     8741#line 2592 "parser.yy"
    87428742    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87438743    break;
     
    87468746
    87478747/* Line 1806 of yacc.c  */
    8748 #line 2595 "parser.yy"
     8748#line 2594 "parser.yy"
    87498749    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87508750    break;
     
    87538753
    87548754/* Line 1806 of yacc.c  */
    8755 #line 2600 "parser.yy"
     8755#line 2599 "parser.yy"
    87568756    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    87578757    break;
     
    87608760
    87618761/* Line 1806 of yacc.c  */
    8762 #line 2602 "parser.yy"
     8762#line 2601 "parser.yy"
    87638763    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87648764    break;
     
    87678767
    87688768/* Line 1806 of yacc.c  */
    8769 #line 2604 "parser.yy"
     8769#line 2603 "parser.yy"
    87708770    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87718771    break;
     
    87748774
    87758775/* Line 1806 of yacc.c  */
    8776 #line 2611 "parser.yy"
     8776#line 2610 "parser.yy"
    87778777    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87788778    break;
     
    87818781
    87828782/* Line 1806 of yacc.c  */
    8783 #line 2622 "parser.yy"
     8783#line 2621 "parser.yy"
    87848784    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    87858785    break;
     
    87888788
    87898789/* Line 1806 of yacc.c  */
    8790 #line 2625 "parser.yy"
     8790#line 2624 "parser.yy"
    87918791    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    87928792    break;
     
    87958795
    87968796/* Line 1806 of yacc.c  */
    8797 #line 2627 "parser.yy"
     8797#line 2626 "parser.yy"
    87988798    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    87998799    break;
     
    88028802
    88038803/* Line 1806 of yacc.c  */
    8804 #line 2630 "parser.yy"
     8804#line 2629 "parser.yy"
    88058805    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88068806    break;
     
    88098809
    88108810/* Line 1806 of yacc.c  */
    8811 #line 2632 "parser.yy"
     8811#line 2631 "parser.yy"
    88128812    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    88138813    break;
     
    88168816
    88178817/* Line 1806 of yacc.c  */
    8818 #line 2634 "parser.yy"
     8818#line 2633 "parser.yy"
    88198819    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    88208820    break;
     
    88238823
    88248824/* Line 1806 of yacc.c  */
    8825 #line 2648 "parser.yy"
     8825#line 2647 "parser.yy"
    88268826    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88278827    break;
     
    88308830
    88318831/* Line 1806 of yacc.c  */
    8832 #line 2650 "parser.yy"
     8832#line 2649 "parser.yy"
    88338833    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88348834    break;
     
    88378837
    88388838/* Line 1806 of yacc.c  */
    8839 #line 2655 "parser.yy"
     8839#line 2654 "parser.yy"
    88408840    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    88418841    break;
     
    88448844
    88458845/* Line 1806 of yacc.c  */
    8846 #line 2657 "parser.yy"
     8846#line 2656 "parser.yy"
    88478847    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    88488848    break;
     
    88518851
    88528852/* Line 1806 of yacc.c  */
    8853 #line 2659 "parser.yy"
     8853#line 2658 "parser.yy"
    88548854    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    88558855    break;
     
    88588858
    88598859/* Line 1806 of yacc.c  */
    8860 #line 2661 "parser.yy"
     8860#line 2660 "parser.yy"
    88618861    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    88628862    break;
     
    88658865
    88668866/* Line 1806 of yacc.c  */
    8867 #line 2663 "parser.yy"
     8867#line 2662 "parser.yy"
    88688868    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88698869    break;
     
    88728872
    88738873/* Line 1806 of yacc.c  */
    8874 #line 2669 "parser.yy"
     8874#line 2668 "parser.yy"
    88758875    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88768876    break;
     
    88798879
    88808880/* Line 1806 of yacc.c  */
    8881 #line 2671 "parser.yy"
     8881#line 2670 "parser.yy"
    88828882    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88838883    break;
     
    88868886
    88878887/* Line 1806 of yacc.c  */
    8888 #line 2673 "parser.yy"
     8888#line 2672 "parser.yy"
    88898889    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88908890    break;
     
    88938893
    88948894/* Line 1806 of yacc.c  */
    8895 #line 2678 "parser.yy"
     8895#line 2677 "parser.yy"
    88968896    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    88978897    break;
     
    89008900
    89018901/* Line 1806 of yacc.c  */
    8902 #line 2680 "parser.yy"
     8902#line 2679 "parser.yy"
    89038903    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    89048904    break;
     
    89078907
    89088908/* Line 1806 of yacc.c  */
    8909 #line 2690 "parser.yy"
     8909#line 2689 "parser.yy"
    89108910    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89118911    break;
     
    89148914
    89158915/* Line 1806 of yacc.c  */
    8916 #line 2700 "parser.yy"
     8916#line 2699 "parser.yy"
    89178917    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89188918    break;
     
    89218921
    89228922/* Line 1806 of yacc.c  */
    8923 #line 2702 "parser.yy"
     8923#line 2701 "parser.yy"
    89248924    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89258925    break;
     
    89288928
    89298929/* Line 1806 of yacc.c  */
    8930 #line 2704 "parser.yy"
     8930#line 2703 "parser.yy"
    89318931    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89328932    break;
     
    89358935
    89368936/* Line 1806 of yacc.c  */
    8937 #line 2706 "parser.yy"
     8937#line 2705 "parser.yy"
    89388938    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89398939    break;
     
    89428942
    89438943/* Line 1806 of yacc.c  */
    8944 #line 2708 "parser.yy"
     8944#line 2707 "parser.yy"
    89458945    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89468946    break;
     
    89498949
    89508950/* Line 1806 of yacc.c  */
    8951 #line 2710 "parser.yy"
     8951#line 2709 "parser.yy"
    89528952    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89538953    break;
     
    89568956
    89578957/* Line 1806 of yacc.c  */
    8958 #line 2717 "parser.yy"
     8958#line 2716 "parser.yy"
    89598959    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89608960    break;
     
    89638963
    89648964/* Line 1806 of yacc.c  */
    8965 #line 2719 "parser.yy"
     8965#line 2718 "parser.yy"
    89668966    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89678967    break;
     
    89708970
    89718971/* Line 1806 of yacc.c  */
    8972 #line 2721 "parser.yy"
     8972#line 2720 "parser.yy"
    89738973    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89748974    break;
     
    89778977
    89788978/* Line 1806 of yacc.c  */
    8979 #line 2723 "parser.yy"
     8979#line 2722 "parser.yy"
    89808980    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89818981    break;
     
    89848984
    89858985/* Line 1806 of yacc.c  */
    8986 #line 2725 "parser.yy"
     8986#line 2724 "parser.yy"
    89878987    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89888988    break;
     
    89918991
    89928992/* Line 1806 of yacc.c  */
     8993#line 2726 "parser.yy"
     8994    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8995    break;
     8996
     8997  case 722:
     8998
     8999/* Line 1806 of yacc.c  */
    89939000#line 2728 "parser.yy"
    8994     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8995     break;
    8996 
    8997   case 722:
     9001    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9002    break;
     9003
     9004  case 723:
    89989005
    89999006/* Line 1806 of yacc.c  */
    90009007#line 2730 "parser.yy"
     9008    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9009    break;
     9010
     9011  case 724:
     9012
     9013/* Line 1806 of yacc.c  */
     9014#line 2732 "parser.yy"
     9015    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     9016    break;
     9017
     9018  case 725:
     9019
     9020/* Line 1806 of yacc.c  */
     9021#line 2734 "parser.yy"
    90019022    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90029023    break;
    90039024
    9004   case 723:
    9005 
    9006 /* Line 1806 of yacc.c  */
    9007 #line 2732 "parser.yy"
    9008     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    9009     break;
    9010 
    9011   case 724:
    9012 
    9013 /* Line 1806 of yacc.c  */
    9014 #line 2734 "parser.yy"
    9015     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    9016     break;
    9017 
    9018   case 725:
    9019 
    9020 /* Line 1806 of yacc.c  */
    9021 #line 2736 "parser.yy"
     9025  case 726:
     9026
     9027/* Line 1806 of yacc.c  */
     9028#line 2739 "parser.yy"
     9029    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     9030    break;
     9031
     9032  case 727:
     9033
     9034/* Line 1806 of yacc.c  */
     9035#line 2741 "parser.yy"
     9036    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     9037    break;
     9038
     9039  case 728:
     9040
     9041/* Line 1806 of yacc.c  */
     9042#line 2746 "parser.yy"
     9043    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     9044    break;
     9045
     9046  case 729:
     9047
     9048/* Line 1806 of yacc.c  */
     9049#line 2748 "parser.yy"
     9050    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     9051    break;
     9052
     9053  case 731:
     9054
     9055/* Line 1806 of yacc.c  */
     9056#line 2775 "parser.yy"
     9057    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     9058    break;
     9059
     9060  case 735:
     9061
     9062/* Line 1806 of yacc.c  */
     9063#line 2786 "parser.yy"
     9064    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9065    break;
     9066
     9067  case 736:
     9068
     9069/* Line 1806 of yacc.c  */
     9070#line 2788 "parser.yy"
     9071    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9072    break;
     9073
     9074  case 737:
     9075
     9076/* Line 1806 of yacc.c  */
     9077#line 2790 "parser.yy"
     9078    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9079    break;
     9080
     9081  case 738:
     9082
     9083/* Line 1806 of yacc.c  */
     9084#line 2792 "parser.yy"
     9085    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9086    break;
     9087
     9088  case 739:
     9089
     9090/* Line 1806 of yacc.c  */
     9091#line 2794 "parser.yy"
     9092    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     9093    break;
     9094
     9095  case 740:
     9096
     9097/* Line 1806 of yacc.c  */
     9098#line 2796 "parser.yy"
     9099    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     9100    break;
     9101
     9102  case 741:
     9103
     9104/* Line 1806 of yacc.c  */
     9105#line 2803 "parser.yy"
     9106    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9107    break;
     9108
     9109  case 742:
     9110
     9111/* Line 1806 of yacc.c  */
     9112#line 2805 "parser.yy"
     9113    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9114    break;
     9115
     9116  case 743:
     9117
     9118/* Line 1806 of yacc.c  */
     9119#line 2807 "parser.yy"
    90229120    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90239121    break;
    90249122
    9025   case 726:
    9026 
    9027 /* Line 1806 of yacc.c  */
    9028 #line 2741 "parser.yy"
    9029     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    9030     break;
    9031 
    9032   case 727:
    9033 
    9034 /* Line 1806 of yacc.c  */
    9035 #line 2743 "parser.yy"
    9036     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    9037     break;
    9038 
    9039   case 728:
    9040 
    9041 /* Line 1806 of yacc.c  */
    9042 #line 2748 "parser.yy"
    9043     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    9044     break;
    9045 
    9046   case 729:
    9047 
    9048 /* Line 1806 of yacc.c  */
    9049 #line 2750 "parser.yy"
    9050     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    9051     break;
    9052 
    9053   case 731:
    9054 
    9055 /* Line 1806 of yacc.c  */
    9056 #line 2777 "parser.yy"
    9057     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    9058     break;
    9059 
    9060   case 735:
    9061 
    9062 /* Line 1806 of yacc.c  */
    9063 #line 2788 "parser.yy"
    9064     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9065     break;
    9066 
    9067   case 736:
    9068 
    9069 /* Line 1806 of yacc.c  */
    9070 #line 2790 "parser.yy"
    9071     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9072     break;
    9073 
    9074   case 737:
    9075 
    9076 /* Line 1806 of yacc.c  */
    9077 #line 2792 "parser.yy"
    9078     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9079     break;
    9080 
    9081   case 738:
    9082 
    9083 /* Line 1806 of yacc.c  */
    9084 #line 2794 "parser.yy"
    9085     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9086     break;
    9087 
    9088   case 739:
    9089 
    9090 /* Line 1806 of yacc.c  */
    9091 #line 2796 "parser.yy"
    9092     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    9093     break;
    9094 
    9095   case 740:
    9096 
    9097 /* Line 1806 of yacc.c  */
    9098 #line 2798 "parser.yy"
    9099     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    9100     break;
    9101 
    9102   case 741:
    9103 
    9104 /* Line 1806 of yacc.c  */
    9105 #line 2805 "parser.yy"
     9123  case 744:
     9124
     9125/* Line 1806 of yacc.c  */
     9126#line 2809 "parser.yy"
    91069127    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91079128    break;
    91089129
    9109   case 742:
    9110 
    9111 /* Line 1806 of yacc.c  */
    9112 #line 2807 "parser.yy"
     9130  case 745:
     9131
     9132/* Line 1806 of yacc.c  */
     9133#line 2811 "parser.yy"
    91139134    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91149135    break;
    91159136
    9116   case 743:
    9117 
    9118 /* Line 1806 of yacc.c  */
    9119 #line 2809 "parser.yy"
     9137  case 746:
     9138
     9139/* Line 1806 of yacc.c  */
     9140#line 2813 "parser.yy"
    91209141    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91219142    break;
    91229143
    9123   case 744:
    9124 
    9125 /* Line 1806 of yacc.c  */
    9126 #line 2811 "parser.yy"
    9127     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9128     break;
    9129 
    9130   case 745:
    9131 
    9132 /* Line 1806 of yacc.c  */
    9133 #line 2813 "parser.yy"
    9134     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    9135     break;
    9136 
    9137   case 746:
    9138 
    9139 /* Line 1806 of yacc.c  */
    9140 #line 2815 "parser.yy"
    9141     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9142     break;
    9143 
    91449144  case 747:
    91459145
    91469146/* Line 1806 of yacc.c  */
    9147 #line 2820 "parser.yy"
     9147#line 2818 "parser.yy"
    91489148    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91499149    break;
     
    91529152
    91539153/* Line 1806 of yacc.c  */
     9154#line 2823 "parser.yy"
     9155    { (yyval.decl) = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), (yyvsp[(4) - (5)].decl), nullptr ); }
     9156    break;
     9157
     9158  case 749:
     9159
     9160/* Line 1806 of yacc.c  */
    91549161#line 2825 "parser.yy"
    9155     { (yyval.decl) = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), (yyvsp[(4) - (5)].decl), nullptr ); }
    9156     break;
    9157 
    9158   case 749:
     9162    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
     9163    break;
     9164
     9165  case 750:
    91599166
    91609167/* Line 1806 of yacc.c  */
     
    91639170    break;
    91649171
    9165   case 750:
    9166 
    9167 /* Line 1806 of yacc.c  */
    9168 #line 2829 "parser.yy"
    9169     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    9170     break;
    9171 
    91729172  case 753:
    91739173
    91749174/* Line 1806 of yacc.c  */
     9175#line 2851 "parser.yy"
     9176    { (yyval.en) = 0; }
     9177    break;
     9178
     9179  case 754:
     9180
     9181/* Line 1806 of yacc.c  */
    91759182#line 2853 "parser.yy"
    9176     { (yyval.en) = 0; }
    9177     break;
    9178 
    9179   case 754:
    9180 
    9181 /* Line 1806 of yacc.c  */
    9182 #line 2855 "parser.yy"
    91839183    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91849184    break;
     
    94189418
    94199419/* Line 2067 of yacc.c  */
    9420 #line 2858 "parser.yy"
     9420#line 2856 "parser.yy"
    94219421
    94229422// ----end of grammar----
  • src/Parser/parser.yy

    rfe7b281 rd1fbaa78  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Oct 19 22:19:33 2016
    13 // Update Count     : 2003
     12// Last Modified On : Wed Oct  5 14:10:46 2016
     13// Update Count     : 2002
    1414//
    1515
     
    278278//
    279279// Cforall compounds this problem by introducing type names local to the scope of a declaration (for instance, those
    280 // introduced through "forall" qualifiers), and by introducing "type generators" -- parameterized types.  This latter
     280// introduced through "forall" qualifiers), and by introducing "type generators" -- parametrized types.  This latter
    281281// type name creates a third class of identifiers that must be distinguished by the scanner.
    282282//
    283283// Since the scanner cannot distinguish among the different classes of identifiers without some context information, it
    284 // accesses a data structure (TypedefTable) to allow classification of an identifier that it has just read.  Semantic
    285 // actions during the parser update this data structure when the class of identifiers change.
     284// accesses a data structure (the TypedefTable) to allow classification of an identifier that it has just read.
     285// Semantic actions during the parser update this data structure when the class of identifiers change.
    286286//
    287287// Because the Cforall language is block-scoped, there is the possibility that an identifier can change its class in a
     
    289289// particular declaration, each declaration is itself a scope.  This requires distinguishing between type names that are
    290290// local to the current declaration scope and those that persist past the end of the declaration (i.e., names defined in
    291 // "typedef" or "otype" declarations).
     291// "typedef" or "type" declarations).
    292292//
    293293// The non-terminals "push" and "pop" derive the empty string; their only use is to denote the opening and closing of
     
    431431field_name:
    432432        no_attr_identifier
    433                 // x.1, x.[0, 0.0]
    434433        | INTEGERconstant
    435434        ;
     
    27242723        | multi_array_dimension type_specifier
    27252724                { $$ = $2->addNewArray( $1 ); }
    2726 
    27272725        | '[' ']' new_identifier_parameter_ptr
    27282726                { $$ = $3->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
Note: See TracChangeset for help on using the changeset viewer.