Changeset 4cb935e


Ignore:
Timestamp:
Dec 1, 2016, 12:46:34 PM (5 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
78b3f52
Parents:
148f729
Message:

0 and 1 now properly parse and resolve to zero_t and one_t respectively

Location:
src
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/ExpressionNode.cc

    r148f729 r4cb935e  
    4646// type.
    4747
    48 static Type::Qualifiers emptyQualifiers;                                // no qualifiers on constants
     48Type::Qualifiers emptyQualifiers;                               // no qualifiers on constants
    4949
    5050static inline bool checkU( char c ) { return c == 'u' || c == 'U'; }
     
    172172} // build_constantStr
    173173
     174Expression *build_constantZeroOne( const std::string & str ) {
     175        Expression * ret = new ConstantExpr( Constant( str == "0" ? (Type*)new ZeroType( emptyQualifiers ) : (Type*)new OneType( emptyQualifiers ), str ) );
     176        delete &str;                                                                            // created by lex
     177        return ret;
     178} // build_constantChar
     179
    174180Expression * build_field_name_FLOATINGconstant( const std::string & str ) {
    175181        // str is of the form A.B -> separate at the . and return member expression
  • src/Parser/ParseNode.h

    r148f729 r4cb935e  
    154154Expression * build_constantFloat( const std::string &str );
    155155Expression * build_constantChar( const std::string &str );
     156Expression * build_constantZeroOne( const std::string &str );
    156157ConstantExpr * build_constantStr( const std::string &str );
    157158Expression * build_field_name_FLOATINGconstant( const std::string & str );
  • src/Parser/TypeData.cc

    r148f729 r4cb935e  
    215215                break;
    216216          case Builtin:
    217                 assert( false );
    218                 // newtype->builtin = builtin;
     217                assert( builtintype == DeclarationNode::Zero || builtintype == DeclarationNode::One );
     218                newtype->builtintype = builtintype;
    219219                break;
    220220        } // switch
     
    445445          case TypeData::Builtin:
    446446                if(td->builtintype == DeclarationNode::Zero) {
    447                         return new ZeroType( buildQualifiers( td ) );
     447                        return new ZeroType( emptyQualifiers );
    448448                }
    449449                else if(td->builtintype == DeclarationNode::One) {
    450                         return new OneType( buildQualifiers( td ) );
     450                        return new OneType( emptyQualifiers );
    451451                }
    452452                else {
  • src/Parser/parser.cc

    r148f729 r4cb935e  
    700700     384,   386,   388,   390,   392,   394,   396,   398,   407,   408,
    701701     414,   415,   419,   420,   424,   425,   427,   429,   431,   433,
    702      435,   440,   442,   444,   450,   451,   459,   462,   464,   466,
    703      471,   484,   486,   488,   490,   492,   494,   496,   498,   500,
    704      502,   504,   511,   512,   518,   519,   520,   521,   525,   526,
    705      533,   534,   536,   538,   543,   544,   546,   551,   552,   554,
    706      559,   560,   562,   564,   566,   571,   572,   574,   579,   580,
    707      585,   586,   591,   592,   597,   598,   603,   604,   609,   610,
    708      613,   620,   625,   626,   634,   635,   639,   640,   641,   642,
    709      643,   644,   645,   646,   647,   648,   649,   650,   660,   662,
    710      667,   668,   673,   674,   680,   681,   687,   688,   689,   690,
    711      691,   692,   693,   694,   695,   705,   712,   714,   724,   725,
    712      730,   732,   738,   740,   744,   745,   750,   755,   758,   760,
    713      762,   772,   774,   785,   786,   788,   792,   794,   798,   799,
    714      804,   805,   809,   814,   815,   819,   821,   827,   828,   832,
    715      834,   836,   838,   844,   845,   849,   851,   856,   858,   860,
    716      865,   867,   872,   874,   878,   881,   885,   888,   892,   894,
    717      896,   898,   903,   905,   907,   912,   914,   916,   918,   920,
    718      925,   927,   929,   931,   936,   948,   949,   954,   956,   961,
    719      965,   967,   969,   971,   973,   979,   980,   986,   987,   991,
    720      992,   997,   999,  1005,  1006,  1008,  1013,  1018,  1028,  1030,
    721     1034,  1035,  1040,  1042,  1046,  1047,  1051,  1053,  1057,  1058,
    722     1062,  1063,  1067,  1068,  1083,  1084,  1085,  1086,  1087,  1091,
    723     1096,  1103,  1113,  1118,  1123,  1131,  1136,  1141,  1146,  1151,
    724     1181,  1186,  1193,  1195,  1202,  1207,  1212,  1223,  1228,  1233,
    725     1238,  1243,  1252,  1257,  1265,  1266,  1267,  1268,  1274,  1279,
    726     1287,  1288,  1289,  1290,  1294,  1295,  1296,  1297,  1302,  1303,
    727     1312,  1313,  1318,  1319,  1324,  1326,  1328,  1330,  1332,  1335,
    728     1334,  1346,  1347,  1349,  1359,  1360,  1365,  1367,  1369,  1371,
    729     1373,  1376,  1378,  1381,  1386,  1388,  1390,  1392,  1394,  1396,
    730     1398,  1400,  1402,  1404,  1406,  1408,  1410,  1412,  1414,  1420,
    731     1421,  1423,  1425,  1427,  1432,  1433,  1439,  1440,  1442,  1444,
    732     1449,  1451,  1453,  1455,  1460,  1461,  1463,  1465,  1470,  1471,
    733     1473,  1478,  1479,  1481,  1483,  1488,  1490,  1492,  1497,  1498,
    734     1502,  1504,  1510,  1509,  1513,  1515,  1520,  1522,  1528,  1529,
    735     1534,  1535,  1537,  1538,  1547,  1548,  1550,  1552,  1557,  1559,
    736     1565,  1566,  1568,  1571,  1574,  1579,  1580,  1585,  1590,  1594,
    737     1596,  1602,  1601,  1608,  1610,  1616,  1617,  1625,  1626,  1630,
    738     1631,  1632,  1634,  1636,  1643,  1644,  1646,  1648,  1653,  1654,
    739     1660,  1661,  1665,  1666,  1671,  1672,  1673,  1675,  1683,  1684,
    740     1686,  1689,  1691,  1695,  1696,  1697,  1699,  1701,  1705,  1710,
    741     1718,  1719,  1728,  1730,  1735,  1736,  1737,  1741,  1742,  1743,
    742     1747,  1748,  1749,  1753,  1754,  1755,  1760,  1761,  1762,  1763,
    743     1769,  1770,  1772,  1777,  1778,  1783,  1784,  1785,  1786,  1787,
    744     1802,  1803,  1808,  1809,  1815,  1817,  1820,  1822,  1824,  1847,
    745     1848,  1850,  1852,  1857,  1858,  1860,  1865,  1870,  1871,  1877,
    746     1876,  1880,  1884,  1886,  1888,  1894,  1895,  1900,  1905,  1907,
    747     1912,  1914,  1915,  1917,  1922,  1924,  1926,  1931,  1933,  1938,
    748     1943,  1951,  1957,  1956,  1970,  1971,  1976,  1977,  1981,  1986,
    749     1991,  1999,  2004,  2015,  2016,  2021,  2022,  2028,  2029,  2033,
    750     2034,  2035,  2038,  2037,  2048,  2057,  2063,  2069,  2078,  2084,
    751     2090,  2096,  2102,  2110,  2116,  2124,  2130,  2139,  2140,  2141,
    752     2145,  2149,  2151,  2156,  2157,  2161,  2162,  2167,  2173,  2174,
    753     2177,  2179,  2180,  2184,  2185,  2186,  2187,  2221,  2223,  2224,
    754     2226,  2231,  2236,  2241,  2243,  2245,  2250,  2252,  2254,  2256,
    755     2261,  2263,  2272,  2274,  2275,  2280,  2282,  2284,  2289,  2291,
    756     2293,  2298,  2300,  2302,  2311,  2312,  2313,  2317,  2319,  2321,
    757     2326,  2328,  2330,  2335,  2337,  2339,  2354,  2356,  2357,  2359,
    758     2364,  2365,  2370,  2372,  2374,  2379,  2381,  2383,  2385,  2390,
    759     2392,  2394,  2404,  2406,  2407,  2409,  2414,  2416,  2418,  2423,
    760     2425,  2427,  2429,  2434,  2436,  2438,  2469,  2471,  2472,  2474,
    761     2479,  2484,  2492,  2494,  2496,  2501,  2503,  2508,  2510,  2524,
    762     2525,  2527,  2532,  2534,  2536,  2538,  2540,  2545,  2546,  2548,
    763     2550,  2555,  2557,  2559,  2565,  2567,  2569,  2573,  2575,  2577,
    764     2579,  2593,  2594,  2596,  2601,  2603,  2605,  2607,  2609,  2614,
    765     2615,  2617,  2619,  2624,  2626,  2628,  2634,  2635,  2637,  2646,
    766     2649,  2651,  2654,  2656,  2658,  2671,  2672,  2674,  2679,  2681,
    767     2683,  2685,  2687,  2692,  2693,  2695,  2697,  2702,  2704,  2712,
    768     2713,  2714,  2719,  2720,  2724,  2726,  2728,  2730,  2732,  2734,
    769     2741,  2743,  2745,  2747,  2749,  2752,  2754,  2756,  2758,  2760,
    770     2765,  2767,  2769,  2774,  2800,  2801,  2803,  2807,  2808,  2812,
    771     2814,  2816,  2818,  2820,  2822,  2829,  2831,  2833,  2835,  2837,
    772     2839,  2844,  2851,  2853,  2871,  2873,  2878,  2879
     702     435,   440,   442,   444,   456,   457,   465,   468,   470,   472,
     703     477,   490,   492,   494,   496,   498,   500,   502,   504,   506,
     704     508,   510,   517,   518,   524,   525,   526,   527,   531,   532,
     705     539,   540,   542,   544,   549,   550,   552,   557,   558,   560,
     706     565,   566,   568,   570,   572,   577,   578,   580,   585,   586,
     707     591,   592,   597,   598,   603,   604,   609,   610,   615,   616,
     708     619,   626,   631,   632,   640,   641,   645,   646,   647,   648,
     709     649,   650,   651,   652,   653,   654,   655,   656,   666,   668,
     710     673,   674,   679,   680,   686,   687,   693,   694,   695,   696,
     711     697,   698,   699,   700,   701,   711,   718,   720,   730,   731,
     712     736,   738,   744,   746,   750,   751,   756,   761,   764,   766,
     713     768,   778,   780,   791,   792,   794,   798,   800,   804,   805,
     714     810,   811,   815,   820,   821,   825,   827,   833,   834,   838,
     715     840,   842,   844,   850,   851,   855,   857,   862,   864,   866,
     716     871,   873,   878,   880,   884,   887,   891,   894,   898,   900,
     717     902,   904,   909,   911,   913,   918,   920,   922,   924,   926,
     718     931,   933,   935,   937,   942,   954,   955,   960,   962,   967,
     719     971,   973,   975,   977,   979,   985,   986,   992,   993,   997,
     720     998,  1003,  1005,  1011,  1012,  1014,  1019,  1024,  1034,  1036,
     721    1040,  1041,  1046,  1048,  1052,  1053,  1057,  1059,  1063,  1064,
     722    1068,  1069,  1073,  1074,  1089,  1090,  1091,  1092,  1093,  1097,
     723    1102,  1109,  1119,  1124,  1129,  1137,  1142,  1147,  1152,  1157,
     724    1187,  1192,  1199,  1201,  1208,  1213,  1218,  1229,  1234,  1239,
     725    1244,  1249,  1258,  1263,  1271,  1272,  1273,  1274,  1280,  1285,
     726    1293,  1294,  1295,  1296,  1300,  1301,  1302,  1303,  1308,  1309,
     727    1318,  1319,  1324,  1325,  1330,  1332,  1334,  1336,  1338,  1341,
     728    1340,  1352,  1353,  1355,  1365,  1366,  1371,  1373,  1375,  1377,
     729    1379,  1382,  1384,  1387,  1392,  1394,  1396,  1398,  1400,  1402,
     730    1404,  1406,  1408,  1410,  1412,  1414,  1416,  1418,  1420,  1426,
     731    1427,  1429,  1431,  1433,  1438,  1439,  1445,  1446,  1448,  1450,
     732    1455,  1457,  1459,  1461,  1466,  1467,  1469,  1471,  1476,  1477,
     733    1479,  1484,  1485,  1487,  1489,  1494,  1496,  1498,  1503,  1504,
     734    1508,  1510,  1516,  1515,  1519,  1521,  1526,  1528,  1534,  1535,
     735    1540,  1541,  1543,  1544,  1553,  1554,  1556,  1558,  1563,  1565,
     736    1571,  1572,  1574,  1577,  1580,  1585,  1586,  1591,  1596,  1600,
     737    1602,  1608,  1607,  1614,  1616,  1622,  1623,  1631,  1632,  1636,
     738    1637,  1638,  1640,  1642,  1649,  1650,  1652,  1654,  1659,  1660,
     739    1666,  1667,  1671,  1672,  1677,  1678,  1679,  1681,  1689,  1690,
     740    1692,  1695,  1697,  1701,  1702,  1703,  1705,  1707,  1711,  1716,
     741    1724,  1725,  1734,  1736,  1741,  1742,  1743,  1747,  1748,  1749,
     742    1753,  1754,  1755,  1759,  1760,  1761,  1766,  1767,  1768,  1769,
     743    1775,  1776,  1778,  1783,  1784,  1789,  1790,  1791,  1792,  1793,
     744    1808,  1809,  1814,  1815,  1821,  1823,  1826,  1828,  1830,  1853,
     745    1854,  1856,  1858,  1863,  1864,  1866,  1871,  1876,  1877,  1883,
     746    1882,  1886,  1890,  1892,  1894,  1900,  1901,  1906,  1911,  1913,
     747    1918,  1920,  1921,  1923,  1928,  1930,  1932,  1937,  1939,  1944,
     748    1949,  1957,  1963,  1962,  1976,  1977,  1982,  1983,  1987,  1992,
     749    1997,  2005,  2010,  2021,  2022,  2027,  2028,  2034,  2035,  2039,
     750    2040,  2041,  2044,  2043,  2054,  2063,  2069,  2075,  2084,  2090,
     751    2096,  2102,  2108,  2116,  2122,  2130,  2136,  2145,  2146,  2147,
     752    2151,  2155,  2157,  2162,  2163,  2167,  2168,  2173,  2179,  2180,
     753    2183,  2185,  2186,  2190,  2191,  2192,  2193,  2227,  2229,  2230,
     754    2232,  2237,  2242,  2247,  2249,  2251,  2256,  2258,  2260,  2262,
     755    2267,  2269,  2278,  2280,  2281,  2286,  2288,  2290,  2295,  2297,
     756    2299,  2304,  2306,  2308,  2317,  2318,  2319,  2323,  2325,  2327,
     757    2332,  2334,  2336,  2341,  2343,  2345,  2360,  2362,  2363,  2365,
     758    2370,  2371,  2376,  2378,  2380,  2385,  2387,  2389,  2391,  2396,
     759    2398,  2400,  2410,  2412,  2413,  2415,  2420,  2422,  2424,  2429,
     760    2431,  2433,  2435,  2440,  2442,  2444,  2475,  2477,  2478,  2480,
     761    2485,  2490,  2498,  2500,  2502,  2507,  2509,  2514,  2516,  2530,
     762    2531,  2533,  2538,  2540,  2542,  2544,  2546,  2551,  2552,  2554,
     763    2556,  2561,  2563,  2565,  2571,  2573,  2575,  2579,  2581,  2583,
     764    2585,  2599,  2600,  2602,  2607,  2609,  2611,  2613,  2615,  2620,
     765    2621,  2623,  2625,  2630,  2632,  2634,  2640,  2641,  2643,  2652,
     766    2655,  2657,  2660,  2662,  2664,  2677,  2678,  2680,  2685,  2687,
     767    2689,  2691,  2693,  2698,  2699,  2701,  2703,  2708,  2710,  2718,
     768    2719,  2720,  2725,  2726,  2730,  2732,  2734,  2736,  2738,  2740,
     769    2747,  2749,  2751,  2753,  2755,  2758,  2760,  2762,  2764,  2766,
     770    2771,  2773,  2775,  2780,  2806,  2807,  2809,  2813,  2814,  2818,
     771    2820,  2822,  2824,  2826,  2828,  2835,  2837,  2839,  2841,  2843,
     772    2845,  2850,  2857,  2859,  2877,  2879,  2884,  2885
    773773};
    774774#endif
     
    45064506  case 22:
    45074507#line 364 "parser.yy" /* yacc.c:1646  */
    4508     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
     4508    { (yyval.en) = new ExpressionNode( build_constantZeroOne( *(yyvsp[0].tok) ) ); }
    45094509#line 4510 "Parser/parser.cc" /* yacc.c:1646  */
    45104510    break;
     
    46604660  case 53:
    46614661#line 445 "parser.yy" /* yacc.c:1646  */
    4662     { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[-1].tok) ), (yyvsp[0].en) ) ); }
    4663 #line 4664 "Parser/parser.cc" /* yacc.c:1646  */
     4662    {
     4663                        if( (*(yyvsp[-1].tok)) == "0" || (*(yyvsp[-1].tok)) == "1" ) {
     4664                                (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *(yyvsp[-1].tok) ), (yyvsp[0].en) ) );
     4665                        } else {
     4666                                (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[-1].tok) ), (yyvsp[0].en) ) );
     4667                        }
     4668                }
     4669#line 4670 "Parser/parser.cc" /* yacc.c:1646  */
    46644670    break;
    46654671
    46664672  case 54:
    4667 #line 450 "parser.yy" /* yacc.c:1646  */
     4673#line 456 "parser.yy" /* yacc.c:1646  */
    46684674    { (yyval.en) = nullptr; }
    4669 #line 4670 "Parser/parser.cc" /* yacc.c:1646  */
     4675#line 4676 "Parser/parser.cc" /* yacc.c:1646  */
    46704676    break;
    46714677
    46724678  case 55:
    4673 #line 452 "parser.yy" /* yacc.c:1646  */
     4679#line 458 "parser.yy" /* yacc.c:1646  */
    46744680    {
    46754681                        Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[0].tok) );
    46764682                        (yyval.en) = (yyvsp[-1].en) != nullptr ? new ExpressionNode( build_fieldSel( (yyvsp[-1].en),  constant ) ) : new ExpressionNode( constant );
    46774683                }
    4678 #line 4679 "Parser/parser.cc" /* yacc.c:1646  */
     4684#line 4685 "Parser/parser.cc" /* yacc.c:1646  */
    46794685    break;
    46804686
    46814687  case 57:
    4682 #line 463 "parser.yy" /* yacc.c:1646  */
     4688#line 469 "parser.yy" /* yacc.c:1646  */
    46834689    { (yyval.en) = (yyvsp[0].en); }
    4684 #line 4685 "Parser/parser.cc" /* yacc.c:1646  */
     4690#line 4691 "Parser/parser.cc" /* yacc.c:1646  */
    46854691    break;
    46864692
    46874693  case 58:
    4688 #line 465 "parser.yy" /* yacc.c:1646  */
     4694#line 471 "parser.yy" /* yacc.c:1646  */
    46894695    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
    4690 #line 4691 "Parser/parser.cc" /* yacc.c:1646  */
     4696#line 4697 "Parser/parser.cc" /* yacc.c:1646  */
    46914697    break;
    46924698
    46934699  case 59:
    4694 #line 467 "parser.yy" /* yacc.c:1646  */
     4700#line 473 "parser.yy" /* yacc.c:1646  */
    46954701    { (yyval.en) = (yyvsp[0].en)->set_extension( true ); }
    4696 #line 4697 "Parser/parser.cc" /* yacc.c:1646  */
     4702#line 4703 "Parser/parser.cc" /* yacc.c:1646  */
    46974703    break;
    46984704
    46994705  case 60:
    4700 #line 472 "parser.yy" /* yacc.c:1646  */
     4706#line 478 "parser.yy" /* yacc.c:1646  */
    47014707    {
    47024708                        switch ( (yyvsp[-1].op) ) {
     
    47114717                        }
    47124718                }
    4713 #line 4714 "Parser/parser.cc" /* yacc.c:1646  */
     4719#line 4720 "Parser/parser.cc" /* yacc.c:1646  */
    47144720    break;
    47154721
    47164722  case 61:
    4717 #line 485 "parser.yy" /* yacc.c:1646  */
     4723#line 491 "parser.yy" /* yacc.c:1646  */
    47184724    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[-1].op), (yyvsp[0].en) ) ); }
    4719 #line 4720 "Parser/parser.cc" /* yacc.c:1646  */
     4725#line 4726 "Parser/parser.cc" /* yacc.c:1646  */
    47204726    break;
    47214727
    47224728  case 62:
    4723 #line 487 "parser.yy" /* yacc.c:1646  */
     4729#line 493 "parser.yy" /* yacc.c:1646  */
    47244730    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[0].en) ) ); }
    4725 #line 4726 "Parser/parser.cc" /* yacc.c:1646  */
     4731#line 4732 "Parser/parser.cc" /* yacc.c:1646  */
    47264732    break;
    47274733
    47284734  case 63:
    4729 #line 489 "parser.yy" /* yacc.c:1646  */
     4735#line 495 "parser.yy" /* yacc.c:1646  */
    47304736    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[0].en) ) ); }
    4731 #line 4732 "Parser/parser.cc" /* yacc.c:1646  */
     4737#line 4738 "Parser/parser.cc" /* yacc.c:1646  */
    47324738    break;
    47334739
    47344740  case 64:
    4735 #line 491 "parser.yy" /* yacc.c:1646  */
     4741#line 497 "parser.yy" /* yacc.c:1646  */
    47364742    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[0].en) ) ); }
    4737 #line 4738 "Parser/parser.cc" /* yacc.c:1646  */
     4743#line 4744 "Parser/parser.cc" /* yacc.c:1646  */
    47384744    break;
    47394745
    47404746  case 65:
    4741 #line 493 "parser.yy" /* yacc.c:1646  */
     4747#line 499 "parser.yy" /* yacc.c:1646  */
    47424748    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[-1].decl) ) ); }
    4743 #line 4744 "Parser/parser.cc" /* yacc.c:1646  */
     4749#line 4750 "Parser/parser.cc" /* yacc.c:1646  */
    47444750    break;
    47454751
    47464752  case 66:
    4747 #line 495 "parser.yy" /* yacc.c:1646  */
     4753#line 501 "parser.yy" /* yacc.c:1646  */
    47484754    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[0].en) ) ); }
    4749 #line 4750 "Parser/parser.cc" /* yacc.c:1646  */
     4755#line 4756 "Parser/parser.cc" /* yacc.c:1646  */
    47504756    break;
    47514757
    47524758  case 67:
    4753 #line 497 "parser.yy" /* yacc.c:1646  */
     4759#line 503 "parser.yy" /* yacc.c:1646  */
    47544760    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[-1].decl) ) ); }
    4755 #line 4756 "Parser/parser.cc" /* yacc.c:1646  */
     4761#line 4762 "Parser/parser.cc" /* yacc.c:1646  */
    47564762    break;
    47574763
    47584764  case 68:
    4759 #line 499 "parser.yy" /* yacc.c:1646  */
     4765#line 505 "parser.yy" /* yacc.c:1646  */
    47604766    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[-3].decl), build_varref( (yyvsp[-1].tok) ) ) ); }
    4761 #line 4762 "Parser/parser.cc" /* yacc.c:1646  */
     4767#line 4768 "Parser/parser.cc" /* yacc.c:1646  */
    47624768    break;
    47634769
    47644770  case 69:
    4765 #line 501 "parser.yy" /* yacc.c:1646  */
     4771#line 507 "parser.yy" /* yacc.c:1646  */
    47664772    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[0].tok) ), nullptr ) ); }
    4767 #line 4768 "Parser/parser.cc" /* yacc.c:1646  */
     4773#line 4774 "Parser/parser.cc" /* yacc.c:1646  */
    47684774    break;
    47694775
    47704776  case 70:
    4771 #line 503 "parser.yy" /* yacc.c:1646  */
     4777#line 509 "parser.yy" /* yacc.c:1646  */
    47724778    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].en) ) ); }
    4773 #line 4774 "Parser/parser.cc" /* yacc.c:1646  */
     4779#line 4780 "Parser/parser.cc" /* yacc.c:1646  */
    47744780    break;
    47754781
    47764782  case 71:
    4777 #line 505 "parser.yy" /* yacc.c:1646  */
     4783#line 511 "parser.yy" /* yacc.c:1646  */
    47784784    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[-3].tok) ), (yyvsp[-1].decl) ) ); }
    4779 #line 4780 "Parser/parser.cc" /* yacc.c:1646  */
     4785#line 4786 "Parser/parser.cc" /* yacc.c:1646  */
    47804786    break;
    47814787
    47824788  case 72:
    4783 #line 511 "parser.yy" /* yacc.c:1646  */
     4789#line 517 "parser.yy" /* yacc.c:1646  */
    47844790    { (yyval.op) = OperKinds::PointTo; }
    4785 #line 4786 "Parser/parser.cc" /* yacc.c:1646  */
     4791#line 4792 "Parser/parser.cc" /* yacc.c:1646  */
    47864792    break;
    47874793
    47884794  case 73:
    4789 #line 512 "parser.yy" /* yacc.c:1646  */
     4795#line 518 "parser.yy" /* yacc.c:1646  */
    47904796    { (yyval.op) = OperKinds::AddressOf; }
    4791 #line 4792 "Parser/parser.cc" /* yacc.c:1646  */
     4797#line 4798 "Parser/parser.cc" /* yacc.c:1646  */
    47924798    break;
    47934799
    47944800  case 74:
    4795 #line 518 "parser.yy" /* yacc.c:1646  */
     4801#line 524 "parser.yy" /* yacc.c:1646  */
    47964802    { (yyval.op) = OperKinds::UnPlus; }
    4797 #line 4798 "Parser/parser.cc" /* yacc.c:1646  */
     4803#line 4804 "Parser/parser.cc" /* yacc.c:1646  */
    47984804    break;
    47994805
    48004806  case 75:
    4801 #line 519 "parser.yy" /* yacc.c:1646  */
     4807#line 525 "parser.yy" /* yacc.c:1646  */
    48024808    { (yyval.op) = OperKinds::UnMinus; }
    4803 #line 4804 "Parser/parser.cc" /* yacc.c:1646  */
     4809#line 4810 "Parser/parser.cc" /* yacc.c:1646  */
    48044810    break;
    48054811
    48064812  case 76:
    4807 #line 520 "parser.yy" /* yacc.c:1646  */
     4813#line 526 "parser.yy" /* yacc.c:1646  */
    48084814    { (yyval.op) = OperKinds::Neg; }
    4809 #line 4810 "Parser/parser.cc" /* yacc.c:1646  */
     4815#line 4816 "Parser/parser.cc" /* yacc.c:1646  */
    48104816    break;
    48114817
    48124818  case 77:
    4813 #line 521 "parser.yy" /* yacc.c:1646  */
     4819#line 527 "parser.yy" /* yacc.c:1646  */
    48144820    { (yyval.op) = OperKinds::BitNeg; }
    4815 #line 4816 "Parser/parser.cc" /* yacc.c:1646  */
     4821#line 4822 "Parser/parser.cc" /* yacc.c:1646  */
    48164822    break;
    48174823
    48184824  case 79:
    4819 #line 527 "parser.yy" /* yacc.c:1646  */
     4825#line 533 "parser.yy" /* yacc.c:1646  */
    48204826    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[-2].decl), (yyvsp[0].en) ) ); }
    4821 #line 4822 "Parser/parser.cc" /* yacc.c:1646  */
     4827#line 4828 "Parser/parser.cc" /* yacc.c:1646  */
    48224828    break;
    48234829
    48244830  case 81:
    4825 #line 535 "parser.yy" /* yacc.c:1646  */
     4831#line 541 "parser.yy" /* yacc.c:1646  */
    48264832    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4827 #line 4828 "Parser/parser.cc" /* yacc.c:1646  */
     4833#line 4834 "Parser/parser.cc" /* yacc.c:1646  */
    48284834    break;
    48294835
    48304836  case 82:
    4831 #line 537 "parser.yy" /* yacc.c:1646  */
     4837#line 543 "parser.yy" /* yacc.c:1646  */
    48324838    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4833 #line 4834 "Parser/parser.cc" /* yacc.c:1646  */
     4839#line 4840 "Parser/parser.cc" /* yacc.c:1646  */
    48344840    break;
    48354841
    48364842  case 83:
    4837 #line 539 "parser.yy" /* yacc.c:1646  */
     4843#line 545 "parser.yy" /* yacc.c:1646  */
    48384844    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4839 #line 4840 "Parser/parser.cc" /* yacc.c:1646  */
     4845#line 4846 "Parser/parser.cc" /* yacc.c:1646  */
    48404846    break;
    48414847
    48424848  case 85:
    4843 #line 545 "parser.yy" /* yacc.c:1646  */
     4849#line 551 "parser.yy" /* yacc.c:1646  */
    48444850    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4845 #line 4846 "Parser/parser.cc" /* yacc.c:1646  */
     4851#line 4852 "Parser/parser.cc" /* yacc.c:1646  */
    48464852    break;
    48474853
    48484854  case 86:
    4849 #line 547 "parser.yy" /* yacc.c:1646  */
     4855#line 553 "parser.yy" /* yacc.c:1646  */
    48504856    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4851 #line 4852 "Parser/parser.cc" /* yacc.c:1646  */
     4857#line 4858 "Parser/parser.cc" /* yacc.c:1646  */
    48524858    break;
    48534859
    48544860  case 88:
    4855 #line 553 "parser.yy" /* yacc.c:1646  */
     4861#line 559 "parser.yy" /* yacc.c:1646  */
    48564862    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4857 #line 4858 "Parser/parser.cc" /* yacc.c:1646  */
     4863#line 4864 "Parser/parser.cc" /* yacc.c:1646  */
    48584864    break;
    48594865
    48604866  case 89:
    4861 #line 555 "parser.yy" /* yacc.c:1646  */
     4867#line 561 "parser.yy" /* yacc.c:1646  */
    48624868    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4863 #line 4864 "Parser/parser.cc" /* yacc.c:1646  */
     4869#line 4870 "Parser/parser.cc" /* yacc.c:1646  */
    48644870    break;
    48654871
    48664872  case 91:
    4867 #line 561 "parser.yy" /* yacc.c:1646  */
     4873#line 567 "parser.yy" /* yacc.c:1646  */
    48684874    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4869 #line 4870 "Parser/parser.cc" /* yacc.c:1646  */
     4875#line 4876 "Parser/parser.cc" /* yacc.c:1646  */
    48704876    break;
    48714877
    48724878  case 92:
    4873 #line 563 "parser.yy" /* yacc.c:1646  */
     4879#line 569 "parser.yy" /* yacc.c:1646  */
    48744880    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4875 #line 4876 "Parser/parser.cc" /* yacc.c:1646  */
     4881#line 4882 "Parser/parser.cc" /* yacc.c:1646  */
    48764882    break;
    48774883
    48784884  case 93:
    4879 #line 565 "parser.yy" /* yacc.c:1646  */
     4885#line 571 "parser.yy" /* yacc.c:1646  */
    48804886    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4881 #line 4882 "Parser/parser.cc" /* yacc.c:1646  */
     4887#line 4888 "Parser/parser.cc" /* yacc.c:1646  */
    48824888    break;
    48834889
    48844890  case 94:
    4885 #line 567 "parser.yy" /* yacc.c:1646  */
     4891#line 573 "parser.yy" /* yacc.c:1646  */
    48864892    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4887 #line 4888 "Parser/parser.cc" /* yacc.c:1646  */
     4893#line 4894 "Parser/parser.cc" /* yacc.c:1646  */
    48884894    break;
    48894895
    48904896  case 96:
    4891 #line 573 "parser.yy" /* yacc.c:1646  */
     4897#line 579 "parser.yy" /* yacc.c:1646  */
    48924898    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4893 #line 4894 "Parser/parser.cc" /* yacc.c:1646  */
     4899#line 4900 "Parser/parser.cc" /* yacc.c:1646  */
    48944900    break;
    48954901
    48964902  case 97:
    4897 #line 575 "parser.yy" /* yacc.c:1646  */
     4903#line 581 "parser.yy" /* yacc.c:1646  */
    48984904    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4899 #line 4900 "Parser/parser.cc" /* yacc.c:1646  */
     4905#line 4906 "Parser/parser.cc" /* yacc.c:1646  */
    49004906    break;
    49014907
    49024908  case 99:
    4903 #line 581 "parser.yy" /* yacc.c:1646  */
     4909#line 587 "parser.yy" /* yacc.c:1646  */
    49044910    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4905 #line 4906 "Parser/parser.cc" /* yacc.c:1646  */
     4911#line 4912 "Parser/parser.cc" /* yacc.c:1646  */
    49064912    break;
    49074913
    49084914  case 101:
    4909 #line 587 "parser.yy" /* yacc.c:1646  */
     4915#line 593 "parser.yy" /* yacc.c:1646  */
    49104916    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4911 #line 4912 "Parser/parser.cc" /* yacc.c:1646  */
     4917#line 4918 "Parser/parser.cc" /* yacc.c:1646  */
    49124918    break;
    49134919
    49144920  case 103:
    4915 #line 593 "parser.yy" /* yacc.c:1646  */
     4921#line 599 "parser.yy" /* yacc.c:1646  */
    49164922    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4917 #line 4918 "Parser/parser.cc" /* yacc.c:1646  */
     4923#line 4924 "Parser/parser.cc" /* yacc.c:1646  */
    49184924    break;
    49194925
    49204926  case 105:
    4921 #line 599 "parser.yy" /* yacc.c:1646  */
     4927#line 605 "parser.yy" /* yacc.c:1646  */
    49224928    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), true ) ); }
    4923 #line 4924 "Parser/parser.cc" /* yacc.c:1646  */
     4929#line 4930 "Parser/parser.cc" /* yacc.c:1646  */
    49244930    break;
    49254931
    49264932  case 107:
    4927 #line 605 "parser.yy" /* yacc.c:1646  */
     4933#line 611 "parser.yy" /* yacc.c:1646  */
    49284934    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[-2].en), (yyvsp[0].en), false ) ); }
    4929 #line 4930 "Parser/parser.cc" /* yacc.c:1646  */
     4935#line 4936 "Parser/parser.cc" /* yacc.c:1646  */
    49304936    break;
    49314937
    49324938  case 109:
    4933 #line 611 "parser.yy" /* yacc.c:1646  */
     4939#line 617 "parser.yy" /* yacc.c:1646  */
    49344940    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-4].en), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4935 #line 4936 "Parser/parser.cc" /* yacc.c:1646  */
     4941#line 4942 "Parser/parser.cc" /* yacc.c:1646  */
    49364942    break;
    49374943
    49384944  case 110:
    4939 #line 614 "parser.yy" /* yacc.c:1646  */
     4945#line 620 "parser.yy" /* yacc.c:1646  */
    49404946    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[-3].en), (yyvsp[-3].en), (yyvsp[0].en) ) ); }
    4941 #line 4942 "Parser/parser.cc" /* yacc.c:1646  */
     4947#line 4948 "Parser/parser.cc" /* yacc.c:1646  */
    49424948    break;
    49434949
    49444950  case 113:
    4945 #line 627 "parser.yy" /* yacc.c:1646  */
     4951#line 633 "parser.yy" /* yacc.c:1646  */
    49464952    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[-1].op), (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    4947 #line 4948 "Parser/parser.cc" /* yacc.c:1646  */
     4953#line 4954 "Parser/parser.cc" /* yacc.c:1646  */
    49484954    break;
    49494955
    49504956  case 114:
    4951 #line 634 "parser.yy" /* yacc.c:1646  */
     4957#line 640 "parser.yy" /* yacc.c:1646  */
    49524958    { (yyval.en) = nullptr; }
    4953 #line 4954 "Parser/parser.cc" /* yacc.c:1646  */
     4959#line 4960 "Parser/parser.cc" /* yacc.c:1646  */
    49544960    break;
    49554961
    49564962  case 116:
    4957 #line 639 "parser.yy" /* yacc.c:1646  */
     4963#line 645 "parser.yy" /* yacc.c:1646  */
    49584964    { (yyval.op) = OperKinds::Assign; }
    4959 #line 4960 "Parser/parser.cc" /* yacc.c:1646  */
     4965#line 4966 "Parser/parser.cc" /* yacc.c:1646  */
    49604966    break;
    49614967
    49624968  case 117:
    4963 #line 640 "parser.yy" /* yacc.c:1646  */
     4969#line 646 "parser.yy" /* yacc.c:1646  */
    49644970    { (yyval.op) = OperKinds::AtAssn; }
    4965 #line 4966 "Parser/parser.cc" /* yacc.c:1646  */
     4971#line 4972 "Parser/parser.cc" /* yacc.c:1646  */
    49664972    break;
    49674973
    49684974  case 118:
    4969 #line 641 "parser.yy" /* yacc.c:1646  */
     4975#line 647 "parser.yy" /* yacc.c:1646  */
    49704976    { (yyval.op) = OperKinds::MulAssn; }
    4971 #line 4972 "Parser/parser.cc" /* yacc.c:1646  */
     4977#line 4978 "Parser/parser.cc" /* yacc.c:1646  */
    49724978    break;
    49734979
    49744980  case 119:
    4975 #line 642 "parser.yy" /* yacc.c:1646  */
     4981#line 648 "parser.yy" /* yacc.c:1646  */
    49764982    { (yyval.op) = OperKinds::DivAssn; }
    4977 #line 4978 "Parser/parser.cc" /* yacc.c:1646  */
     4983#line 4984 "Parser/parser.cc" /* yacc.c:1646  */
    49784984    break;
    49794985
    49804986  case 120:
    4981 #line 643 "parser.yy" /* yacc.c:1646  */
     4987#line 649 "parser.yy" /* yacc.c:1646  */
    49824988    { (yyval.op) = OperKinds::ModAssn; }
    4983 #line 4984 "Parser/parser.cc" /* yacc.c:1646  */
     4989#line 4990 "Parser/parser.cc" /* yacc.c:1646  */
    49844990    break;
    49854991
    49864992  case 121:
    4987 #line 644 "parser.yy" /* yacc.c:1646  */
     4993#line 650 "parser.yy" /* yacc.c:1646  */
    49884994    { (yyval.op) = OperKinds::PlusAssn; }
    4989 #line 4990 "Parser/parser.cc" /* yacc.c:1646  */
     4995#line 4996 "Parser/parser.cc" /* yacc.c:1646  */
    49904996    break;
    49914997
    49924998  case 122:
    4993 #line 645 "parser.yy" /* yacc.c:1646  */
     4999#line 651 "parser.yy" /* yacc.c:1646  */
    49945000    { (yyval.op) = OperKinds::MinusAssn; }
    4995 #line 4996 "Parser/parser.cc" /* yacc.c:1646  */
     5001#line 5002 "Parser/parser.cc" /* yacc.c:1646  */
    49965002    break;
    49975003
    49985004  case 123:
    4999 #line 646 "parser.yy" /* yacc.c:1646  */
     5005#line 652 "parser.yy" /* yacc.c:1646  */
    50005006    { (yyval.op) = OperKinds::LSAssn; }
    5001 #line 5002 "Parser/parser.cc" /* yacc.c:1646  */
     5007#line 5008 "Parser/parser.cc" /* yacc.c:1646  */
    50025008    break;
    50035009
    50045010  case 124:
    5005 #line 647 "parser.yy" /* yacc.c:1646  */
     5011#line 653 "parser.yy" /* yacc.c:1646  */
    50065012    { (yyval.op) = OperKinds::RSAssn; }
    5007 #line 5008 "Parser/parser.cc" /* yacc.c:1646  */
     5013#line 5014 "Parser/parser.cc" /* yacc.c:1646  */
    50085014    break;
    50095015
    50105016  case 125:
    5011 #line 648 "parser.yy" /* yacc.c:1646  */
     5017#line 654 "parser.yy" /* yacc.c:1646  */
    50125018    { (yyval.op) = OperKinds::AndAssn; }
    5013 #line 5014 "Parser/parser.cc" /* yacc.c:1646  */
     5019#line 5020 "Parser/parser.cc" /* yacc.c:1646  */
    50145020    break;
    50155021
    50165022  case 126:
    5017 #line 649 "parser.yy" /* yacc.c:1646  */
     5023#line 655 "parser.yy" /* yacc.c:1646  */
    50185024    { (yyval.op) = OperKinds::ERAssn; }
    5019 #line 5020 "Parser/parser.cc" /* yacc.c:1646  */
     5025#line 5026 "Parser/parser.cc" /* yacc.c:1646  */
    50205026    break;
    50215027
    50225028  case 127:
    5023 #line 650 "parser.yy" /* yacc.c:1646  */
     5029#line 656 "parser.yy" /* yacc.c:1646  */
    50245030    { (yyval.op) = OperKinds::OrAssn; }
    5025 #line 5026 "Parser/parser.cc" /* yacc.c:1646  */
     5031#line 5032 "Parser/parser.cc" /* yacc.c:1646  */
    50265032    break;
    50275033
    50285034  case 128:
    5029 #line 661 "parser.yy" /* yacc.c:1646  */
     5035#line 667 "parser.yy" /* yacc.c:1646  */
    50305036    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[-2].en) ) ) ); }
    5031 #line 5032 "Parser/parser.cc" /* yacc.c:1646  */
     5037#line 5038 "Parser/parser.cc" /* yacc.c:1646  */
    50325038    break;
    50335039
    50345040  case 129:
    5035 #line 663 "parser.yy" /* yacc.c:1646  */
     5041#line 669 "parser.yy" /* yacc.c:1646  */
    50365042    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[-4].en)->set_last( (yyvsp[-2].en) ) ) ); }
    5037 #line 5038 "Parser/parser.cc" /* yacc.c:1646  */
     5043#line 5044 "Parser/parser.cc" /* yacc.c:1646  */
    50385044    break;
    50395045
    50405046  case 131:
    5041 #line 669 "parser.yy" /* yacc.c:1646  */
     5047#line 675 "parser.yy" /* yacc.c:1646  */
    50425048    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
    5043 #line 5044 "Parser/parser.cc" /* yacc.c:1646  */
     5049#line 5050 "Parser/parser.cc" /* yacc.c:1646  */
    50445050    break;
    50455051
    50465052  case 133:
    5047 #line 675 "parser.yy" /* yacc.c:1646  */
     5053#line 681 "parser.yy" /* yacc.c:1646  */
    50485054    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    5049 #line 5050 "Parser/parser.cc" /* yacc.c:1646  */
     5055#line 5056 "Parser/parser.cc" /* yacc.c:1646  */
    50505056    break;
    50515057
    50525058  case 134:
    5053 #line 680 "parser.yy" /* yacc.c:1646  */
     5059#line 686 "parser.yy" /* yacc.c:1646  */
    50545060    { (yyval.en) = 0; }
    5055 #line 5056 "Parser/parser.cc" /* yacc.c:1646  */
     5061#line 5062 "Parser/parser.cc" /* yacc.c:1646  */
    50565062    break;
    50575063
    50585064  case 138:
    5059 #line 689 "parser.yy" /* yacc.c:1646  */
     5065#line 695 "parser.yy" /* yacc.c:1646  */
    50605066    { (yyval.sn) = (yyvsp[0].sn); }
    5061 #line 5062 "Parser/parser.cc" /* yacc.c:1646  */
     5067#line 5068 "Parser/parser.cc" /* yacc.c:1646  */
    50625068    break;
    50635069
    50645070  case 144:
    5065 #line 696 "parser.yy" /* yacc.c:1646  */
     5071#line 702 "parser.yy" /* yacc.c:1646  */
    50665072    {
    50675073                        Token fn;
     
    50695075                        (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[-4].en) )->set_last( (yyvsp[-2].en) ) ) ) ) );
    50705076                }
    5071 #line 5072 "Parser/parser.cc" /* yacc.c:1646  */
     5077#line 5078 "Parser/parser.cc" /* yacc.c:1646  */
    50725078    break;
    50735079
    50745080  case 145:
    5075 #line 706 "parser.yy" /* yacc.c:1646  */
     5081#line 712 "parser.yy" /* yacc.c:1646  */
    50765082    {
    50775083                        (yyval.sn) = (yyvsp[0].sn)->add_label( (yyvsp[-3].tok) );
    50785084                }
    5079 #line 5080 "Parser/parser.cc" /* yacc.c:1646  */
     5085#line 5086 "Parser/parser.cc" /* yacc.c:1646  */
    50805086    break;
    50815087
    50825088  case 146:
    5083 #line 713 "parser.yy" /* yacc.c:1646  */
     5089#line 719 "parser.yy" /* yacc.c:1646  */
    50845090    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    5085 #line 5086 "Parser/parser.cc" /* yacc.c:1646  */
     5091#line 5092 "Parser/parser.cc" /* yacc.c:1646  */
    50865092    break;
    50875093
    50885094  case 147:
    5089 #line 720 "parser.yy" /* yacc.c:1646  */
     5095#line 726 "parser.yy" /* yacc.c:1646  */
    50905096    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[-2].sn) ) ); }
    5091 #line 5092 "Parser/parser.cc" /* yacc.c:1646  */
     5097#line 5098 "Parser/parser.cc" /* yacc.c:1646  */
    50925098    break;
    50935099
    50945100  case 149:
    5095 #line 726 "parser.yy" /* yacc.c:1646  */
     5101#line 732 "parser.yy" /* yacc.c:1646  */
    50965102    { if ( (yyvsp[-2].sn) != 0 ) { (yyvsp[-2].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-2].sn); } }
    5097 #line 5098 "Parser/parser.cc" /* yacc.c:1646  */
     5103#line 5104 "Parser/parser.cc" /* yacc.c:1646  */
    50985104    break;
    50995105
    51005106  case 150:
    5101 #line 731 "parser.yy" /* yacc.c:1646  */
     5107#line 737 "parser.yy" /* yacc.c:1646  */
    51025108    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
    5103 #line 5104 "Parser/parser.cc" /* yacc.c:1646  */
     5109#line 5110 "Parser/parser.cc" /* yacc.c:1646  */
    51045110    break;
    51055111
    51065112  case 151:
    5107 #line 733 "parser.yy" /* yacc.c:1646  */
     5113#line 739 "parser.yy" /* yacc.c:1646  */
    51085114    {   // mark all fields in list
    51095115                        for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    51115117                        (yyval.sn) = new StatementNode( (yyvsp[0].decl) );
    51125118                }
    5113 #line 5114 "Parser/parser.cc" /* yacc.c:1646  */
     5119#line 5120 "Parser/parser.cc" /* yacc.c:1646  */
    51145120    break;
    51155121
    51165122  case 152:
    5117 #line 739 "parser.yy" /* yacc.c:1646  */
     5123#line 745 "parser.yy" /* yacc.c:1646  */
    51185124    { (yyval.sn) = new StatementNode( (yyvsp[0].decl) ); }
    5119 #line 5120 "Parser/parser.cc" /* yacc.c:1646  */
     5125#line 5126 "Parser/parser.cc" /* yacc.c:1646  */
    51205126    break;
    51215127
    51225128  case 155:
    5123 #line 746 "parser.yy" /* yacc.c:1646  */
     5129#line 752 "parser.yy" /* yacc.c:1646  */
    51245130    { if ( (yyvsp[-1].sn) != 0 ) { (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ); (yyval.sn) = (yyvsp[-1].sn); } }
    5125 #line 5126 "Parser/parser.cc" /* yacc.c:1646  */
     5131#line 5132 "Parser/parser.cc" /* yacc.c:1646  */
    51265132    break;
    51275133
    51285134  case 156:
    5129 #line 751 "parser.yy" /* yacc.c:1646  */
     5135#line 757 "parser.yy" /* yacc.c:1646  */
    51305136    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[-1].en) ) ); }
    5131 #line 5132 "Parser/parser.cc" /* yacc.c:1646  */
     5137#line 5138 "Parser/parser.cc" /* yacc.c:1646  */
    51325138    break;
    51335139
    51345140  case 157:
    5135 #line 757 "parser.yy" /* yacc.c:1646  */
     5141#line 763 "parser.yy" /* yacc.c:1646  */
    51365142    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-2].en), (yyvsp[0].sn), nullptr ) ); }
    5137 #line 5138 "Parser/parser.cc" /* yacc.c:1646  */
     5143#line 5144 "Parser/parser.cc" /* yacc.c:1646  */
    51385144    break;
    51395145
    51405146  case 158:
    5141 #line 759 "parser.yy" /* yacc.c:1646  */
     5147#line 765 "parser.yy" /* yacc.c:1646  */
    51425148    { (yyval.sn) = new StatementNode( build_if( (yyvsp[-4].en), (yyvsp[-2].sn), (yyvsp[0].sn) ) ); }
    5143 #line 5144 "Parser/parser.cc" /* yacc.c:1646  */
     5149#line 5150 "Parser/parser.cc" /* yacc.c:1646  */
    51445150    break;
    51455151
    51465152  case 159:
    5147 #line 761 "parser.yy" /* yacc.c:1646  */
     5153#line 767 "parser.yy" /* yacc.c:1646  */
    51485154    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
    5149 #line 5150 "Parser/parser.cc" /* yacc.c:1646  */
     5155#line 5156 "Parser/parser.cc" /* yacc.c:1646  */
    51505156    break;
    51515157
    51525158  case 160:
    5153 #line 763 "parser.yy" /* yacc.c:1646  */
     5159#line 769 "parser.yy" /* yacc.c:1646  */
    51545160    {
    51555161                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
     
    51615167                        (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
    51625168                }
    5163 #line 5164 "Parser/parser.cc" /* yacc.c:1646  */
     5169#line 5170 "Parser/parser.cc" /* yacc.c:1646  */
    51645170    break;
    51655171
    51665172  case 161:
    5167 #line 773 "parser.yy" /* yacc.c:1646  */
     5173#line 779 "parser.yy" /* yacc.c:1646  */
    51685174    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
    5169 #line 5170 "Parser/parser.cc" /* yacc.c:1646  */
     5175#line 5176 "Parser/parser.cc" /* yacc.c:1646  */
    51705176    break;
    51715177
    51725178  case 162:
    5173 #line 775 "parser.yy" /* yacc.c:1646  */
     5179#line 781 "parser.yy" /* yacc.c:1646  */
    51745180    {
    51755181                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[-6].en), (yyvsp[-1].sn) ) );
    51765182                        (yyval.sn) = (yyvsp[-2].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[-2].decl) ))->set_last( sw )) ) ) : sw;
    51775183                }
    5178 #line 5179 "Parser/parser.cc" /* yacc.c:1646  */
     5184#line 5185 "Parser/parser.cc" /* yacc.c:1646  */
    51795185    break;
    51805186
    51815187  case 163:
    5182 #line 785 "parser.yy" /* yacc.c:1646  */
     5188#line 791 "parser.yy" /* yacc.c:1646  */
    51835189    { (yyval.en) = (yyvsp[0].en); }
    5184 #line 5185 "Parser/parser.cc" /* yacc.c:1646  */
     5190#line 5191 "Parser/parser.cc" /* yacc.c:1646  */
    51855191    break;
    51865192
    51875193  case 164:
    5188 #line 787 "parser.yy" /* yacc.c:1646  */
     5194#line 793 "parser.yy" /* yacc.c:1646  */
    51895195    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    5190 #line 5191 "Parser/parser.cc" /* yacc.c:1646  */
     5196#line 5197 "Parser/parser.cc" /* yacc.c:1646  */
    51915197    break;
    51925198
    51935199  case 166:
    5194 #line 792 "parser.yy" /* yacc.c:1646  */
     5200#line 798 "parser.yy" /* yacc.c:1646  */
    51955201    { (yyval.sn) = new StatementNode( build_case( (yyvsp[0].en) ) ); }
    5196 #line 5197 "Parser/parser.cc" /* yacc.c:1646  */
     5202#line 5203 "Parser/parser.cc" /* yacc.c:1646  */
    51975203    break;
    51985204
    51995205  case 167:
    5200 #line 794 "parser.yy" /* yacc.c:1646  */
     5206#line 800 "parser.yy" /* yacc.c:1646  */
    52015207    { (yyval.sn) = (StatementNode *)((yyvsp[-2].sn)->set_last( new StatementNode( build_case( (yyvsp[0].en) ) ) ) ); }
    5202 #line 5203 "Parser/parser.cc" /* yacc.c:1646  */
     5208#line 5209 "Parser/parser.cc" /* yacc.c:1646  */
    52035209    break;
    52045210
    52055211  case 168:
    5206 #line 798 "parser.yy" /* yacc.c:1646  */
     5212#line 804 "parser.yy" /* yacc.c:1646  */
    52075213    { (yyval.sn) = (yyvsp[-1].sn); }
    5208 #line 5209 "Parser/parser.cc" /* yacc.c:1646  */
     5214#line 5215 "Parser/parser.cc" /* yacc.c:1646  */
    52095215    break;
    52105216
    52115217  case 169:
    5212 #line 799 "parser.yy" /* yacc.c:1646  */
     5218#line 805 "parser.yy" /* yacc.c:1646  */
    52135219    { (yyval.sn) = new StatementNode( build_default() ); }
    5214 #line 5215 "Parser/parser.cc" /* yacc.c:1646  */
     5220#line 5221 "Parser/parser.cc" /* yacc.c:1646  */
    52155221    break;
    52165222
    52175223  case 171:
    5218 #line 805 "parser.yy" /* yacc.c:1646  */
     5224#line 811 "parser.yy" /* yacc.c:1646  */
    52195225    { (yyval.sn) = (StatementNode *)( (yyvsp[-1].sn)->set_last( (yyvsp[0].sn) )); }
    5220 #line 5221 "Parser/parser.cc" /* yacc.c:1646  */
     5226#line 5227 "Parser/parser.cc" /* yacc.c:1646  */
    52215227    break;
    52225228
    52235229  case 172:
    5224 #line 809 "parser.yy" /* yacc.c:1646  */
     5230#line 815 "parser.yy" /* yacc.c:1646  */
    52255231    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
    5226 #line 5227 "Parser/parser.cc" /* yacc.c:1646  */
     5232#line 5233 "Parser/parser.cc" /* yacc.c:1646  */
    52275233    break;
    52285234
    52295235  case 173:
    5230 #line 814 "parser.yy" /* yacc.c:1646  */
     5236#line 820 "parser.yy" /* yacc.c:1646  */
    52315237    { (yyval.sn) = 0; }
    5232 #line 5233 "Parser/parser.cc" /* yacc.c:1646  */
     5238#line 5239 "Parser/parser.cc" /* yacc.c:1646  */
    52335239    break;
    52345240
    52355241  case 175:
    5236 #line 820 "parser.yy" /* yacc.c:1646  */
     5242#line 826 "parser.yy" /* yacc.c:1646  */
    52375243    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ); }
    5238 #line 5239 "Parser/parser.cc" /* yacc.c:1646  */
     5244#line 5245 "Parser/parser.cc" /* yacc.c:1646  */
    52395245    break;
    52405246
    52415247  case 176:
    5242 #line 822 "parser.yy" /* yacc.c:1646  */
     5248#line 828 "parser.yy" /* yacc.c:1646  */
    52435249    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[0].sn) ) ) ) ) ); }
    5244 #line 5245 "Parser/parser.cc" /* yacc.c:1646  */
     5250#line 5251 "Parser/parser.cc" /* yacc.c:1646  */
    52455251    break;
    52465252
    52475253  case 177:
    5248 #line 827 "parser.yy" /* yacc.c:1646  */
     5254#line 833 "parser.yy" /* yacc.c:1646  */
    52495255    { (yyval.sn) = 0; }
    5250 #line 5251 "Parser/parser.cc" /* yacc.c:1646  */
     5256#line 5257 "Parser/parser.cc" /* yacc.c:1646  */
    52515257    break;
    52525258
    52535259  case 179:
    5254 #line 833 "parser.yy" /* yacc.c:1646  */
     5260#line 839 "parser.yy" /* yacc.c:1646  */
    52555261    { (yyval.sn) = (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ); }
    5256 #line 5257 "Parser/parser.cc" /* yacc.c:1646  */
     5262#line 5263 "Parser/parser.cc" /* yacc.c:1646  */
    52575263    break;
    52585264
    52595265  case 180:
    5260 #line 835 "parser.yy" /* yacc.c:1646  */
     5266#line 841 "parser.yy" /* yacc.c:1646  */
    52615267    { (yyval.sn) = (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ); }
    5262 #line 5263 "Parser/parser.cc" /* yacc.c:1646  */
     5268#line 5269 "Parser/parser.cc" /* yacc.c:1646  */
    52635269    break;
    52645270
    52655271  case 181:
    5266 #line 837 "parser.yy" /* yacc.c:1646  */
     5272#line 843 "parser.yy" /* yacc.c:1646  */
    52675273    { (yyval.sn) = (StatementNode *)( (yyvsp[-2].sn)->set_last( (yyvsp[-1].sn)->append_last_case( (yyvsp[0].sn) ))); }
    5268 #line 5269 "Parser/parser.cc" /* yacc.c:1646  */
     5274#line 5275 "Parser/parser.cc" /* yacc.c:1646  */
    52695275    break;
    52705276
    52715277  case 182:
    5272 #line 839 "parser.yy" /* yacc.c:1646  */
     5278#line 845 "parser.yy" /* yacc.c:1646  */
    52735279    { (yyval.sn) = (StatementNode *)( (yyvsp[-3].sn)->set_last( (yyvsp[-2].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[-1].sn)->set_last( (yyvsp[0].sn) ) ) ) ) ) ); }
    5274 #line 5275 "Parser/parser.cc" /* yacc.c:1646  */
     5280#line 5281 "Parser/parser.cc" /* yacc.c:1646  */
    52755281    break;
    52765282
    52775283  case 183:
    5278 #line 844 "parser.yy" /* yacc.c:1646  */
     5284#line 850 "parser.yy" /* yacc.c:1646  */
    52795285    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    5280 #line 5281 "Parser/parser.cc" /* yacc.c:1646  */
     5286#line 5287 "Parser/parser.cc" /* yacc.c:1646  */
    52815287    break;
    52825288
    52835289  case 185:
    5284 #line 850 "parser.yy" /* yacc.c:1646  */
    5285     { (yyval.sn) = 0; }
    5286 #line 5287 "Parser/parser.cc" /* yacc.c:1646  */
    5287     break;
    5288 
    5289   case 186:
    5290 #line 852 "parser.yy" /* yacc.c:1646  */
     5290#line 856 "parser.yy" /* yacc.c:1646  */
    52915291    { (yyval.sn) = 0; }
    52925292#line 5293 "Parser/parser.cc" /* yacc.c:1646  */
    52935293    break;
    52945294
     5295  case 186:
     5296#line 858 "parser.yy" /* yacc.c:1646  */
     5297    { (yyval.sn) = 0; }
     5298#line 5299 "Parser/parser.cc" /* yacc.c:1646  */
     5299    break;
     5300
    52955301  case 187:
    5296 #line 857 "parser.yy" /* yacc.c:1646  */
     5302#line 863 "parser.yy" /* yacc.c:1646  */
    52975303    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[0].sn) ) ); }
    5298 #line 5299 "Parser/parser.cc" /* yacc.c:1646  */
     5304#line 5305 "Parser/parser.cc" /* yacc.c:1646  */
    52995305    break;
    53005306
    53015307  case 188:
    5302 #line 859 "parser.yy" /* yacc.c:1646  */
     5308#line 865 "parser.yy" /* yacc.c:1646  */
    53035309    { (yyval.sn) = new StatementNode( build_while( (yyvsp[-2].en), (yyvsp[-5].sn), true ) ); }
    5304 #line 5305 "Parser/parser.cc" /* yacc.c:1646  */
     5310#line 5311 "Parser/parser.cc" /* yacc.c:1646  */
    53055311    break;
    53065312
    53075313  case 189:
    5308 #line 861 "parser.yy" /* yacc.c:1646  */
     5314#line 867 "parser.yy" /* yacc.c:1646  */
    53095315    { (yyval.sn) = new StatementNode( build_for( (yyvsp[-2].fctl), (yyvsp[0].sn) ) ); }
    5310 #line 5311 "Parser/parser.cc" /* yacc.c:1646  */
     5316#line 5317 "Parser/parser.cc" /* yacc.c:1646  */
    53115317    break;
    53125318
    53135319  case 190:
    5314 #line 866 "parser.yy" /* yacc.c:1646  */
     5320#line 872 "parser.yy" /* yacc.c:1646  */
    53155321    { (yyval.fctl) = new ForCtl( (yyvsp[-5].en), (yyvsp[-2].en), (yyvsp[0].en) ); }
    5316 #line 5317 "Parser/parser.cc" /* yacc.c:1646  */
     5322#line 5323 "Parser/parser.cc" /* yacc.c:1646  */
    53175323    break;
    53185324
    53195325  case 191:
    5320 #line 868 "parser.yy" /* yacc.c:1646  */
     5326#line 874 "parser.yy" /* yacc.c:1646  */
    53215327    { (yyval.fctl) = new ForCtl( (yyvsp[-3].decl), (yyvsp[-2].en), (yyvsp[0].en) ); }
    5322 #line 5323 "Parser/parser.cc" /* yacc.c:1646  */
     5328#line 5329 "Parser/parser.cc" /* yacc.c:1646  */
    53235329    break;
    53245330
    53255331  case 192:
    5326 #line 873 "parser.yy" /* yacc.c:1646  */
     5332#line 879 "parser.yy" /* yacc.c:1646  */
    53275333    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Goto ) ); }
    5328 #line 5329 "Parser/parser.cc" /* yacc.c:1646  */
     5334#line 5335 "Parser/parser.cc" /* yacc.c:1646  */
    53295335    break;
    53305336
    53315337  case 193:
    5332 #line 877 "parser.yy" /* yacc.c:1646  */
     5338#line 883 "parser.yy" /* yacc.c:1646  */
    53335339    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[-1].en) ) ); }
    5334 #line 5335 "Parser/parser.cc" /* yacc.c:1646  */
     5340#line 5341 "Parser/parser.cc" /* yacc.c:1646  */
    53355341    break;
    53365342
    53375343  case 194:
    5338 #line 880 "parser.yy" /* yacc.c:1646  */
     5344#line 886 "parser.yy" /* yacc.c:1646  */
    53395345    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    5340 #line 5341 "Parser/parser.cc" /* yacc.c:1646  */
     5346#line 5347 "Parser/parser.cc" /* yacc.c:1646  */
    53415347    break;
    53425348
    53435349  case 195:
    5344 #line 884 "parser.yy" /* yacc.c:1646  */
     5350#line 890 "parser.yy" /* yacc.c:1646  */
    53455351    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Continue ) ); }
    5346 #line 5347 "Parser/parser.cc" /* yacc.c:1646  */
     5352#line 5353 "Parser/parser.cc" /* yacc.c:1646  */
    53475353    break;
    53485354
    53495355  case 196:
    5350 #line 887 "parser.yy" /* yacc.c:1646  */
     5356#line 893 "parser.yy" /* yacc.c:1646  */
    53515357    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    5352 #line 5353 "Parser/parser.cc" /* yacc.c:1646  */
     5358#line 5359 "Parser/parser.cc" /* yacc.c:1646  */
    53535359    break;
    53545360
    53555361  case 197:
    5356 #line 891 "parser.yy" /* yacc.c:1646  */
     5362#line 897 "parser.yy" /* yacc.c:1646  */
    53575363    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[-1].tok), BranchStmt::Break ) ); }
    5358 #line 5359 "Parser/parser.cc" /* yacc.c:1646  */
     5364#line 5365 "Parser/parser.cc" /* yacc.c:1646  */
    53595365    break;
    53605366
    53615367  case 198:
    5362 #line 893 "parser.yy" /* yacc.c:1646  */
     5368#line 899 "parser.yy" /* yacc.c:1646  */
    53635369    { (yyval.sn) = new StatementNode( build_return( (yyvsp[-1].en) ) ); }
    5364 #line 5365 "Parser/parser.cc" /* yacc.c:1646  */
     5370#line 5371 "Parser/parser.cc" /* yacc.c:1646  */
    53655371    break;
    53665372
    53675373  case 199:
    5368 #line 895 "parser.yy" /* yacc.c:1646  */
    5369     { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
    5370 #line 5371 "Parser/parser.cc" /* yacc.c:1646  */
    5371     break;
    5372 
    5373   case 200:
    5374 #line 897 "parser.yy" /* yacc.c:1646  */
     5374#line 901 "parser.yy" /* yacc.c:1646  */
    53755375    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
    53765376#line 5377 "Parser/parser.cc" /* yacc.c:1646  */
    53775377    break;
    53785378
     5379  case 200:
     5380#line 903 "parser.yy" /* yacc.c:1646  */
     5381    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-1].en) ) ); }
     5382#line 5383 "Parser/parser.cc" /* yacc.c:1646  */
     5383    break;
     5384
    53795385  case 201:
    5380 #line 899 "parser.yy" /* yacc.c:1646  */
     5386#line 905 "parser.yy" /* yacc.c:1646  */
    53815387    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[-3].en) ) ); }
    5382 #line 5383 "Parser/parser.cc" /* yacc.c:1646  */
     5388#line 5389 "Parser/parser.cc" /* yacc.c:1646  */
    53835389    break;
    53845390
    53855391  case 202:
    5386 #line 904 "parser.yy" /* yacc.c:1646  */
     5392#line 910 "parser.yy" /* yacc.c:1646  */
    53875393    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), (yyvsp[0].sn), 0 ) ); }
    5388 #line 5389 "Parser/parser.cc" /* yacc.c:1646  */
     5394#line 5395 "Parser/parser.cc" /* yacc.c:1646  */
    53895395    break;
    53905396
    53915397  case 203:
    5392 #line 906 "parser.yy" /* yacc.c:1646  */
     5398#line 912 "parser.yy" /* yacc.c:1646  */
    53935399    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-1].sn), 0, (yyvsp[0].sn) ) ); }
    5394 #line 5395 "Parser/parser.cc" /* yacc.c:1646  */
     5400#line 5401 "Parser/parser.cc" /* yacc.c:1646  */
    53955401    break;
    53965402
    53975403  case 204:
    5398 #line 908 "parser.yy" /* yacc.c:1646  */
     5404#line 914 "parser.yy" /* yacc.c:1646  */
    53995405    { (yyval.sn) = new StatementNode( build_try( (yyvsp[-2].sn), (yyvsp[-1].sn), (yyvsp[0].sn) ) ); }
    5400 #line 5401 "Parser/parser.cc" /* yacc.c:1646  */
     5406#line 5407 "Parser/parser.cc" /* yacc.c:1646  */
    54015407    break;
    54025408
    54035409  case 206:
    5404 #line 915 "parser.yy" /* yacc.c:1646  */
     5410#line 921 "parser.yy" /* yacc.c:1646  */
    54055411    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
    5406 #line 5407 "Parser/parser.cc" /* yacc.c:1646  */
     5412#line 5413 "Parser/parser.cc" /* yacc.c:1646  */
    54075413    break;
    54085414
    54095415  case 207:
    5410 #line 917 "parser.yy" /* yacc.c:1646  */
     5416#line 923 "parser.yy" /* yacc.c:1646  */
    54115417    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
    5412 #line 5413 "Parser/parser.cc" /* yacc.c:1646  */
     5418#line 5419 "Parser/parser.cc" /* yacc.c:1646  */
    54135419    break;
    54145420
    54155421  case 208:
    5416 #line 919 "parser.yy" /* yacc.c:1646  */
     5422#line 925 "parser.yy" /* yacc.c:1646  */
    54175423    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ); }
    5418 #line 5419 "Parser/parser.cc" /* yacc.c:1646  */
     5424#line 5425 "Parser/parser.cc" /* yacc.c:1646  */
    54195425    break;
    54205426
    54215427  case 209:
    5422 #line 921 "parser.yy" /* yacc.c:1646  */
     5428#line 927 "parser.yy" /* yacc.c:1646  */
    54235429    { (yyval.sn) = (StatementNode *)(yyvsp[-5].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[0].sn), true ) ) ); }
    5424 #line 5425 "Parser/parser.cc" /* yacc.c:1646  */
     5430#line 5431 "Parser/parser.cc" /* yacc.c:1646  */
    54255431    break;
    54265432
    54275433  case 210:
    5428 #line 926 "parser.yy" /* yacc.c:1646  */
     5434#line 932 "parser.yy" /* yacc.c:1646  */
    54295435    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
    5430 #line 5431 "Parser/parser.cc" /* yacc.c:1646  */
     5436#line 5437 "Parser/parser.cc" /* yacc.c:1646  */
    54315437    break;
    54325438
    54335439  case 211:
    5434 #line 928 "parser.yy" /* yacc.c:1646  */
     5440#line 934 "parser.yy" /* yacc.c:1646  */
    54355441    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
    5436 #line 5437 "Parser/parser.cc" /* yacc.c:1646  */
     5442#line 5443 "Parser/parser.cc" /* yacc.c:1646  */
    54375443    break;
    54385444
    54395445  case 212:
    5440 #line 930 "parser.yy" /* yacc.c:1646  */
     5446#line 936 "parser.yy" /* yacc.c:1646  */
    54415447    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ); }
    5442 #line 5443 "Parser/parser.cc" /* yacc.c:1646  */
     5448#line 5449 "Parser/parser.cc" /* yacc.c:1646  */
    54435449    break;
    54445450
    54455451  case 213:
    5446 #line 932 "parser.yy" /* yacc.c:1646  */
     5452#line 938 "parser.yy" /* yacc.c:1646  */
    54475453    { (yyval.sn) = (StatementNode *)(yyvsp[-9].sn)->set_last( new StatementNode( build_catch( (yyvsp[-4].decl), (yyvsp[-1].sn) ) ) ); }
    5448 #line 5449 "Parser/parser.cc" /* yacc.c:1646  */
     5454#line 5455 "Parser/parser.cc" /* yacc.c:1646  */
    54495455    break;
    54505456
    54515457  case 214:
    5452 #line 937 "parser.yy" /* yacc.c:1646  */
     5458#line 943 "parser.yy" /* yacc.c:1646  */
    54535459    {
    54545460                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[0].sn) ) );
    54555461                }
    5456 #line 5457 "Parser/parser.cc" /* yacc.c:1646  */
     5462#line 5463 "Parser/parser.cc" /* yacc.c:1646  */
    54575463    break;
    54585464
    54595465  case 216:
    5460 #line 950 "parser.yy" /* yacc.c:1646  */
     5466#line 956 "parser.yy" /* yacc.c:1646  */
    54615467    {
    54625468                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    54635469                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
    54645470                }
    5465 #line 5466 "Parser/parser.cc" /* yacc.c:1646  */
     5471#line 5472 "Parser/parser.cc" /* yacc.c:1646  */
    54665472    break;
    54675473
    54685474  case 217:
    5469 #line 955 "parser.yy" /* yacc.c:1646  */
     5475#line 961 "parser.yy" /* yacc.c:1646  */
    54705476    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
    5471 #line 5472 "Parser/parser.cc" /* yacc.c:1646  */
     5477#line 5478 "Parser/parser.cc" /* yacc.c:1646  */
    54725478    break;
    54735479
    54745480  case 218:
    5475 #line 957 "parser.yy" /* yacc.c:1646  */
     5481#line 963 "parser.yy" /* yacc.c:1646  */
    54765482    {
    54775483                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    54785484                        (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) );
    54795485                }
    5480 #line 5481 "Parser/parser.cc" /* yacc.c:1646  */
     5486#line 5487 "Parser/parser.cc" /* yacc.c:1646  */
    54815487    break;
    54825488
    54835489  case 220:
    5484 #line 966 "parser.yy" /* yacc.c:1646  */
     5490#line 972 "parser.yy" /* yacc.c:1646  */
    54855491    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-4].flag), (yyvsp[-2].constant), 0 ) ); }
    5486 #line 5487 "Parser/parser.cc" /* yacc.c:1646  */
     5492#line 5493 "Parser/parser.cc" /* yacc.c:1646  */
    54875493    break;
    54885494
    54895495  case 221:
    5490 #line 968 "parser.yy" /* yacc.c:1646  */
     5496#line 974 "parser.yy" /* yacc.c:1646  */
    54915497    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-6].flag), (yyvsp[-4].constant), (yyvsp[-2].en) ) ); }
    5492 #line 5493 "Parser/parser.cc" /* yacc.c:1646  */
     5498#line 5499 "Parser/parser.cc" /* yacc.c:1646  */
    54935499    break;
    54945500
    54955501  case 222:
    5496 #line 970 "parser.yy" /* yacc.c:1646  */
     5502#line 976 "parser.yy" /* yacc.c:1646  */
    54975503    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-8].flag), (yyvsp[-6].constant), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
    5498 #line 5499 "Parser/parser.cc" /* yacc.c:1646  */
     5504#line 5505 "Parser/parser.cc" /* yacc.c:1646  */
    54995505    break;
    55005506
    55015507  case 223:
    5502 #line 972 "parser.yy" /* yacc.c:1646  */
     5508#line 978 "parser.yy" /* yacc.c:1646  */
    55035509    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-10].flag), (yyvsp[-8].constant), (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
    5504 #line 5505 "Parser/parser.cc" /* yacc.c:1646  */
     5510#line 5511 "Parser/parser.cc" /* yacc.c:1646  */
    55055511    break;
    55065512
    55075513  case 224:
    5508 #line 974 "parser.yy" /* yacc.c:1646  */
     5514#line 980 "parser.yy" /* yacc.c:1646  */
    55095515    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[-12].flag), (yyvsp[-9].constant), 0, (yyvsp[-6].en), (yyvsp[-4].en), (yyvsp[-2].label) ) ); }
    5510 #line 5511 "Parser/parser.cc" /* yacc.c:1646  */
     5516#line 5517 "Parser/parser.cc" /* yacc.c:1646  */
    55115517    break;
    55125518
    55135519  case 225:
    5514 #line 979 "parser.yy" /* yacc.c:1646  */
     5520#line 985 "parser.yy" /* yacc.c:1646  */
    55155521    { (yyval.flag) = false; }
    5516 #line 5517 "Parser/parser.cc" /* yacc.c:1646  */
     5522#line 5523 "Parser/parser.cc" /* yacc.c:1646  */
    55175523    break;
    55185524
    55195525  case 226:
    5520 #line 981 "parser.yy" /* yacc.c:1646  */
     5526#line 987 "parser.yy" /* yacc.c:1646  */
    55215527    { (yyval.flag) = true; }
    5522 #line 5523 "Parser/parser.cc" /* yacc.c:1646  */
     5528#line 5529 "Parser/parser.cc" /* yacc.c:1646  */
    55235529    break;
    55245530
    55255531  case 227:
    5526 #line 986 "parser.yy" /* yacc.c:1646  */
     5532#line 992 "parser.yy" /* yacc.c:1646  */
    55275533    { (yyval.en) = 0; }
    5528 #line 5529 "Parser/parser.cc" /* yacc.c:1646  */
     5534#line 5535 "Parser/parser.cc" /* yacc.c:1646  */
    55295535    break;
    55305536
    55315537  case 230:
    5532 #line 993 "parser.yy" /* yacc.c:1646  */
     5538#line 999 "parser.yy" /* yacc.c:1646  */
    55335539    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( (yyvsp[0].en) ); }
    5534 #line 5535 "Parser/parser.cc" /* yacc.c:1646  */
     5540#line 5541 "Parser/parser.cc" /* yacc.c:1646  */
    55355541    break;
    55365542
    55375543  case 231:
    5538 #line 998 "parser.yy" /* yacc.c:1646  */
     5544#line 1004 "parser.yy" /* yacc.c:1646  */
    55395545    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
    5540 #line 5541 "Parser/parser.cc" /* yacc.c:1646  */
     5546#line 5547 "Parser/parser.cc" /* yacc.c:1646  */
    55415547    break;
    55425548
    55435549  case 232:
    5544 #line 1000 "parser.yy" /* yacc.c:1646  */
     5550#line 1006 "parser.yy" /* yacc.c:1646  */
    55455551    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[-5].en), (yyvsp[-3].constant), (yyvsp[-1].en) ) ); }
    5546 #line 5547 "Parser/parser.cc" /* yacc.c:1646  */
     5552#line 5553 "Parser/parser.cc" /* yacc.c:1646  */
    55475553    break;
    55485554
    55495555  case 233:
    5550 #line 1005 "parser.yy" /* yacc.c:1646  */
     5556#line 1011 "parser.yy" /* yacc.c:1646  */
    55515557    { (yyval.en) = 0; }
    5552 #line 5553 "Parser/parser.cc" /* yacc.c:1646  */
     5558#line 5559 "Parser/parser.cc" /* yacc.c:1646  */
    55535559    break;
    55545560
    55555561  case 234:
    5556 #line 1007 "parser.yy" /* yacc.c:1646  */
     5562#line 1013 "parser.yy" /* yacc.c:1646  */
    55575563    { (yyval.en) = new ExpressionNode( (yyvsp[0].constant) ); }
    5558 #line 5559 "Parser/parser.cc" /* yacc.c:1646  */
     5564#line 5565 "Parser/parser.cc" /* yacc.c:1646  */
    55595565    break;
    55605566
    55615567  case 235:
    5562 #line 1009 "parser.yy" /* yacc.c:1646  */
     5568#line 1015 "parser.yy" /* yacc.c:1646  */
    55635569    { (yyval.en) = (ExpressionNode *)(yyvsp[-2].en)->set_last( new ExpressionNode( (yyvsp[0].constant) ) ); }
    5564 #line 5565 "Parser/parser.cc" /* yacc.c:1646  */
     5570#line 5571 "Parser/parser.cc" /* yacc.c:1646  */
    55655571    break;
    55665572
    55675573  case 236:
    5568 #line 1014 "parser.yy" /* yacc.c:1646  */
     5574#line 1020 "parser.yy" /* yacc.c:1646  */
    55695575    {
    55705576                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[0].tok) );
    55715577                        delete (yyvsp[0].tok);                                                                  // allocated by lexer
    55725578                }
    5573 #line 5574 "Parser/parser.cc" /* yacc.c:1646  */
     5579#line 5580 "Parser/parser.cc" /* yacc.c:1646  */
    55745580    break;
    55755581
    55765582  case 237:
    5577 #line 1019 "parser.yy" /* yacc.c:1646  */
     5583#line 1025 "parser.yy" /* yacc.c:1646  */
    55785584    {
    55795585                        (yyval.label) = (yyvsp[-2].label); (yyvsp[-2].label)->labels.push_back( *(yyvsp[0].tok) );
    55805586                        delete (yyvsp[0].tok);                                                                  // allocated by lexer
    55815587                }
    5582 #line 5583 "Parser/parser.cc" /* yacc.c:1646  */
     5588#line 5589 "Parser/parser.cc" /* yacc.c:1646  */
    55835589    break;
    55845590
    55855591  case 238:
    5586 #line 1029 "parser.yy" /* yacc.c:1646  */
     5592#line 1035 "parser.yy" /* yacc.c:1646  */
    55875593    { (yyval.decl) = 0; }
    5588 #line 5589 "Parser/parser.cc" /* yacc.c:1646  */
     5594#line 5595 "Parser/parser.cc" /* yacc.c:1646  */
    55895595    break;
    55905596
    55915597  case 241:
    5592 #line 1036 "parser.yy" /* yacc.c:1646  */
     5598#line 1042 "parser.yy" /* yacc.c:1646  */
    55935599    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
    5594 #line 5595 "Parser/parser.cc" /* yacc.c:1646  */
     5600#line 5601 "Parser/parser.cc" /* yacc.c:1646  */
    55955601    break;
    55965602
    55975603  case 242:
    5598 #line 1041 "parser.yy" /* yacc.c:1646  */
     5604#line 1047 "parser.yy" /* yacc.c:1646  */
    55995605    { (yyval.decl) = 0; }
    5600 #line 5601 "Parser/parser.cc" /* yacc.c:1646  */
     5606#line 5607 "Parser/parser.cc" /* yacc.c:1646  */
    56015607    break;
    56025608
    56035609  case 245:
    5604 #line 1048 "parser.yy" /* yacc.c:1646  */
     5610#line 1054 "parser.yy" /* yacc.c:1646  */
    56055611    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
    5606 #line 5607 "Parser/parser.cc" /* yacc.c:1646  */
     5612#line 5613 "Parser/parser.cc" /* yacc.c:1646  */
    56075613    break;
    56085614
    56095615  case 250:
    5610 #line 1062 "parser.yy" /* yacc.c:1646  */
    5611     {}
    5612 #line 5613 "Parser/parser.cc" /* yacc.c:1646  */
    5613     break;
    5614 
    5615   case 251:
    5616 #line 1063 "parser.yy" /* yacc.c:1646  */
     5616#line 1068 "parser.yy" /* yacc.c:1646  */
    56175617    {}
    56185618#line 5619 "Parser/parser.cc" /* yacc.c:1646  */
    56195619    break;
    56205620
     5621  case 251:
     5622#line 1069 "parser.yy" /* yacc.c:1646  */
     5623    {}
     5624#line 5625 "Parser/parser.cc" /* yacc.c:1646  */
     5625    break;
     5626
    56215627  case 259:
    5622 #line 1092 "parser.yy" /* yacc.c:1646  */
     5628#line 1098 "parser.yy" /* yacc.c:1646  */
    56235629    {
    56245630                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    56255631                        (yyval.decl) = (yyvsp[-1].decl)->addInitializer( (yyvsp[0].in) );
    56265632                }
    5627 #line 5628 "Parser/parser.cc" /* yacc.c:1646  */
     5633#line 5634 "Parser/parser.cc" /* yacc.c:1646  */
    56285634    break;
    56295635
    56305636  case 260:
    5631 #line 1099 "parser.yy" /* yacc.c:1646  */
     5637#line 1105 "parser.yy" /* yacc.c:1646  */
    56325638    {
    56335639                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    56345640                        (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addInitializer( (yyvsp[0].in) );;
    56355641                }
    5636 #line 5637 "Parser/parser.cc" /* yacc.c:1646  */
     5642#line 5643 "Parser/parser.cc" /* yacc.c:1646  */
    56375643    break;
    56385644
    56395645  case 261:
    5640 #line 1104 "parser.yy" /* yacc.c:1646  */
     5646#line 1110 "parser.yy" /* yacc.c:1646  */
    56415647    {
    56425648                        typedefTable.addToEnclosingScope( *(yyvsp[-1].tok), TypedefTable::ID );
    56435649                        (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneType( (yyvsp[-1].tok) )->addInitializer( (yyvsp[0].in) ) );
    56445650                }
    5645 #line 5646 "Parser/parser.cc" /* yacc.c:1646  */
     5651#line 5652 "Parser/parser.cc" /* yacc.c:1646  */
    56465652    break;
    56475653
    56485654  case 262:
    5649 #line 1114 "parser.yy" /* yacc.c:1646  */
     5655#line 1120 "parser.yy" /* yacc.c:1646  */
    56505656    {
    56515657                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
    56525658                        (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
    56535659                }
    5654 #line 5655 "Parser/parser.cc" /* yacc.c:1646  */
     5660#line 5661 "Parser/parser.cc" /* yacc.c:1646  */
    56555661    break;
    56565662
    56575663  case 263:
    5658 #line 1119 "parser.yy" /* yacc.c:1646  */
     5664#line 1125 "parser.yy" /* yacc.c:1646  */
    56595665    {
    56605666                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
    56615667                        (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) );
    56625668                }
    5663 #line 5664 "Parser/parser.cc" /* yacc.c:1646  */
     5669#line 5670 "Parser/parser.cc" /* yacc.c:1646  */
    56645670    break;
    56655671
    56665672  case 264:
    5667 #line 1124 "parser.yy" /* yacc.c:1646  */
     5673#line 1130 "parser.yy" /* yacc.c:1646  */
    56685674    {
    56695675                        typedefTable.setNextIdentifier( *(yyvsp[-1].tok) );
    56705676                        (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-3].decl) )->addName( (yyvsp[-1].tok) );
    56715677                }
    5672 #line 5673 "Parser/parser.cc" /* yacc.c:1646  */
     5678#line 5679 "Parser/parser.cc" /* yacc.c:1646  */
    56735679    break;
    56745680
    56755681  case 265:
    5676 #line 1132 "parser.yy" /* yacc.c:1646  */
     5682#line 1138 "parser.yy" /* yacc.c:1646  */
    56775683    {
    56785684                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    56795685                        (yyval.decl) = (yyvsp[0].decl);
    56805686                }
    5681 #line 5682 "Parser/parser.cc" /* yacc.c:1646  */
     5687#line 5688 "Parser/parser.cc" /* yacc.c:1646  */
    56825688    break;
    56835689
    56845690  case 266:
    5685 #line 1137 "parser.yy" /* yacc.c:1646  */
     5691#line 1143 "parser.yy" /* yacc.c:1646  */
    56865692    {
    56875693                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    56885694                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
    56895695                }
    5690 #line 5691 "Parser/parser.cc" /* yacc.c:1646  */
     5696#line 5697 "Parser/parser.cc" /* yacc.c:1646  */
    56915697    break;
    56925698
    56935699  case 267:
    5694 #line 1142 "parser.yy" /* yacc.c:1646  */
     5700#line 1148 "parser.yy" /* yacc.c:1646  */
    56955701    {
    56965702                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    56975703                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) );
    56985704                }
    5699 #line 5700 "Parser/parser.cc" /* yacc.c:1646  */
     5705#line 5706 "Parser/parser.cc" /* yacc.c:1646  */
    57005706    break;
    57015707
    57025708  case 268:
    5703 #line 1147 "parser.yy" /* yacc.c:1646  */
     5709#line 1153 "parser.yy" /* yacc.c:1646  */
    57045710    {
    57055711                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    57065712                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-1].decl) );
    57075713                }
    5708 #line 5709 "Parser/parser.cc" /* yacc.c:1646  */
     5714#line 5715 "Parser/parser.cc" /* yacc.c:1646  */
    57095715    break;
    57105716
    57115717  case 269:
    5712 #line 1152 "parser.yy" /* yacc.c:1646  */
     5718#line 1158 "parser.yy" /* yacc.c:1646  */
    57135719    {
    57145720                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::ID );
    57155721                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
    57165722                }
    5717 #line 5718 "Parser/parser.cc" /* yacc.c:1646  */
     5723#line 5724 "Parser/parser.cc" /* yacc.c:1646  */
    57185724    break;
    57195725
    57205726  case 270:
    5721 #line 1183 "parser.yy" /* yacc.c:1646  */
     5727#line 1189 "parser.yy" /* yacc.c:1646  */
    57225728    {
    57235729                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
    57245730                }
    5725 #line 5726 "Parser/parser.cc" /* yacc.c:1646  */
     5731#line 5732 "Parser/parser.cc" /* yacc.c:1646  */
    57265732    break;
    57275733
    57285734  case 271:
    5729 #line 1187 "parser.yy" /* yacc.c:1646  */
     5735#line 1193 "parser.yy" /* yacc.c:1646  */
    57305736    {
    57315737                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[-5].tok), (yyvsp[-6].decl), (yyvsp[-2].decl), 0, true );
    57325738                }
    5733 #line 5734 "Parser/parser.cc" /* yacc.c:1646  */
     5739#line 5740 "Parser/parser.cc" /* yacc.c:1646  */
    57345740    break;
    57355741
    57365742  case 272:
    5737 #line 1194 "parser.yy" /* yacc.c:1646  */
     5743#line 1200 "parser.yy" /* yacc.c:1646  */
    57385744    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
    5739 #line 5740 "Parser/parser.cc" /* yacc.c:1646  */
     5745#line 5746 "Parser/parser.cc" /* yacc.c:1646  */
    57405746    break;
    57415747
    57425748  case 273:
    5743 #line 1198 "parser.yy" /* yacc.c:1646  */
     5749#line 1204 "parser.yy" /* yacc.c:1646  */
    57445750    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-6].decl)->appendList( (yyvsp[-2].decl) ) ); }
    5745 #line 5746 "Parser/parser.cc" /* yacc.c:1646  */
     5751#line 5752 "Parser/parser.cc" /* yacc.c:1646  */
    57465752    break;
    57475753
    57485754  case 274:
    5749 #line 1203 "parser.yy" /* yacc.c:1646  */
     5755#line 1209 "parser.yy" /* yacc.c:1646  */
    57505756    {
    57515757                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    57525758                        (yyval.decl) = (yyvsp[0].decl)->addTypedef();
    57535759                }
    5754 #line 5755 "Parser/parser.cc" /* yacc.c:1646  */
     5760#line 5761 "Parser/parser.cc" /* yacc.c:1646  */
    57555761    break;
    57565762
    57575763  case 275:
    5758 #line 1208 "parser.yy" /* yacc.c:1646  */
     5764#line 1214 "parser.yy" /* yacc.c:1646  */
    57595765    {
    57605766                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    57615767                        (yyval.decl) = (yyvsp[0].decl)->addTypedef();
    57625768                }
    5763 #line 5764 "Parser/parser.cc" /* yacc.c:1646  */
     5769#line 5770 "Parser/parser.cc" /* yacc.c:1646  */
    57645770    break;
    57655771
    57665772  case 276:
    5767 #line 1213 "parser.yy" /* yacc.c:1646  */
     5773#line 1219 "parser.yy" /* yacc.c:1646  */
    57685774    {
    57695775                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
    57705776                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
    57715777                }
    5772 #line 5773 "Parser/parser.cc" /* yacc.c:1646  */
     5778#line 5779 "Parser/parser.cc" /* yacc.c:1646  */
    57735779    break;
    57745780
    57755781  case 277:
    5776 #line 1224 "parser.yy" /* yacc.c:1646  */
     5782#line 1230 "parser.yy" /* yacc.c:1646  */
    57775783    {
    57785784                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    57795785                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addTypedef();
    57805786                }
    5781 #line 5782 "Parser/parser.cc" /* yacc.c:1646  */
     5787#line 5788 "Parser/parser.cc" /* yacc.c:1646  */
    57825788    break;
    57835789
    57845790  case 278:
    5785 #line 1229 "parser.yy" /* yacc.c:1646  */
     5791#line 1235 "parser.yy" /* yacc.c:1646  */
    57865792    {
    57875793                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    57885794                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) )->addTypedef() );
    57895795                }
    5790 #line 5791 "Parser/parser.cc" /* yacc.c:1646  */
     5796#line 5797 "Parser/parser.cc" /* yacc.c:1646  */
    57915797    break;
    57925798
    57935799  case 279:
    5794 #line 1234 "parser.yy" /* yacc.c:1646  */
     5800#line 1240 "parser.yy" /* yacc.c:1646  */
    57955801    {
    57965802                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    57975803                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[-3].decl) )->addTypedef();
    57985804                }
    5799 #line 5800 "Parser/parser.cc" /* yacc.c:1646  */
     5805#line 5806 "Parser/parser.cc" /* yacc.c:1646  */
    58005806    break;
    58015807
    58025808  case 280:
    5803 #line 1239 "parser.yy" /* yacc.c:1646  */
     5809#line 1245 "parser.yy" /* yacc.c:1646  */
    58045810    {
    58055811                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    58065812                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-2].decl) )->addTypedef();
    58075813                }
    5808 #line 5809 "Parser/parser.cc" /* yacc.c:1646  */
     5814#line 5815 "Parser/parser.cc" /* yacc.c:1646  */
    58095815    break;
    58105816
    58115817  case 281:
    5812 #line 1244 "parser.yy" /* yacc.c:1646  */
     5818#line 1250 "parser.yy" /* yacc.c:1646  */
    58135819    {
    58145820                        typedefTable.addToEnclosingScope( TypedefTable::TD );
    58155821                        (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-3].decl) )->addTypedef()->addType( (yyvsp[-3].decl) );
    58165822                }
    5817 #line 5818 "Parser/parser.cc" /* yacc.c:1646  */
     5823#line 5824 "Parser/parser.cc" /* yacc.c:1646  */
    58185824    break;
    58195825
    58205826  case 282:
    5821 #line 1253 "parser.yy" /* yacc.c:1646  */
     5827#line 1259 "parser.yy" /* yacc.c:1646  */
    58225828    {
    58235829                        typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
    58245830                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    58255831                }
    5826 #line 5827 "Parser/parser.cc" /* yacc.c:1646  */
     5832#line 5833 "Parser/parser.cc" /* yacc.c:1646  */
    58275833    break;
    58285834
    58295835  case 283:
    5830 #line 1258 "parser.yy" /* yacc.c:1646  */
     5836#line 1264 "parser.yy" /* yacc.c:1646  */
    58315837    {
    58325838                        typedefTable.addToEnclosingScope( *(yyvsp[-2].tok), TypedefTable::TD );
    58335839                        (yyval.decl) = DeclarationNode::newName( 0 ); // XXX
    58345840                }
    5835 #line 5836 "Parser/parser.cc" /* yacc.c:1646  */
     5841#line 5842 "Parser/parser.cc" /* yacc.c:1646  */
    58365842    break;
    58375843
    58385844  case 288:
    5839 #line 1275 "parser.yy" /* yacc.c:1646  */
     5845#line 1281 "parser.yy" /* yacc.c:1646  */
    58405846    {
    58415847                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    58425848                        (yyval.decl) = ( (yyvsp[-2].decl)->addType( (yyvsp[-3].decl) ))->addInitializer( (yyvsp[0].in) );
    58435849                }
    5844 #line 5845 "Parser/parser.cc" /* yacc.c:1646  */
     5850#line 5851 "Parser/parser.cc" /* yacc.c:1646  */
    58455851    break;
    58465852
    58475853  case 289:
    5848 #line 1280 "parser.yy" /* yacc.c:1646  */
     5854#line 1286 "parser.yy" /* yacc.c:1646  */
    58495855    {
    58505856                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    58515857                        (yyval.decl) = (yyvsp[-5].decl)->appendList( (yyvsp[-5].decl)->cloneBaseType( (yyvsp[-2].decl)->addInitializer( (yyvsp[0].in) ) ) );
    58525858                }
    5853 #line 5854 "Parser/parser.cc" /* yacc.c:1646  */
     5859#line 5860 "Parser/parser.cc" /* yacc.c:1646  */
    58545860    break;
    58555861
    58565862  case 298:
    5857 #line 1302 "parser.yy" /* yacc.c:1646  */
     5863#line 1308 "parser.yy" /* yacc.c:1646  */
    58585864    { (yyval.decl) = 0; }
    5859 #line 5860 "Parser/parser.cc" /* yacc.c:1646  */
     5865#line 5866 "Parser/parser.cc" /* yacc.c:1646  */
    58605866    break;
    58615867
    58625868  case 301:
    5863 #line 1314 "parser.yy" /* yacc.c:1646  */
     5869#line 1320 "parser.yy" /* yacc.c:1646  */
    58645870    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    5865 #line 5866 "Parser/parser.cc" /* yacc.c:1646  */
     5871#line 5872 "Parser/parser.cc" /* yacc.c:1646  */
    58665872    break;
    58675873
    58685874  case 304:
    5869 #line 1325 "parser.yy" /* yacc.c:1646  */
     5875#line 1331 "parser.yy" /* yacc.c:1646  */
    58705876    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    5871 #line 5872 "Parser/parser.cc" /* yacc.c:1646  */
     5877#line 5878 "Parser/parser.cc" /* yacc.c:1646  */
    58725878    break;
    58735879
    58745880  case 305:
    5875 #line 1327 "parser.yy" /* yacc.c:1646  */
     5881#line 1333 "parser.yy" /* yacc.c:1646  */
    58765882    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    5877 #line 5878 "Parser/parser.cc" /* yacc.c:1646  */
     5883#line 5884 "Parser/parser.cc" /* yacc.c:1646  */
    58785884    break;
    58795885
    58805886  case 306:
    5881 #line 1329 "parser.yy" /* yacc.c:1646  */
     5887#line 1335 "parser.yy" /* yacc.c:1646  */
    58825888    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    5883 #line 5884 "Parser/parser.cc" /* yacc.c:1646  */
     5889#line 5890 "Parser/parser.cc" /* yacc.c:1646  */
    58845890    break;
    58855891
    58865892  case 307:
    5887 #line 1331 "parser.yy" /* yacc.c:1646  */
     5893#line 1337 "parser.yy" /* yacc.c:1646  */
    58885894    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    5889 #line 5890 "Parser/parser.cc" /* yacc.c:1646  */
     5895#line 5896 "Parser/parser.cc" /* yacc.c:1646  */
    58905896    break;
    58915897
    58925898  case 308:
    5893 #line 1333 "parser.yy" /* yacc.c:1646  */
     5899#line 1339 "parser.yy" /* yacc.c:1646  */
    58945900    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    5895 #line 5896 "Parser/parser.cc" /* yacc.c:1646  */
     5901#line 5902 "Parser/parser.cc" /* yacc.c:1646  */
    58965902    break;
    58975903
    58985904  case 309:
    5899 #line 1335 "parser.yy" /* yacc.c:1646  */
     5905#line 1341 "parser.yy" /* yacc.c:1646  */
    59005906    {
    59015907                        typedefTable.enterScope();
    59025908                }
    5903 #line 5904 "Parser/parser.cc" /* yacc.c:1646  */
     5909#line 5910 "Parser/parser.cc" /* yacc.c:1646  */
    59045910    break;
    59055911
    59065912  case 310:
    5907 #line 1339 "parser.yy" /* yacc.c:1646  */
     5913#line 1345 "parser.yy" /* yacc.c:1646  */
    59085914    {
    59095915                        typedefTable.leaveScope();
    59105916                        (yyval.decl) = DeclarationNode::newForall( (yyvsp[-1].decl) );
    59115917                }
    5912 #line 5913 "Parser/parser.cc" /* yacc.c:1646  */
     5918#line 5919 "Parser/parser.cc" /* yacc.c:1646  */
    59135919    break;
    59145920
    59155921  case 312:
    5916 #line 1348 "parser.yy" /* yacc.c:1646  */
     5922#line 1354 "parser.yy" /* yacc.c:1646  */
    59175923    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    5918 #line 5919 "Parser/parser.cc" /* yacc.c:1646  */
     5924#line 5925 "Parser/parser.cc" /* yacc.c:1646  */
    59195925    break;
    59205926
    59215927  case 313:
    5922 #line 1350 "parser.yy" /* yacc.c:1646  */
     5928#line 1356 "parser.yy" /* yacc.c:1646  */
    59235929    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    5924 #line 5925 "Parser/parser.cc" /* yacc.c:1646  */
     5930#line 5931 "Parser/parser.cc" /* yacc.c:1646  */
    59255931    break;
    59265932
    59275933  case 315:
    5928 #line 1361 "parser.yy" /* yacc.c:1646  */
     5934#line 1367 "parser.yy" /* yacc.c:1646  */
    59295935    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    5930 #line 5931 "Parser/parser.cc" /* yacc.c:1646  */
     5936#line 5937 "Parser/parser.cc" /* yacc.c:1646  */
    59315937    break;
    59325938
    59335939  case 316:
    5934 #line 1366 "parser.yy" /* yacc.c:1646  */
     5940#line 1372 "parser.yy" /* yacc.c:1646  */
    59355941    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    5936 #line 5937 "Parser/parser.cc" /* yacc.c:1646  */
     5942#line 5943 "Parser/parser.cc" /* yacc.c:1646  */
    59375943    break;
    59385944
    59395945  case 317:
    5940 #line 1368 "parser.yy" /* yacc.c:1646  */
     5946#line 1374 "parser.yy" /* yacc.c:1646  */
    59415947    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    5942 #line 5943 "Parser/parser.cc" /* yacc.c:1646  */
     5948#line 5949 "Parser/parser.cc" /* yacc.c:1646  */
    59435949    break;
    59445950
    59455951  case 318:
    5946 #line 1370 "parser.yy" /* yacc.c:1646  */
     5952#line 1376 "parser.yy" /* yacc.c:1646  */
    59475953    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    5948 #line 5949 "Parser/parser.cc" /* yacc.c:1646  */
     5954#line 5955 "Parser/parser.cc" /* yacc.c:1646  */
    59495955    break;
    59505956
    59515957  case 319:
    5952 #line 1372 "parser.yy" /* yacc.c:1646  */
     5958#line 1378 "parser.yy" /* yacc.c:1646  */
    59535959    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    5954 #line 5955 "Parser/parser.cc" /* yacc.c:1646  */
     5960#line 5961 "Parser/parser.cc" /* yacc.c:1646  */
    59555961    break;
    59565962
    59575963  case 320:
    5958 #line 1375 "parser.yy" /* yacc.c:1646  */
     5964#line 1381 "parser.yy" /* yacc.c:1646  */
    59595965    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    5960 #line 5961 "Parser/parser.cc" /* yacc.c:1646  */
     5966#line 5967 "Parser/parser.cc" /* yacc.c:1646  */
    59615967    break;
    59625968
    59635969  case 321:
    5964 #line 1377 "parser.yy" /* yacc.c:1646  */
     5970#line 1383 "parser.yy" /* yacc.c:1646  */
    59655971    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    5966 #line 5967 "Parser/parser.cc" /* yacc.c:1646  */
     5972#line 5973 "Parser/parser.cc" /* yacc.c:1646  */
    59675973    break;
    59685974
    59695975  case 322:
    5970 #line 1380 "parser.yy" /* yacc.c:1646  */
     5976#line 1386 "parser.yy" /* yacc.c:1646  */
    59715977    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    5972 #line 5973 "Parser/parser.cc" /* yacc.c:1646  */
     5978#line 5979 "Parser/parser.cc" /* yacc.c:1646  */
    59735979    break;
    59745980
    59755981  case 323:
    5976 #line 1382 "parser.yy" /* yacc.c:1646  */
     5982#line 1388 "parser.yy" /* yacc.c:1646  */
    59775983    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    5978 #line 5979 "Parser/parser.cc" /* yacc.c:1646  */
     5984#line 5985 "Parser/parser.cc" /* yacc.c:1646  */
    59795985    break;
    59805986
    59815987  case 324:
    5982 #line 1387 "parser.yy" /* yacc.c:1646  */
     5988#line 1393 "parser.yy" /* yacc.c:1646  */
    59835989    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    5984 #line 5985 "Parser/parser.cc" /* yacc.c:1646  */
     5990#line 5991 "Parser/parser.cc" /* yacc.c:1646  */
    59855991    break;
    59865992
    59875993  case 325:
    5988 #line 1389 "parser.yy" /* yacc.c:1646  */
     5994#line 1395 "parser.yy" /* yacc.c:1646  */
    59895995    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    5990 #line 5991 "Parser/parser.cc" /* yacc.c:1646  */
     5996#line 5997 "Parser/parser.cc" /* yacc.c:1646  */
    59915997    break;
    59925998
    59935999  case 326:
    5994 #line 1391 "parser.yy" /* yacc.c:1646  */
     6000#line 1397 "parser.yy" /* yacc.c:1646  */
    59956001    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    5996 #line 5997 "Parser/parser.cc" /* yacc.c:1646  */
     6002#line 6003 "Parser/parser.cc" /* yacc.c:1646  */
    59976003    break;
    59986004
    59996005  case 327:
    6000 #line 1393 "parser.yy" /* yacc.c:1646  */
     6006#line 1399 "parser.yy" /* yacc.c:1646  */
    60016007    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    6002 #line 6003 "Parser/parser.cc" /* yacc.c:1646  */
     6008#line 6009 "Parser/parser.cc" /* yacc.c:1646  */
    60036009    break;
    60046010
    60056011  case 328:
    6006 #line 1395 "parser.yy" /* yacc.c:1646  */
     6012#line 1401 "parser.yy" /* yacc.c:1646  */
    60076013    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    6008 #line 6009 "Parser/parser.cc" /* yacc.c:1646  */
     6014#line 6015 "Parser/parser.cc" /* yacc.c:1646  */
    60096015    break;
    60106016
    60116017  case 329:
    6012 #line 1397 "parser.yy" /* yacc.c:1646  */
     6018#line 1403 "parser.yy" /* yacc.c:1646  */
    60136019    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    6014 #line 6015 "Parser/parser.cc" /* yacc.c:1646  */
     6020#line 6021 "Parser/parser.cc" /* yacc.c:1646  */
    60156021    break;
    60166022
    60176023  case 330:
    6018 #line 1399 "parser.yy" /* yacc.c:1646  */
     6024#line 1405 "parser.yy" /* yacc.c:1646  */
    60196025    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    6020 #line 6021 "Parser/parser.cc" /* yacc.c:1646  */
     6026#line 6027 "Parser/parser.cc" /* yacc.c:1646  */
    60216027    break;
    60226028
    60236029  case 331:
    6024 #line 1401 "parser.yy" /* yacc.c:1646  */
     6030#line 1407 "parser.yy" /* yacc.c:1646  */
    60256031    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    6026 #line 6027 "Parser/parser.cc" /* yacc.c:1646  */
     6032#line 6033 "Parser/parser.cc" /* yacc.c:1646  */
    60276033    break;
    60286034
    60296035  case 332:
    6030 #line 1403 "parser.yy" /* yacc.c:1646  */
     6036#line 1409 "parser.yy" /* yacc.c:1646  */
    60316037    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    6032 #line 6033 "Parser/parser.cc" /* yacc.c:1646  */
     6038#line 6039 "Parser/parser.cc" /* yacc.c:1646  */
    60336039    break;
    60346040
    60356041  case 333:
    6036 #line 1405 "parser.yy" /* yacc.c:1646  */
     6042#line 1411 "parser.yy" /* yacc.c:1646  */
    60376043    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    6038 #line 6039 "Parser/parser.cc" /* yacc.c:1646  */
     6044#line 6045 "Parser/parser.cc" /* yacc.c:1646  */
    60396045    break;
    60406046
    60416047  case 334:
    6042 #line 1407 "parser.yy" /* yacc.c:1646  */
     6048#line 1413 "parser.yy" /* yacc.c:1646  */
    60436049    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    6044 #line 6045 "Parser/parser.cc" /* yacc.c:1646  */
     6050#line 6051 "Parser/parser.cc" /* yacc.c:1646  */
    60456051    break;
    60466052
    60476053  case 335:
    6048 #line 1409 "parser.yy" /* yacc.c:1646  */
     6054#line 1415 "parser.yy" /* yacc.c:1646  */
    60496055    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    6050 #line 6051 "Parser/parser.cc" /* yacc.c:1646  */
     6056#line 6057 "Parser/parser.cc" /* yacc.c:1646  */
    60516057    break;
    60526058
    60536059  case 336:
    6054 #line 1411 "parser.yy" /* yacc.c:1646  */
     6060#line 1417 "parser.yy" /* yacc.c:1646  */
    60556061    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    6056 #line 6057 "Parser/parser.cc" /* yacc.c:1646  */
     6062#line 6063 "Parser/parser.cc" /* yacc.c:1646  */
    60576063    break;
    60586064
    60596065  case 337:
    6060 #line 1413 "parser.yy" /* yacc.c:1646  */
     6066#line 1419 "parser.yy" /* yacc.c:1646  */
    60616067    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
    6062 #line 6063 "Parser/parser.cc" /* yacc.c:1646  */
     6068#line 6069 "Parser/parser.cc" /* yacc.c:1646  */
    60636069    break;
    60646070
    60656071  case 338:
    6066 #line 1415 "parser.yy" /* yacc.c:1646  */
     6072#line 1421 "parser.yy" /* yacc.c:1646  */
    60676073    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
    6068 #line 6069 "Parser/parser.cc" /* yacc.c:1646  */
     6074#line 6075 "Parser/parser.cc" /* yacc.c:1646  */
    60696075    break;
    60706076
    60716077  case 340:
    6072 #line 1422 "parser.yy" /* yacc.c:1646  */
     6078#line 1428 "parser.yy" /* yacc.c:1646  */
    60736079    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6074 #line 6075 "Parser/parser.cc" /* yacc.c:1646  */
     6080#line 6081 "Parser/parser.cc" /* yacc.c:1646  */
    60756081    break;
    60766082
    60776083  case 341:
    6078 #line 1424 "parser.yy" /* yacc.c:1646  */
     6084#line 1430 "parser.yy" /* yacc.c:1646  */
    60796085    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6080 #line 6081 "Parser/parser.cc" /* yacc.c:1646  */
     6086#line 6087 "Parser/parser.cc" /* yacc.c:1646  */
    60816087    break;
    60826088
    60836089  case 342:
    6084 #line 1426 "parser.yy" /* yacc.c:1646  */
     6090#line 1432 "parser.yy" /* yacc.c:1646  */
    60856091    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    6086 #line 6087 "Parser/parser.cc" /* yacc.c:1646  */
     6092#line 6093 "Parser/parser.cc" /* yacc.c:1646  */
    60876093    break;
    60886094
    60896095  case 343:
    6090 #line 1428 "parser.yy" /* yacc.c:1646  */
     6096#line 1434 "parser.yy" /* yacc.c:1646  */
    60916097    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) )->addType( (yyvsp[-2].decl) ); }
    6092 #line 6093 "Parser/parser.cc" /* yacc.c:1646  */
     6098#line 6099 "Parser/parser.cc" /* yacc.c:1646  */
    60936099    break;
    60946100
    60956101  case 345:
    6096 #line 1434 "parser.yy" /* yacc.c:1646  */
     6102#line 1440 "parser.yy" /* yacc.c:1646  */
    60976103    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    6098 #line 6099 "Parser/parser.cc" /* yacc.c:1646  */
     6104#line 6105 "Parser/parser.cc" /* yacc.c:1646  */
    60996105    break;
    61006106
    61016107  case 347:
    6102 #line 1441 "parser.yy" /* yacc.c:1646  */
     6108#line 1447 "parser.yy" /* yacc.c:1646  */
    61036109    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6104 #line 6105 "Parser/parser.cc" /* yacc.c:1646  */
     6110#line 6111 "Parser/parser.cc" /* yacc.c:1646  */
    61056111    break;
    61066112
    61076113  case 348:
    6108 #line 1443 "parser.yy" /* yacc.c:1646  */
     6114#line 1449 "parser.yy" /* yacc.c:1646  */
    61096115    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6110 #line 6111 "Parser/parser.cc" /* yacc.c:1646  */
     6116#line 6117 "Parser/parser.cc" /* yacc.c:1646  */
    61116117    break;
    61126118
    61136119  case 349:
    6114 #line 1445 "parser.yy" /* yacc.c:1646  */
     6120#line 1451 "parser.yy" /* yacc.c:1646  */
    61156121    { (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[0].decl) ); }
    6116 #line 6117 "Parser/parser.cc" /* yacc.c:1646  */
     6122#line 6123 "Parser/parser.cc" /* yacc.c:1646  */
    61176123    break;
    61186124
    61196125  case 350:
    6120 #line 1450 "parser.yy" /* yacc.c:1646  */
     6126#line 1456 "parser.yy" /* yacc.c:1646  */
    61216127    { (yyval.decl) = (yyvsp[-1].decl); }
    6122 #line 6123 "Parser/parser.cc" /* yacc.c:1646  */
     6128#line 6129 "Parser/parser.cc" /* yacc.c:1646  */
    61236129    break;
    61246130
    61256131  case 351:
    6126 #line 1452 "parser.yy" /* yacc.c:1646  */
     6132#line 1458 "parser.yy" /* yacc.c:1646  */
    61276133    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[-1].en) ); }
    6128 #line 6129 "Parser/parser.cc" /* yacc.c:1646  */
     6134#line 6135 "Parser/parser.cc" /* yacc.c:1646  */
    61296135    break;
    61306136
    61316137  case 352:
    6132 #line 1454 "parser.yy" /* yacc.c:1646  */
     6138#line 1460 "parser.yy" /* yacc.c:1646  */
    61336139    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].decl) ); }
    6134 #line 6135 "Parser/parser.cc" /* yacc.c:1646  */
     6140#line 6141 "Parser/parser.cc" /* yacc.c:1646  */
    61356141    break;
    61366142
    61376143  case 353:
    6138 #line 1456 "parser.yy" /* yacc.c:1646  */
     6144#line 1462 "parser.yy" /* yacc.c:1646  */
    61396145    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
    6140 #line 6141 "Parser/parser.cc" /* yacc.c:1646  */
     6146#line 6147 "Parser/parser.cc" /* yacc.c:1646  */
    61416147    break;
    61426148
    61436149  case 355:
    6144 #line 1462 "parser.yy" /* yacc.c:1646  */
     6150#line 1468 "parser.yy" /* yacc.c:1646  */
    61456151    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6146 #line 6147 "Parser/parser.cc" /* yacc.c:1646  */
     6152#line 6153 "Parser/parser.cc" /* yacc.c:1646  */
    61476153    break;
    61486154
    61496155  case 356:
    6150 #line 1464 "parser.yy" /* yacc.c:1646  */
     6156#line 1470 "parser.yy" /* yacc.c:1646  */
    61516157    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6152 #line 6153 "Parser/parser.cc" /* yacc.c:1646  */
     6158#line 6159 "Parser/parser.cc" /* yacc.c:1646  */
    61536159    break;
    61546160
    61556161  case 357:
    6156 #line 1466 "parser.yy" /* yacc.c:1646  */
     6162#line 1472 "parser.yy" /* yacc.c:1646  */
    61576163    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    6158 #line 6159 "Parser/parser.cc" /* yacc.c:1646  */
     6164#line 6165 "Parser/parser.cc" /* yacc.c:1646  */
    61596165    break;
    61606166
    61616167  case 359:
    6162 #line 1472 "parser.yy" /* yacc.c:1646  */
     6168#line 1478 "parser.yy" /* yacc.c:1646  */
    61636169    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6164 #line 6165 "Parser/parser.cc" /* yacc.c:1646  */
     6170#line 6171 "Parser/parser.cc" /* yacc.c:1646  */
    61656171    break;
    61666172
    61676173  case 360:
    6168 #line 1474 "parser.yy" /* yacc.c:1646  */
     6174#line 1480 "parser.yy" /* yacc.c:1646  */
    61696175    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6170 #line 6171 "Parser/parser.cc" /* yacc.c:1646  */
     6176#line 6177 "Parser/parser.cc" /* yacc.c:1646  */
    61716177    break;
    61726178
    61736179  case 362:
    6174 #line 1480 "parser.yy" /* yacc.c:1646  */
     6180#line 1486 "parser.yy" /* yacc.c:1646  */
    61756181    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6176 #line 6177 "Parser/parser.cc" /* yacc.c:1646  */
     6182#line 6183 "Parser/parser.cc" /* yacc.c:1646  */
    61776183    break;
    61786184
    61796185  case 363:
    6180 #line 1482 "parser.yy" /* yacc.c:1646  */
     6186#line 1488 "parser.yy" /* yacc.c:1646  */
    61816187    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6182 #line 6183 "Parser/parser.cc" /* yacc.c:1646  */
     6188#line 6189 "Parser/parser.cc" /* yacc.c:1646  */
    61836189    break;
    61846190
    61856191  case 364:
    6186 #line 1484 "parser.yy" /* yacc.c:1646  */
     6192#line 1490 "parser.yy" /* yacc.c:1646  */
    61876193    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    6188 #line 6189 "Parser/parser.cc" /* yacc.c:1646  */
     6194#line 6195 "Parser/parser.cc" /* yacc.c:1646  */
    61896195    break;
    61906196
    61916197  case 365:
    6192 #line 1489 "parser.yy" /* yacc.c:1646  */
     6198#line 1495 "parser.yy" /* yacc.c:1646  */
    61936199    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) ); }
    6194 #line 6195 "Parser/parser.cc" /* yacc.c:1646  */
     6200#line 6201 "Parser/parser.cc" /* yacc.c:1646  */
    61956201    break;
    61966202
    61976203  case 366:
    6198 #line 1491 "parser.yy" /* yacc.c:1646  */
     6204#line 1497 "parser.yy" /* yacc.c:1646  */
    61996205    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[0].tok) )->addQualifiers( (yyvsp[-1].decl) ); }
    6200 #line 6201 "Parser/parser.cc" /* yacc.c:1646  */
     6206#line 6207 "Parser/parser.cc" /* yacc.c:1646  */
    62016207    break;
    62026208
    62036209  case 367:
    6204 #line 1493 "parser.yy" /* yacc.c:1646  */
     6210#line 1499 "parser.yy" /* yacc.c:1646  */
    62056211    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6206 #line 6207 "Parser/parser.cc" /* yacc.c:1646  */
     6212#line 6213 "Parser/parser.cc" /* yacc.c:1646  */
    62076213    break;
    62086214
    62096215  case 370:
    6210 #line 1503 "parser.yy" /* yacc.c:1646  */
     6216#line 1509 "parser.yy" /* yacc.c:1646  */
    62116217    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-3].aggKey), nullptr, nullptr, (yyvsp[-1].decl), true ); }
    6212 #line 6213 "Parser/parser.cc" /* yacc.c:1646  */
     6218#line 6219 "Parser/parser.cc" /* yacc.c:1646  */
    62136219    break;
    62146220
    62156221  case 371:
    6216 #line 1505 "parser.yy" /* yacc.c:1646  */
     6222#line 1511 "parser.yy" /* yacc.c:1646  */
    62176223    {
    62186224                        typedefTable.makeTypedef( *(yyvsp[0].tok) );
    62196225                        (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-1].aggKey), (yyvsp[0].tok), nullptr, nullptr, false );
    62206226                }
    6221 #line 6222 "Parser/parser.cc" /* yacc.c:1646  */
     6227#line 6228 "Parser/parser.cc" /* yacc.c:1646  */
    62226228    break;
    62236229
    62246230  case 372:
    6225 #line 1510 "parser.yy" /* yacc.c:1646  */
     6231#line 1516 "parser.yy" /* yacc.c:1646  */
    62266232    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
    6227 #line 6228 "Parser/parser.cc" /* yacc.c:1646  */
     6233#line 6234 "Parser/parser.cc" /* yacc.c:1646  */
    62286234    break;
    62296235
    62306236  case 373:
    6231 #line 1512 "parser.yy" /* yacc.c:1646  */
     6237#line 1518 "parser.yy" /* yacc.c:1646  */
    62326238    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-5].aggKey), (yyvsp[-4].tok), nullptr, (yyvsp[-1].decl), true ); }
    6233 #line 6234 "Parser/parser.cc" /* yacc.c:1646  */
     6239#line 6240 "Parser/parser.cc" /* yacc.c:1646  */
    62346240    break;
    62356241
    62366242  case 374:
    6237 #line 1514 "parser.yy" /* yacc.c:1646  */
     6243#line 1520 "parser.yy" /* yacc.c:1646  */
    62386244    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[-6].aggKey), nullptr, (yyvsp[-4].en), (yyvsp[-1].decl), false ); }
    6239 #line 6240 "Parser/parser.cc" /* yacc.c:1646  */
     6245#line 6246 "Parser/parser.cc" /* yacc.c:1646  */
    62406246    break;
    62416247
    62426248  case 375:
    6243 #line 1516 "parser.yy" /* yacc.c:1646  */
     6249#line 1522 "parser.yy" /* yacc.c:1646  */
    62446250    { (yyval.decl) = (yyvsp[0].decl); }
    6245 #line 6246 "Parser/parser.cc" /* yacc.c:1646  */
     6251#line 6252 "Parser/parser.cc" /* yacc.c:1646  */
    62466252    break;
    62476253
    62486254  case 376:
    6249 #line 1521 "parser.yy" /* yacc.c:1646  */
     6255#line 1527 "parser.yy" /* yacc.c:1646  */
    62506256    { (yyval.aggKey) = DeclarationNode::Struct; }
    6251 #line 6252 "Parser/parser.cc" /* yacc.c:1646  */
     6257#line 6258 "Parser/parser.cc" /* yacc.c:1646  */
    62526258    break;
    62536259
    62546260  case 377:
    6255 #line 1523 "parser.yy" /* yacc.c:1646  */
     6261#line 1529 "parser.yy" /* yacc.c:1646  */
    62566262    { (yyval.aggKey) = DeclarationNode::Union; }
    6257 #line 6258 "Parser/parser.cc" /* yacc.c:1646  */
     6263#line 6264 "Parser/parser.cc" /* yacc.c:1646  */
    62586264    break;
    62596265
    62606266  case 378:
    6261 #line 1528 "parser.yy" /* yacc.c:1646  */
     6267#line 1534 "parser.yy" /* yacc.c:1646  */
    62626268    { (yyval.decl) = 0; }
    6263 #line 6264 "Parser/parser.cc" /* yacc.c:1646  */
     6269#line 6270 "Parser/parser.cc" /* yacc.c:1646  */
    62646270    break;
    62656271
    62666272  case 379:
    6267 #line 1530 "parser.yy" /* yacc.c:1646  */
     6273#line 1536 "parser.yy" /* yacc.c:1646  */
    62686274    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
    6269 #line 6270 "Parser/parser.cc" /* yacc.c:1646  */
     6275#line 6276 "Parser/parser.cc" /* yacc.c:1646  */
    62706276    break;
    62716277
    62726278  case 381:
    6273 #line 1536 "parser.yy" /* yacc.c:1646  */
     6279#line 1542 "parser.yy" /* yacc.c:1646  */
    62746280    { (yyval.decl) = (yyvsp[-1].decl)->set_extension( true ); }
    6275 #line 6276 "Parser/parser.cc" /* yacc.c:1646  */
     6281#line 6282 "Parser/parser.cc" /* yacc.c:1646  */
    62766282    break;
    62776283
    62786284  case 383:
    6279 #line 1539 "parser.yy" /* yacc.c:1646  */
     6285#line 1545 "parser.yy" /* yacc.c:1646  */
    62806286    {   // mark all fields in list
    62816287                        for ( DeclarationNode *iter = (yyvsp[-1].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    62836289                        (yyval.decl) = (yyvsp[-1].decl);
    62846290                }
    6285 #line 6286 "Parser/parser.cc" /* yacc.c:1646  */
     6291#line 6292 "Parser/parser.cc" /* yacc.c:1646  */
    62866292    break;
    62876293
    62886294  case 385:
    6289 #line 1549 "parser.yy" /* yacc.c:1646  */
     6295#line 1555 "parser.yy" /* yacc.c:1646  */
    62906296    { (yyval.decl) = (yyvsp[-1].decl)->addName( (yyvsp[0].tok) ); }
    6291 #line 6292 "Parser/parser.cc" /* yacc.c:1646  */
     6297#line 6298 "Parser/parser.cc" /* yacc.c:1646  */
    62926298    break;
    62936299
    62946300  case 386:
    6295 #line 1551 "parser.yy" /* yacc.c:1646  */
     6301#line 1557 "parser.yy" /* yacc.c:1646  */
    62966302    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[-2].decl)->cloneType( (yyvsp[0].tok) ) ); }
    6297 #line 6298 "Parser/parser.cc" /* yacc.c:1646  */
     6303#line 6304 "Parser/parser.cc" /* yacc.c:1646  */
    62986304    break;
    62996305
    63006306  case 387:
    6301 #line 1553 "parser.yy" /* yacc.c:1646  */
     6307#line 1559 "parser.yy" /* yacc.c:1646  */
    63026308    { (yyval.decl) = (yyvsp[-1].decl)->appendList( (yyvsp[-1].decl)->cloneType( 0 ) ); }
    6303 #line 6304 "Parser/parser.cc" /* yacc.c:1646  */
     6309#line 6310 "Parser/parser.cc" /* yacc.c:1646  */
    63046310    break;
    63056311
    63066312  case 388:
    6307 #line 1558 "parser.yy" /* yacc.c:1646  */
     6313#line 1564 "parser.yy" /* yacc.c:1646  */
    63086314    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
    6309 #line 6310 "Parser/parser.cc" /* yacc.c:1646  */
     6315#line 6316 "Parser/parser.cc" /* yacc.c:1646  */
    63106316    break;
    63116317
    63126318  case 389:
    6313 #line 1560 "parser.yy" /* yacc.c:1646  */
     6319#line 1566 "parser.yy" /* yacc.c:1646  */
    63146320    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-3].decl)->cloneBaseType( (yyvsp[0].decl) ) ); }
    6315 #line 6316 "Parser/parser.cc" /* yacc.c:1646  */
     6321#line 6322 "Parser/parser.cc" /* yacc.c:1646  */
    63166322    break;
    63176323
    63186324  case 390:
    6319 #line 1565 "parser.yy" /* yacc.c:1646  */
     6325#line 1571 "parser.yy" /* yacc.c:1646  */
    63206326    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    6321 #line 6322 "Parser/parser.cc" /* yacc.c:1646  */
     6327#line 6328 "Parser/parser.cc" /* yacc.c:1646  */
    63226328    break;
    63236329
    63246330  case 391:
    6325 #line 1567 "parser.yy" /* yacc.c:1646  */
     6331#line 1573 "parser.yy" /* yacc.c:1646  */
    63266332    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[0].en) ); }
    6327 #line 6328 "Parser/parser.cc" /* yacc.c:1646  */
     6333#line 6334 "Parser/parser.cc" /* yacc.c:1646  */
    63286334    break;
    63296335
    63306336  case 392:
    6331 #line 1570 "parser.yy" /* yacc.c:1646  */
    6332     { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
    6333 #line 6334 "Parser/parser.cc" /* yacc.c:1646  */
    6334     break;
    6335 
    6336   case 393:
    6337 #line 1573 "parser.yy" /* yacc.c:1646  */
     6337#line 1576 "parser.yy" /* yacc.c:1646  */
    63386338    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
    63396339#line 6340 "Parser/parser.cc" /* yacc.c:1646  */
    63406340    break;
    63416341
     6342  case 393:
     6343#line 1579 "parser.yy" /* yacc.c:1646  */
     6344    { (yyval.decl) = (yyvsp[-1].decl)->addBitfield( (yyvsp[0].en) ); }
     6345#line 6346 "Parser/parser.cc" /* yacc.c:1646  */
     6346    break;
     6347
    63426348  case 395:
    6343 #line 1579 "parser.yy" /* yacc.c:1646  */
     6349#line 1585 "parser.yy" /* yacc.c:1646  */
    63446350    { (yyval.en) = 0; }
    6345 #line 6346 "Parser/parser.cc" /* yacc.c:1646  */
     6351#line 6352 "Parser/parser.cc" /* yacc.c:1646  */
    63466352    break;
    63476353
    63486354  case 396:
    6349 #line 1581 "parser.yy" /* yacc.c:1646  */
    6350     { (yyval.en) = (yyvsp[0].en); }
    6351 #line 6352 "Parser/parser.cc" /* yacc.c:1646  */
    6352     break;
    6353 
    6354   case 397:
    6355 #line 1586 "parser.yy" /* yacc.c:1646  */
     6355#line 1587 "parser.yy" /* yacc.c:1646  */
    63566356    { (yyval.en) = (yyvsp[0].en); }
    63576357#line 6358 "Parser/parser.cc" /* yacc.c:1646  */
    63586358    break;
    63596359
     6360  case 397:
     6361#line 1592 "parser.yy" /* yacc.c:1646  */
     6362    { (yyval.en) = (yyvsp[0].en); }
     6363#line 6364 "Parser/parser.cc" /* yacc.c:1646  */
     6364    break;
     6365
    63606366  case 399:
    6361 #line 1595 "parser.yy" /* yacc.c:1646  */
     6367#line 1601 "parser.yy" /* yacc.c:1646  */
    63626368    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[-2].decl) ); }
    6363 #line 6364 "Parser/parser.cc" /* yacc.c:1646  */
     6369#line 6370 "Parser/parser.cc" /* yacc.c:1646  */
    63646370    break;
    63656371
    63666372  case 400:
    6367 #line 1597 "parser.yy" /* yacc.c:1646  */
     6373#line 1603 "parser.yy" /* yacc.c:1646  */
    63686374    {
    63696375                        typedefTable.makeTypedef( *(yyvsp[0].tok) );
    63706376                        (yyval.decl) = DeclarationNode::newEnum( (yyvsp[0].tok), 0 );
    63716377                }
    6372 #line 6373 "Parser/parser.cc" /* yacc.c:1646  */
     6378#line 6379 "Parser/parser.cc" /* yacc.c:1646  */
    63736379    break;
    63746380
    63756381  case 401:
    6376 #line 1602 "parser.yy" /* yacc.c:1646  */
     6382#line 1608 "parser.yy" /* yacc.c:1646  */
    63776383    { typedefTable.makeTypedef( *(yyvsp[0].tok) ); }
    6378 #line 6379 "Parser/parser.cc" /* yacc.c:1646  */
     6384#line 6385 "Parser/parser.cc" /* yacc.c:1646  */
    63796385    break;
    63806386
    63816387  case 402:
    6382 #line 1604 "parser.yy" /* yacc.c:1646  */
     6388#line 1610 "parser.yy" /* yacc.c:1646  */
    63836389    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[-5].tok), (yyvsp[-2].decl) ); }
    6384 #line 6385 "Parser/parser.cc" /* yacc.c:1646  */
     6390#line 6391 "Parser/parser.cc" /* yacc.c:1646  */
    63856391    break;
    63866392
    63876393  case 403:
    6388 #line 1609 "parser.yy" /* yacc.c:1646  */
     6394#line 1615 "parser.yy" /* yacc.c:1646  */
    63896395    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ); }
    6390 #line 6391 "Parser/parser.cc" /* yacc.c:1646  */
     6396#line 6397 "Parser/parser.cc" /* yacc.c:1646  */
    63916397    break;
    63926398
    63936399  case 404:
    6394 #line 1611 "parser.yy" /* yacc.c:1646  */
     6400#line 1617 "parser.yy" /* yacc.c:1646  */
    63956401    { (yyval.decl) = (yyvsp[-3].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[-1].tok), (yyvsp[0].en) ) ); }
    6396 #line 6397 "Parser/parser.cc" /* yacc.c:1646  */
     6402#line 6403 "Parser/parser.cc" /* yacc.c:1646  */
    63976403    break;
    63986404
    63996405  case 405:
    6400 #line 1616 "parser.yy" /* yacc.c:1646  */
     6406#line 1622 "parser.yy" /* yacc.c:1646  */
    64016407    { (yyval.en) = 0; }
    6402 #line 6403 "Parser/parser.cc" /* yacc.c:1646  */
     6408#line 6409 "Parser/parser.cc" /* yacc.c:1646  */
    64036409    break;
    64046410
    64056411  case 406:
    6406 #line 1618 "parser.yy" /* yacc.c:1646  */
     6412#line 1624 "parser.yy" /* yacc.c:1646  */
    64076413    { (yyval.en) = (yyvsp[0].en); }
    6408 #line 6409 "Parser/parser.cc" /* yacc.c:1646  */
     6414#line 6415 "Parser/parser.cc" /* yacc.c:1646  */
    64096415    break;
    64106416
    64116417  case 407:
    6412 #line 1625 "parser.yy" /* yacc.c:1646  */
     6418#line 1631 "parser.yy" /* yacc.c:1646  */
    64136419    { (yyval.decl) = 0; }
    6414 #line 6415 "Parser/parser.cc" /* yacc.c:1646  */
     6420#line 6421 "Parser/parser.cc" /* yacc.c:1646  */
    64156421    break;
    64166422
    64176423  case 411:
    6418 #line 1633 "parser.yy" /* yacc.c:1646  */
     6424#line 1639 "parser.yy" /* yacc.c:1646  */
    64196425    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    6420 #line 6421 "Parser/parser.cc" /* yacc.c:1646  */
     6426#line 6427 "Parser/parser.cc" /* yacc.c:1646  */
    64216427    break;
    64226428
    64236429  case 412:
    6424 #line 1635 "parser.yy" /* yacc.c:1646  */
    6425     { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
    6426 #line 6427 "Parser/parser.cc" /* yacc.c:1646  */
    6427     break;
    6428 
    6429   case 413:
    6430 #line 1637 "parser.yy" /* yacc.c:1646  */
     6430#line 1641 "parser.yy" /* yacc.c:1646  */
    64316431    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
    64326432#line 6433 "Parser/parser.cc" /* yacc.c:1646  */
    64336433    break;
    64346434
     6435  case 413:
     6436#line 1643 "parser.yy" /* yacc.c:1646  */
     6437    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
     6438#line 6439 "Parser/parser.cc" /* yacc.c:1646  */
     6439    break;
     6440
    64356441  case 415:
    6436 #line 1645 "parser.yy" /* yacc.c:1646  */
    6437     { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    6438 #line 6439 "Parser/parser.cc" /* yacc.c:1646  */
    6439     break;
    6440 
    6441   case 416:
    6442 #line 1647 "parser.yy" /* yacc.c:1646  */
     6442#line 1651 "parser.yy" /* yacc.c:1646  */
    64436443    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    64446444#line 6445 "Parser/parser.cc" /* yacc.c:1646  */
    64456445    break;
    64466446
     6447  case 416:
     6448#line 1653 "parser.yy" /* yacc.c:1646  */
     6449    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6450#line 6451 "Parser/parser.cc" /* yacc.c:1646  */
     6451    break;
     6452
    64476453  case 417:
    6448 #line 1649 "parser.yy" /* yacc.c:1646  */
     6454#line 1655 "parser.yy" /* yacc.c:1646  */
    64496455    { (yyval.decl) = (yyvsp[-8].decl)->appendList( (yyvsp[-4].decl) )->appendList( (yyvsp[0].decl) ); }
    6450 #line 6451 "Parser/parser.cc" /* yacc.c:1646  */
     6456#line 6457 "Parser/parser.cc" /* yacc.c:1646  */
    64516457    break;
    64526458
    64536459  case 419:
    6454 #line 1655 "parser.yy" /* yacc.c:1646  */
     6460#line 1661 "parser.yy" /* yacc.c:1646  */
    64556461    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    6456 #line 6457 "Parser/parser.cc" /* yacc.c:1646  */
     6462#line 6463 "Parser/parser.cc" /* yacc.c:1646  */
    64576463    break;
    64586464
    64596465  case 420:
    6460 #line 1660 "parser.yy" /* yacc.c:1646  */
     6466#line 1666 "parser.yy" /* yacc.c:1646  */
    64616467    { (yyval.decl) = 0; }
    6462 #line 6463 "Parser/parser.cc" /* yacc.c:1646  */
     6468#line 6469 "Parser/parser.cc" /* yacc.c:1646  */
    64636469    break;
    64646470
    64656471  case 423:
    6466 #line 1667 "parser.yy" /* yacc.c:1646  */
     6472#line 1673 "parser.yy" /* yacc.c:1646  */
    64676473    { (yyval.decl) = (yyvsp[-4].decl)->addVarArgs(); }
    6468 #line 6469 "Parser/parser.cc" /* yacc.c:1646  */
     6474#line 6475 "Parser/parser.cc" /* yacc.c:1646  */
    64696475    break;
    64706476
    64716477  case 426:
    6472 #line 1674 "parser.yy" /* yacc.c:1646  */
    6473     { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    6474 #line 6475 "Parser/parser.cc" /* yacc.c:1646  */
    6475     break;
    6476 
    6477   case 427:
    6478 #line 1676 "parser.yy" /* yacc.c:1646  */
     6478#line 1680 "parser.yy" /* yacc.c:1646  */
    64796479    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
    64806480#line 6481 "Parser/parser.cc" /* yacc.c:1646  */
    64816481    break;
    64826482
     6483  case 427:
     6484#line 1682 "parser.yy" /* yacc.c:1646  */
     6485    { (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[0].decl) ); }
     6486#line 6487 "Parser/parser.cc" /* yacc.c:1646  */
     6487    break;
     6488
    64836489  case 429:
    6484 #line 1685 "parser.yy" /* yacc.c:1646  */
    6485     { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
    6486 #line 6487 "Parser/parser.cc" /* yacc.c:1646  */
    6487     break;
    6488 
    6489   case 430:
    6490 #line 1688 "parser.yy" /* yacc.c:1646  */
     6490#line 1691 "parser.yy" /* yacc.c:1646  */
    64916491    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
    64926492#line 6493 "Parser/parser.cc" /* yacc.c:1646  */
    64936493    break;
    64946494
     6495  case 430:
     6496#line 1694 "parser.yy" /* yacc.c:1646  */
     6497    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) ); }
     6498#line 6499 "Parser/parser.cc" /* yacc.c:1646  */
     6499    break;
     6500
    64956501  case 431:
    6496 #line 1690 "parser.yy" /* yacc.c:1646  */
     6502#line 1696 "parser.yy" /* yacc.c:1646  */
    64976503    { (yyval.decl) = (yyvsp[-2].decl)->addName( (yyvsp[-1].tok) )->addQualifiers( (yyvsp[-3].decl) ); }
    6498 #line 6499 "Parser/parser.cc" /* yacc.c:1646  */
     6504#line 6505 "Parser/parser.cc" /* yacc.c:1646  */
    64996505    break;
    65006506
    65016507  case 436:
    6502 #line 1700 "parser.yy" /* yacc.c:1646  */
     6508#line 1706 "parser.yy" /* yacc.c:1646  */
    65036509    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6504 #line 6505 "Parser/parser.cc" /* yacc.c:1646  */
     6510#line 6511 "Parser/parser.cc" /* yacc.c:1646  */
    65056511    break;
    65066512
    65076513  case 438:
    6508 #line 1706 "parser.yy" /* yacc.c:1646  */
     6514#line 1712 "parser.yy" /* yacc.c:1646  */
    65096515    {
    65106516                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    65116517                        (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
    65126518                }
    6513 #line 6514 "Parser/parser.cc" /* yacc.c:1646  */
     6519#line 6520 "Parser/parser.cc" /* yacc.c:1646  */
    65146520    break;
    65156521
    65166522  case 439:
    6517 #line 1711 "parser.yy" /* yacc.c:1646  */
     6523#line 1717 "parser.yy" /* yacc.c:1646  */
    65186524    {
    65196525                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    65206526                        (yyval.decl) = (yyvsp[-1].decl)->addType( (yyvsp[-2].decl) )->addInitializer( new InitializerNode( (yyvsp[0].en) ) );
    65216527                }
    6522 #line 6523 "Parser/parser.cc" /* yacc.c:1646  */
     6528#line 6529 "Parser/parser.cc" /* yacc.c:1646  */
    65236529    break;
    65246530
    65256531  case 441:
    6526 #line 1720 "parser.yy" /* yacc.c:1646  */
     6532#line 1726 "parser.yy" /* yacc.c:1646  */
    65276533    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
    6528 #line 6529 "Parser/parser.cc" /* yacc.c:1646  */
     6534#line 6535 "Parser/parser.cc" /* yacc.c:1646  */
    65296535    break;
    65306536
    65316537  case 442:
    6532 #line 1729 "parser.yy" /* yacc.c:1646  */
     6538#line 1735 "parser.yy" /* yacc.c:1646  */
    65336539    { (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) ); }
    6534 #line 6535 "Parser/parser.cc" /* yacc.c:1646  */
     6540#line 6541 "Parser/parser.cc" /* yacc.c:1646  */
    65356541    break;
    65366542
    65376543  case 443:
    6538 #line 1731 "parser.yy" /* yacc.c:1646  */
     6544#line 1737 "parser.yy" /* yacc.c:1646  */
    65396545    { (yyval.decl) = (yyvsp[-2].decl)->appendList( DeclarationNode::newName( (yyvsp[0].tok) ) ); }
    6540 #line 6541 "Parser/parser.cc" /* yacc.c:1646  */
     6546#line 6547 "Parser/parser.cc" /* yacc.c:1646  */
    65416547    break;
    65426548
    65436549  case 455:
    6544 #line 1756 "parser.yy" /* yacc.c:1646  */
    6545     { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
    6546 #line 6547 "Parser/parser.cc" /* yacc.c:1646  */
    6547     break;
    6548 
    6549   case 459:
    6550 #line 1764 "parser.yy" /* yacc.c:1646  */
     6550#line 1762 "parser.yy" /* yacc.c:1646  */
    65516551    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
    65526552#line 6553 "Parser/parser.cc" /* yacc.c:1646  */
    65536553    break;
    65546554
     6555  case 459:
     6556#line 1770 "parser.yy" /* yacc.c:1646  */
     6557    { (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) ); }
     6558#line 6559 "Parser/parser.cc" /* yacc.c:1646  */
     6559    break;
     6560
    65556561  case 460:
    6556 #line 1769 "parser.yy" /* yacc.c:1646  */
     6562#line 1775 "parser.yy" /* yacc.c:1646  */
    65576563    { (yyval.in) = 0; }
    6558 #line 6559 "Parser/parser.cc" /* yacc.c:1646  */
     6564#line 6565 "Parser/parser.cc" /* yacc.c:1646  */
    65596565    break;
    65606566
    65616567  case 461:
    6562 #line 1771 "parser.yy" /* yacc.c:1646  */
     6568#line 1777 "parser.yy" /* yacc.c:1646  */
    65636569    { (yyval.in) = (yyvsp[0].in); }
    6564 #line 6565 "Parser/parser.cc" /* yacc.c:1646  */
     6570#line 6571 "Parser/parser.cc" /* yacc.c:1646  */
    65656571    break;
    65666572
    65676573  case 462:
    6568 #line 1773 "parser.yy" /* yacc.c:1646  */
     6574#line 1779 "parser.yy" /* yacc.c:1646  */
    65696575    { (yyval.in) = (yyvsp[0].in)->set_maybeConstructed( false ); }
    6570 #line 6571 "Parser/parser.cc" /* yacc.c:1646  */
     6576#line 6577 "Parser/parser.cc" /* yacc.c:1646  */
    65716577    break;
    65726578
    65736579  case 463:
    6574 #line 1777 "parser.yy" /* yacc.c:1646  */
     6580#line 1783 "parser.yy" /* yacc.c:1646  */
    65756581    { (yyval.in) = new InitializerNode( (yyvsp[0].en) ); }
    6576 #line 6577 "Parser/parser.cc" /* yacc.c:1646  */
     6582#line 6583 "Parser/parser.cc" /* yacc.c:1646  */
    65776583    break;
    65786584
    65796585  case 464:
    6580 #line 1778 "parser.yy" /* yacc.c:1646  */
     6586#line 1784 "parser.yy" /* yacc.c:1646  */
    65816587    { (yyval.in) = new InitializerNode( (yyvsp[-2].in), true ); }
    6582 #line 6583 "Parser/parser.cc" /* yacc.c:1646  */
     6588#line 6589 "Parser/parser.cc" /* yacc.c:1646  */
    65836589    break;
    65846590
    65856591  case 465:
    6586 #line 1783 "parser.yy" /* yacc.c:1646  */
     6592#line 1789 "parser.yy" /* yacc.c:1646  */
    65876593    { (yyval.in) = 0; }
    6588 #line 6589 "Parser/parser.cc" /* yacc.c:1646  */
     6594#line 6595 "Parser/parser.cc" /* yacc.c:1646  */
    65896595    break;
    65906596
    65916597  case 467:
    6592 #line 1785 "parser.yy" /* yacc.c:1646  */
     6598#line 1791 "parser.yy" /* yacc.c:1646  */
    65936599    { (yyval.in) = (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ); }
    6594 #line 6595 "Parser/parser.cc" /* yacc.c:1646  */
     6600#line 6601 "Parser/parser.cc" /* yacc.c:1646  */
    65956601    break;
    65966602
    65976603  case 468:
    6598 #line 1786 "parser.yy" /* yacc.c:1646  */
     6604#line 1792 "parser.yy" /* yacc.c:1646  */
    65996605    { (yyval.in) = (InitializerNode *)( (yyvsp[-2].in)->set_last( (yyvsp[0].in) ) ); }
    6600 #line 6601 "Parser/parser.cc" /* yacc.c:1646  */
     6606#line 6607 "Parser/parser.cc" /* yacc.c:1646  */
    66016607    break;
    66026608
    66036609  case 469:
    6604 #line 1788 "parser.yy" /* yacc.c:1646  */
     6610#line 1794 "parser.yy" /* yacc.c:1646  */
    66056611    { (yyval.in) = (InitializerNode *)( (yyvsp[-3].in)->set_last( (yyvsp[0].in)->set_designators( (yyvsp[-1].en) ) ) ); }
    6606 #line 6607 "Parser/parser.cc" /* yacc.c:1646  */
     6612#line 6613 "Parser/parser.cc" /* yacc.c:1646  */
    66076613    break;
    66086614
    66096615  case 471:
    6610 #line 1804 "parser.yy" /* yacc.c:1646  */
     6616#line 1810 "parser.yy" /* yacc.c:1646  */
    66116617    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[-1].tok) ) ); }
    6612 #line 6613 "Parser/parser.cc" /* yacc.c:1646  */
     6618#line 6619 "Parser/parser.cc" /* yacc.c:1646  */
    66136619    break;
    66146620
    66156621  case 473:
    6616 #line 1810 "parser.yy" /* yacc.c:1646  */
     6622#line 1816 "parser.yy" /* yacc.c:1646  */
    66176623    { (yyval.en) = (ExpressionNode *)( (yyvsp[-1].en)->set_last( (yyvsp[0].en) ) ); }
    6618 #line 6619 "Parser/parser.cc" /* yacc.c:1646  */
     6624#line 6625 "Parser/parser.cc" /* yacc.c:1646  */
    66196625    break;
    66206626
    66216627  case 474:
    6622 #line 1816 "parser.yy" /* yacc.c:1646  */
     6628#line 1822 "parser.yy" /* yacc.c:1646  */
    66236629    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[0].tok) ) ); }
    6624 #line 6625 "Parser/parser.cc" /* yacc.c:1646  */
     6630#line 6631 "Parser/parser.cc" /* yacc.c:1646  */
    66256631    break;
    66266632
    66276633  case 475:
    6628 #line 1819 "parser.yy" /* yacc.c:1646  */
    6629     { (yyval.en) = (yyvsp[-2].en); }
    6630 #line 6631 "Parser/parser.cc" /* yacc.c:1646  */
    6631     break;
    6632 
    6633   case 476:
    6634 #line 1821 "parser.yy" /* yacc.c:1646  */
     6634#line 1825 "parser.yy" /* yacc.c:1646  */
    66356635    { (yyval.en) = (yyvsp[-2].en); }
    66366636#line 6637 "Parser/parser.cc" /* yacc.c:1646  */
    66376637    break;
    66386638
     6639  case 476:
     6640#line 1827 "parser.yy" /* yacc.c:1646  */
     6641    { (yyval.en) = (yyvsp[-2].en); }
     6642#line 6643 "Parser/parser.cc" /* yacc.c:1646  */
     6643    break;
     6644
    66396645  case 477:
    6640 #line 1823 "parser.yy" /* yacc.c:1646  */
     6646#line 1829 "parser.yy" /* yacc.c:1646  */
    66416647    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-4].en), (yyvsp[-2].en) ) ); }
    6642 #line 6643 "Parser/parser.cc" /* yacc.c:1646  */
     6648#line 6649 "Parser/parser.cc" /* yacc.c:1646  */
    66436649    break;
    66446650
    66456651  case 478:
    6646 #line 1825 "parser.yy" /* yacc.c:1646  */
     6652#line 1831 "parser.yy" /* yacc.c:1646  */
    66476653    { (yyval.en) = (yyvsp[-2].en); }
    6648 #line 6649 "Parser/parser.cc" /* yacc.c:1646  */
     6654#line 6655 "Parser/parser.cc" /* yacc.c:1646  */
    66496655    break;
    66506656
    66516657  case 480:
    6652 #line 1849 "parser.yy" /* yacc.c:1646  */
     6658#line 1855 "parser.yy" /* yacc.c:1646  */
    66536659    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6654 #line 6655 "Parser/parser.cc" /* yacc.c:1646  */
     6660#line 6661 "Parser/parser.cc" /* yacc.c:1646  */
    66556661    break;
    66566662
    66576663  case 481:
    6658 #line 1851 "parser.yy" /* yacc.c:1646  */
     6664#line 1857 "parser.yy" /* yacc.c:1646  */
    66596665    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6660 #line 6661 "Parser/parser.cc" /* yacc.c:1646  */
     6666#line 6667 "Parser/parser.cc" /* yacc.c:1646  */
    66616667    break;
    66626668
    66636669  case 482:
    6664 #line 1853 "parser.yy" /* yacc.c:1646  */
     6670#line 1859 "parser.yy" /* yacc.c:1646  */
    66656671    { (yyval.decl) = (yyvsp[-2].decl)->addQualifiers( (yyvsp[-1].decl) )->addQualifiers( (yyvsp[0].decl) ); }
    6666 #line 6667 "Parser/parser.cc" /* yacc.c:1646  */
     6672#line 6673 "Parser/parser.cc" /* yacc.c:1646  */
    66676673    break;
    66686674
    66696675  case 484:
    6670 #line 1859 "parser.yy" /* yacc.c:1646  */
     6676#line 1865 "parser.yy" /* yacc.c:1646  */
    66716677    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    6672 #line 6673 "Parser/parser.cc" /* yacc.c:1646  */
     6678#line 6679 "Parser/parser.cc" /* yacc.c:1646  */
    66736679    break;
    66746680
    66756681  case 485:
    6676 #line 1861 "parser.yy" /* yacc.c:1646  */
     6682#line 1867 "parser.yy" /* yacc.c:1646  */
    66776683    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    6678 #line 6679 "Parser/parser.cc" /* yacc.c:1646  */
     6684#line 6685 "Parser/parser.cc" /* yacc.c:1646  */
    66796685    break;
    66806686
    66816687  case 486:
    6682 #line 1866 "parser.yy" /* yacc.c:1646  */
     6688#line 1872 "parser.yy" /* yacc.c:1646  */
    66836689    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[-3].tok), (yyvsp[-1].en) ); }
    6684 #line 6685 "Parser/parser.cc" /* yacc.c:1646  */
     6690#line 6691 "Parser/parser.cc" /* yacc.c:1646  */
    66856691    break;
    66866692
    66876693  case 488:
    6688 #line 1872 "parser.yy" /* yacc.c:1646  */
     6694#line 1878 "parser.yy" /* yacc.c:1646  */
    66896695    { (yyval.decl) = (yyvsp[-3].decl)->appendList( (yyvsp[-1].decl) ); }
    6690 #line 6691 "Parser/parser.cc" /* yacc.c:1646  */
     6696#line 6697 "Parser/parser.cc" /* yacc.c:1646  */
    66916697    break;
    66926698
    66936699  case 489:
    6694 #line 1877 "parser.yy" /* yacc.c:1646  */
     6700#line 1883 "parser.yy" /* yacc.c:1646  */
    66956701    { typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD ); }
    6696 #line 6697 "Parser/parser.cc" /* yacc.c:1646  */
     6702#line 6703 "Parser/parser.cc" /* yacc.c:1646  */
    66976703    break;
    66986704
    66996705  case 490:
    6700 #line 1879 "parser.yy" /* yacc.c:1646  */
     6706#line 1885 "parser.yy" /* yacc.c:1646  */
    67016707    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[-3].tclass), (yyvsp[-2].tok) )->addAssertions( (yyvsp[0].decl) ); }
    6702 #line 6703 "Parser/parser.cc" /* yacc.c:1646  */
     6708#line 6709 "Parser/parser.cc" /* yacc.c:1646  */
    67036709    break;
    67046710
    67056711  case 492:
    6706 #line 1885 "parser.yy" /* yacc.c:1646  */
     6712#line 1891 "parser.yy" /* yacc.c:1646  */
    67076713    { (yyval.tclass) = DeclarationNode::Otype; }
    6708 #line 6709 "Parser/parser.cc" /* yacc.c:1646  */
     6714#line 6715 "Parser/parser.cc" /* yacc.c:1646  */
    67096715    break;
    67106716
    67116717  case 493:
    6712 #line 1887 "parser.yy" /* yacc.c:1646  */
     6718#line 1893 "parser.yy" /* yacc.c:1646  */
    67136719    { (yyval.tclass) = DeclarationNode::Ftype; }
    6714 #line 6715 "Parser/parser.cc" /* yacc.c:1646  */
     6720#line 6721 "Parser/parser.cc" /* yacc.c:1646  */
    67156721    break;
    67166722
    67176723  case 494:
    6718 #line 1889 "parser.yy" /* yacc.c:1646  */
     6724#line 1895 "parser.yy" /* yacc.c:1646  */
    67196725    { (yyval.tclass) = DeclarationNode::Dtype; }
    6720 #line 6721 "Parser/parser.cc" /* yacc.c:1646  */
     6726#line 6727 "Parser/parser.cc" /* yacc.c:1646  */
    67216727    break;
    67226728
    67236729  case 495:
    6724 #line 1894 "parser.yy" /* yacc.c:1646  */
     6730#line 1900 "parser.yy" /* yacc.c:1646  */
    67256731    { (yyval.decl) = 0; }
    6726 #line 6727 "Parser/parser.cc" /* yacc.c:1646  */
     6732#line 6733 "Parser/parser.cc" /* yacc.c:1646  */
    67276733    break;
    67286734
    67296735  case 496:
    6730 #line 1896 "parser.yy" /* yacc.c:1646  */
     6736#line 1902 "parser.yy" /* yacc.c:1646  */
    67316737    { (yyval.decl) = (yyvsp[-1].decl) != 0 ? (yyvsp[-1].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
    6732 #line 6733 "Parser/parser.cc" /* yacc.c:1646  */
     6738#line 6739 "Parser/parser.cc" /* yacc.c:1646  */
    67336739    break;
    67346740
    67356741  case 497:
    6736 #line 1901 "parser.yy" /* yacc.c:1646  */
     6742#line 1907 "parser.yy" /* yacc.c:1646  */
    67376743    {
    67386744                        typedefTable.openTrait( *(yyvsp[-3].tok) );
    67396745                        (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[-3].tok), (yyvsp[-1].en) );
    67406746                }
    6741 #line 6742 "Parser/parser.cc" /* yacc.c:1646  */
     6747#line 6748 "Parser/parser.cc" /* yacc.c:1646  */
    67426748    break;
    67436749
    67446750  case 498:
    6745 #line 1906 "parser.yy" /* yacc.c:1646  */
     6751#line 1912 "parser.yy" /* yacc.c:1646  */
    67466752    { (yyval.decl) = (yyvsp[-1].decl); }
    6747 #line 6748 "Parser/parser.cc" /* yacc.c:1646  */
     6753#line 6754 "Parser/parser.cc" /* yacc.c:1646  */
    67486754    break;
    67496755
    67506756  case 499:
    6751 #line 1908 "parser.yy" /* yacc.c:1646  */
     6757#line 1914 "parser.yy" /* yacc.c:1646  */
    67526758    { (yyval.decl) = 0; }
    6753 #line 6754 "Parser/parser.cc" /* yacc.c:1646  */
     6759#line 6760 "Parser/parser.cc" /* yacc.c:1646  */
    67546760    break;
    67556761
    67566762  case 500:
    6757 #line 1913 "parser.yy" /* yacc.c:1646  */
     6763#line 1919 "parser.yy" /* yacc.c:1646  */
    67586764    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ); }
    6759 #line 6760 "Parser/parser.cc" /* yacc.c:1646  */
     6765#line 6766 "Parser/parser.cc" /* yacc.c:1646  */
    67606766    break;
    67616767
    67626768  case 502:
    6763 #line 1916 "parser.yy" /* yacc.c:1646  */
     6769#line 1922 "parser.yy" /* yacc.c:1646  */
    67646770    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[0].decl) ) ) ) ); }
    6765 #line 6766 "Parser/parser.cc" /* yacc.c:1646  */
     6771#line 6772 "Parser/parser.cc" /* yacc.c:1646  */
    67666772    break;
    67676773
    67686774  case 503:
    6769 #line 1918 "parser.yy" /* yacc.c:1646  */
     6775#line 1924 "parser.yy" /* yacc.c:1646  */
    67706776    { (yyval.en) = (ExpressionNode *)( (yyvsp[-2].en)->set_last( (yyvsp[0].en) )); }
    6771 #line 6772 "Parser/parser.cc" /* yacc.c:1646  */
     6777#line 6778 "Parser/parser.cc" /* yacc.c:1646  */
    67726778    break;
    67736779
    67746780  case 504:
    6775 #line 1923 "parser.yy" /* yacc.c:1646  */
     6781#line 1929 "parser.yy" /* yacc.c:1646  */
    67766782    { (yyval.decl) = (yyvsp[0].decl); }
    6777 #line 6778 "Parser/parser.cc" /* yacc.c:1646  */
     6783#line 6784 "Parser/parser.cc" /* yacc.c:1646  */
    67786784    break;
    67796785
    67806786  case 505:
    6781 #line 1925 "parser.yy" /* yacc.c:1646  */
     6787#line 1931 "parser.yy" /* yacc.c:1646  */
    67826788    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-2].decl) ); }
    6783 #line 6784 "Parser/parser.cc" /* yacc.c:1646  */
     6789#line 6790 "Parser/parser.cc" /* yacc.c:1646  */
    67846790    break;
    67856791
    67866792  case 506:
    6787 #line 1927 "parser.yy" /* yacc.c:1646  */
     6793#line 1933 "parser.yy" /* yacc.c:1646  */
    67886794    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl)->copyStorageClasses( (yyvsp[-2].decl) ) ); }
    6789 #line 6790 "Parser/parser.cc" /* yacc.c:1646  */
     6795#line 6796 "Parser/parser.cc" /* yacc.c:1646  */
    67906796    break;
    67916797
    67926798  case 507:
    6793 #line 1932 "parser.yy" /* yacc.c:1646  */
     6799#line 1938 "parser.yy" /* yacc.c:1646  */
    67946800    { (yyval.decl) = (yyvsp[-1].decl)->addAssertions( (yyvsp[0].decl) ); }
    6795 #line 6796 "Parser/parser.cc" /* yacc.c:1646  */
     6801#line 6802 "Parser/parser.cc" /* yacc.c:1646  */
    67966802    break;
    67976803
    67986804  case 508:
    6799 #line 1934 "parser.yy" /* yacc.c:1646  */
     6805#line 1940 "parser.yy" /* yacc.c:1646  */
    68006806    { (yyval.decl) = (yyvsp[-3].decl)->addAssertions( (yyvsp[-2].decl) )->addType( (yyvsp[0].decl) ); }
    6801 #line 6802 "Parser/parser.cc" /* yacc.c:1646  */
     6807#line 6808 "Parser/parser.cc" /* yacc.c:1646  */
    68026808    break;
    68036809
    68046810  case 509:
    6805 #line 1939 "parser.yy" /* yacc.c:1646  */
     6811#line 1945 "parser.yy" /* yacc.c:1646  */
    68066812    {
    68076813                        typedefTable.addToEnclosingScope( *(yyvsp[0].tok), TypedefTable::TD );
    68086814                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[0].tok), 0 );
    68096815                }
    6810 #line 6811 "Parser/parser.cc" /* yacc.c:1646  */
     6816#line 6817 "Parser/parser.cc" /* yacc.c:1646  */
    68116817    break;
    68126818
    68136819  case 510:
    6814 #line 1944 "parser.yy" /* yacc.c:1646  */
     6820#line 1950 "parser.yy" /* yacc.c:1646  */
    68156821    {
    68166822                        typedefTable.addToEnclosingScope( *(yyvsp[-5].tok), TypedefTable::TG );
    68176823                        (yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[-5].tok), (yyvsp[-2].decl) );
    68186824                }
    6819 #line 6820 "Parser/parser.cc" /* yacc.c:1646  */
     6825#line 6826 "Parser/parser.cc" /* yacc.c:1646  */
    68206826    break;
    68216827
    68226828  case 511:
    6823 #line 1952 "parser.yy" /* yacc.c:1646  */
     6829#line 1958 "parser.yy" /* yacc.c:1646  */
    68246830    {
    68256831                        typedefTable.addToEnclosingScope( *(yyvsp[-7].tok), TypedefTable::ID );
    68266832                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-7].tok), (yyvsp[-4].decl), 0 );
    68276833                }
    6828 #line 6829 "Parser/parser.cc" /* yacc.c:1646  */
     6834#line 6835 "Parser/parser.cc" /* yacc.c:1646  */
    68296835    break;
    68306836
    68316837  case 512:
    6832 #line 1957 "parser.yy" /* yacc.c:1646  */
     6838#line 1963 "parser.yy" /* yacc.c:1646  */
    68336839    {
    68346840                        typedefTable.enterTrait( *(yyvsp[-6].tok) );
    68356841                        typedefTable.enterScope();
    68366842                }
    6837 #line 6838 "Parser/parser.cc" /* yacc.c:1646  */
     6843#line 6844 "Parser/parser.cc" /* yacc.c:1646  */
    68386844    break;
    68396845
    68406846  case 513:
    6841 #line 1962 "parser.yy" /* yacc.c:1646  */
     6847#line 1968 "parser.yy" /* yacc.c:1646  */
    68426848    {
    68436849                        typedefTable.leaveTrait();
     
    68456851                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[-9].tok), (yyvsp[-6].decl), (yyvsp[-1].decl) );
    68466852                }
    6847 #line 6848 "Parser/parser.cc" /* yacc.c:1646  */
     6853#line 6854 "Parser/parser.cc" /* yacc.c:1646  */
    68486854    break;
    68496855
    68506856  case 515:
    6851 #line 1972 "parser.yy" /* yacc.c:1646  */
     6857#line 1978 "parser.yy" /* yacc.c:1646  */
    68526858    { (yyval.decl) = (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ); }
    6853 #line 6854 "Parser/parser.cc" /* yacc.c:1646  */
     6859#line 6860 "Parser/parser.cc" /* yacc.c:1646  */
    68546860    break;
    68556861
    68566862  case 518:
    6857 #line 1982 "parser.yy" /* yacc.c:1646  */
     6863#line 1988 "parser.yy" /* yacc.c:1646  */
    68586864    {
    68596865                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    68606866                        (yyval.decl) = (yyvsp[0].decl);
    68616867                }
    6862 #line 6863 "Parser/parser.cc" /* yacc.c:1646  */
     6868#line 6869 "Parser/parser.cc" /* yacc.c:1646  */
    68636869    break;
    68646870
    68656871  case 519:
    6866 #line 1987 "parser.yy" /* yacc.c:1646  */
     6872#line 1993 "parser.yy" /* yacc.c:1646  */
    68676873    {
    68686874                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    68696875                        (yyval.decl) = (yyvsp[0].decl);
    68706876                }
    6871 #line 6872 "Parser/parser.cc" /* yacc.c:1646  */
     6877#line 6878 "Parser/parser.cc" /* yacc.c:1646  */
    68726878    break;
    68736879
    68746880  case 520:
    6875 #line 1992 "parser.yy" /* yacc.c:1646  */
     6881#line 1998 "parser.yy" /* yacc.c:1646  */
    68766882    {
    68776883                        typedefTable.addToEnclosingScope2( *(yyvsp[0].tok), TypedefTable::ID );
    68786884                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneType( (yyvsp[0].tok) ) );
    68796885                }
    6880 #line 6881 "Parser/parser.cc" /* yacc.c:1646  */
     6886#line 6887 "Parser/parser.cc" /* yacc.c:1646  */
    68816887    break;
    68826888
    68836889  case 521:
    6884 #line 2000 "parser.yy" /* yacc.c:1646  */
     6890#line 2006 "parser.yy" /* yacc.c:1646  */
    68856891    {
    68866892                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    68876893                        (yyval.decl) = (yyvsp[0].decl)->addType( (yyvsp[-1].decl) );
    68886894                }
    6889 #line 6890 "Parser/parser.cc" /* yacc.c:1646  */
     6895#line 6896 "Parser/parser.cc" /* yacc.c:1646  */
    68906896    break;
    68916897
    68926898  case 522:
    6893 #line 2005 "parser.yy" /* yacc.c:1646  */
     6899#line 2011 "parser.yy" /* yacc.c:1646  */
    68946900    {
    68956901                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
    68966902                        (yyval.decl) = (yyvsp[-4].decl)->appendList( (yyvsp[-4].decl)->cloneBaseType( (yyvsp[0].decl) ) );
    68976903                }
    6898 #line 6899 "Parser/parser.cc" /* yacc.c:1646  */
     6904#line 6905 "Parser/parser.cc" /* yacc.c:1646  */
    68996905    break;
    69006906
    69016907  case 523:
    6902 #line 2015 "parser.yy" /* yacc.c:1646  */
     6908#line 2021 "parser.yy" /* yacc.c:1646  */
    69036909    {}
    6904 #line 6905 "Parser/parser.cc" /* yacc.c:1646  */
     6910#line 6911 "Parser/parser.cc" /* yacc.c:1646  */
    69056911    break;
    69066912
    69076913  case 524:
    6908 #line 2017 "parser.yy" /* yacc.c:1646  */
     6914#line 2023 "parser.yy" /* yacc.c:1646  */
    69096915    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl);    }
    6910 #line 6911 "Parser/parser.cc" /* yacc.c:1646  */
     6916#line 6917 "Parser/parser.cc" /* yacc.c:1646  */
    69116917    break;
    69126918
    69136919  case 526:
    6914 #line 2023 "parser.yy" /* yacc.c:1646  */
     6920#line 2029 "parser.yy" /* yacc.c:1646  */
    69156921    { (yyval.decl) = (yyvsp[-2].decl) != nullptr ? (yyvsp[-2].decl)->appendList( (yyvsp[0].decl) ) : (yyvsp[0].decl); }
    6916 #line 6917 "Parser/parser.cc" /* yacc.c:1646  */
     6922#line 6923 "Parser/parser.cc" /* yacc.c:1646  */
    69176923    break;
    69186924
    69196925  case 527:
    6920 #line 2028 "parser.yy" /* yacc.c:1646  */
     6926#line 2034 "parser.yy" /* yacc.c:1646  */
    69216927    { (yyval.decl) = 0; }
    6922 #line 6923 "Parser/parser.cc" /* yacc.c:1646  */
     6928#line 6929 "Parser/parser.cc" /* yacc.c:1646  */
    69236929    break;
    69246930
    69256931  case 531:
    6926 #line 2036 "parser.yy" /* yacc.c:1646  */
     6932#line 2042 "parser.yy" /* yacc.c:1646  */
    69276933    {}
    6928 #line 6929 "Parser/parser.cc" /* yacc.c:1646  */
     6934#line 6935 "Parser/parser.cc" /* yacc.c:1646  */
    69296935    break;
    69306936
    69316937  case 532:
    6932 #line 2038 "parser.yy" /* yacc.c:1646  */
     6938#line 2044 "parser.yy" /* yacc.c:1646  */
    69336939    {
    69346940                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    69356941                        linkage = LinkageSpec::linkageCheck( (yyvsp[0].tok) );
    69366942                }
    6937 #line 6938 "Parser/parser.cc" /* yacc.c:1646  */
     6943#line 6944 "Parser/parser.cc" /* yacc.c:1646  */
    69386944    break;
    69396945
    69406946  case 533:
    6941 #line 2043 "parser.yy" /* yacc.c:1646  */
     6947#line 2049 "parser.yy" /* yacc.c:1646  */
    69426948    {
    69436949                        linkage = linkageStack.top();
     
    69456951                        (yyval.decl) = (yyvsp[-1].decl);
    69466952                }
    6947 #line 6948 "Parser/parser.cc" /* yacc.c:1646  */
     6953#line 6954 "Parser/parser.cc" /* yacc.c:1646  */
    69486954    break;
    69496955
    69506956  case 534:
    6951 #line 2049 "parser.yy" /* yacc.c:1646  */
     6957#line 2055 "parser.yy" /* yacc.c:1646  */
    69526958    {   // mark all fields in list
    69536959                        for ( DeclarationNode *iter = (yyvsp[0].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    69556961                        (yyval.decl) = (yyvsp[0].decl);
    69566962                }
    6957 #line 6958 "Parser/parser.cc" /* yacc.c:1646  */
     6963#line 6964 "Parser/parser.cc" /* yacc.c:1646  */
    69586964    break;
    69596965
    69606966  case 536:
    6961 #line 2064 "parser.yy" /* yacc.c:1646  */
     6967#line 2070 "parser.yy" /* yacc.c:1646  */
    69626968    {
    69636969                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    69656971                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
    69666972                }
    6967 #line 6968 "Parser/parser.cc" /* yacc.c:1646  */
     6973#line 6974 "Parser/parser.cc" /* yacc.c:1646  */
    69686974    break;
    69696975
    69706976  case 537:
    6971 #line 2070 "parser.yy" /* yacc.c:1646  */
     6977#line 2076 "parser.yy" /* yacc.c:1646  */
    69726978    {
    69736979                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    69756981                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) );
    69766982                }
    6977 #line 6978 "Parser/parser.cc" /* yacc.c:1646  */
     6983#line 6984 "Parser/parser.cc" /* yacc.c:1646  */
    69786984    break;
    69796985
    69806986  case 538:
    6981 #line 2079 "parser.yy" /* yacc.c:1646  */
     6987#line 2085 "parser.yy" /* yacc.c:1646  */
    69826988    {
    69836989                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    69856991                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) );
    69866992                }
    6987 #line 6988 "Parser/parser.cc" /* yacc.c:1646  */
     6993#line 6994 "Parser/parser.cc" /* yacc.c:1646  */
    69886994    break;
    69896995
    69906996  case 539:
    6991 #line 2085 "parser.yy" /* yacc.c:1646  */
     6997#line 2091 "parser.yy" /* yacc.c:1646  */
    69926998    {
    69936999                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    69957001                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-2].decl) );
    69967002                }
    6997 #line 6998 "Parser/parser.cc" /* yacc.c:1646  */
     7003#line 7004 "Parser/parser.cc" /* yacc.c:1646  */
    69987004    break;
    69997005
    70007006  case 540:
    7001 #line 2091 "parser.yy" /* yacc.c:1646  */
     7007#line 2097 "parser.yy" /* yacc.c:1646  */
    70027008    {
    70037009                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    70057011                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
    70067012                }
    7007 #line 7008 "Parser/parser.cc" /* yacc.c:1646  */
     7013#line 7014 "Parser/parser.cc" /* yacc.c:1646  */
    70087014    break;
    70097015
    70107016  case 541:
    7011 #line 2097 "parser.yy" /* yacc.c:1646  */
     7017#line 2103 "parser.yy" /* yacc.c:1646  */
    70127018    {
    70137019                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    70157021                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) );
    70167022                }
    7017 #line 7018 "Parser/parser.cc" /* yacc.c:1646  */
     7023#line 7024 "Parser/parser.cc" /* yacc.c:1646  */
    70187024    break;
    70197025
    70207026  case 542:
    7021 #line 2103 "parser.yy" /* yacc.c:1646  */
     7027#line 2109 "parser.yy" /* yacc.c:1646  */
    70227028    {
    70237029                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    70257031                        (yyval.decl) = (yyvsp[-1].decl)->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-2].decl) )->addQualifiers( (yyvsp[-3].decl) );
    70267032                }
    7027 #line 7028 "Parser/parser.cc" /* yacc.c:1646  */
     7033#line 7034 "Parser/parser.cc" /* yacc.c:1646  */
    70287034    break;
    70297035
    70307036  case 543:
    7031 #line 2111 "parser.yy" /* yacc.c:1646  */
     7037#line 2117 "parser.yy" /* yacc.c:1646  */
    70327038    {
    70337039                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    70357041                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addType( (yyvsp[-4].decl) );
    70367042                }
    7037 #line 7038 "Parser/parser.cc" /* yacc.c:1646  */
     7043#line 7044 "Parser/parser.cc" /* yacc.c:1646  */
    70387044    break;
    70397045
    70407046  case 544:
    7041 #line 2117 "parser.yy" /* yacc.c:1646  */
     7047#line 2123 "parser.yy" /* yacc.c:1646  */
    70427048    {
    70437049                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    70457051                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
    70467052                }
    7047 #line 7048 "Parser/parser.cc" /* yacc.c:1646  */
     7053#line 7054 "Parser/parser.cc" /* yacc.c:1646  */
    70487054    break;
    70497055
    70507056  case 545:
    7051 #line 2125 "parser.yy" /* yacc.c:1646  */
     7057#line 2131 "parser.yy" /* yacc.c:1646  */
    70527058    {
    70537059                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    70557061                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) );
    70567062                }
    7057 #line 7058 "Parser/parser.cc" /* yacc.c:1646  */
     7063#line 7064 "Parser/parser.cc" /* yacc.c:1646  */
    70587064    break;
    70597065
    70607066  case 546:
    7061 #line 2131 "parser.yy" /* yacc.c:1646  */
     7067#line 2137 "parser.yy" /* yacc.c:1646  */
    70627068    {
    70637069                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    70657071                        (yyval.decl) = (yyvsp[-3].decl)->addOldDeclList( (yyvsp[-1].decl) )->addFunctionBody( (yyvsp[0].sn) )->addQualifiers( (yyvsp[-4].decl) )->addQualifiers( (yyvsp[-5].decl) );
    70667072                }
    7067 #line 7068 "Parser/parser.cc" /* yacc.c:1646  */
     7073#line 7074 "Parser/parser.cc" /* yacc.c:1646  */
    70687074    break;
    70697075
    70707076  case 550:
    7071 #line 2146 "parser.yy" /* yacc.c:1646  */
     7077#line 2152 "parser.yy" /* yacc.c:1646  */
    70727078    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[-2].en), (yyvsp[0].en) ) ); }
    7073 #line 7074 "Parser/parser.cc" /* yacc.c:1646  */
     7079#line 7080 "Parser/parser.cc" /* yacc.c:1646  */
    70747080    break;
    70757081
    70767082  case 552:
    7077 #line 2151 "parser.yy" /* yacc.c:1646  */
     7083#line 2157 "parser.yy" /* yacc.c:1646  */
    70787084    { delete (yyvsp[-2].str); }
    7079 #line 7080 "Parser/parser.cc" /* yacc.c:1646  */
     7085#line 7086 "Parser/parser.cc" /* yacc.c:1646  */
    70807086    break;
    70817087
    70827088  case 553:
    7083 #line 2156 "parser.yy" /* yacc.c:1646  */
     7089#line 2162 "parser.yy" /* yacc.c:1646  */
    70847090    { (yyval.decl) = 0; }
    7085 #line 7086 "Parser/parser.cc" /* yacc.c:1646  */
     7091#line 7092 "Parser/parser.cc" /* yacc.c:1646  */
    70867092    break;
    70877093
    70887094  case 556:
    7089 #line 2163 "parser.yy" /* yacc.c:1646  */
     7095#line 2169 "parser.yy" /* yacc.c:1646  */
    70907096    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    7091 #line 7092 "Parser/parser.cc" /* yacc.c:1646  */
     7097#line 7098 "Parser/parser.cc" /* yacc.c:1646  */
    70927098    break;
    70937099
    70947100  case 557:
    7095 #line 2169 "parser.yy" /* yacc.c:1646  */
     7101#line 2175 "parser.yy" /* yacc.c:1646  */
    70967102    { (yyval.decl) = 0; }
    7097 #line 7098 "Parser/parser.cc" /* yacc.c:1646  */
     7103#line 7104 "Parser/parser.cc" /* yacc.c:1646  */
    70987104    break;
    70997105
    71007106  case 562:
    7101 #line 2180 "parser.yy" /* yacc.c:1646  */
     7107#line 2186 "parser.yy" /* yacc.c:1646  */
    71027108    { delete (yyvsp[-1].en); }
    7103 #line 7104 "Parser/parser.cc" /* yacc.c:1646  */
     7109#line 7110 "Parser/parser.cc" /* yacc.c:1646  */
    71047110    break;
    71057111
    71067112  case 563:
    7107 #line 2184 "parser.yy" /* yacc.c:1646  */
     7113#line 2190 "parser.yy" /* yacc.c:1646  */
    71087114    { delete (yyvsp[0].tok); }
    7109 #line 7110 "Parser/parser.cc" /* yacc.c:1646  */
     7115#line 7116 "Parser/parser.cc" /* yacc.c:1646  */
    71107116    break;
    71117117
    71127118  case 564:
    7113 #line 2185 "parser.yy" /* yacc.c:1646  */
    7114     { delete (yyvsp[0].decl); }
    7115 #line 7116 "Parser/parser.cc" /* yacc.c:1646  */
    7116     break;
    7117 
    7118   case 565:
    7119 #line 2186 "parser.yy" /* yacc.c:1646  */
     7119#line 2191 "parser.yy" /* yacc.c:1646  */
    71207120    { delete (yyvsp[0].decl); }
    71217121#line 7122 "Parser/parser.cc" /* yacc.c:1646  */
    71227122    break;
    71237123
    7124   case 566:
    7125 #line 2187 "parser.yy" /* yacc.c:1646  */
     7124  case 565:
     7125#line 2192 "parser.yy" /* yacc.c:1646  */
    71267126    { delete (yyvsp[0].decl); }
    71277127#line 7128 "Parser/parser.cc" /* yacc.c:1646  */
    71287128    break;
    71297129
     7130  case 566:
     7131#line 2193 "parser.yy" /* yacc.c:1646  */
     7132    { delete (yyvsp[0].decl); }
     7133#line 7134 "Parser/parser.cc" /* yacc.c:1646  */
     7134    break;
     7135
    71307136  case 567:
    7131 #line 2222 "parser.yy" /* yacc.c:1646  */
    7132     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7133 #line 7134 "Parser/parser.cc" /* yacc.c:1646  */
    7134     break;
    7135 
    7136   case 569:
    7137 #line 2225 "parser.yy" /* yacc.c:1646  */
     7137#line 2228 "parser.yy" /* yacc.c:1646  */
    71387138    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    71397139#line 7140 "Parser/parser.cc" /* yacc.c:1646  */
    71407140    break;
    71417141
    7142   case 570:
    7143 #line 2227 "parser.yy" /* yacc.c:1646  */
     7142  case 569:
     7143#line 2231 "parser.yy" /* yacc.c:1646  */
    71447144    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    71457145#line 7146 "Parser/parser.cc" /* yacc.c:1646  */
    71467146    break;
    71477147
     7148  case 570:
     7149#line 2233 "parser.yy" /* yacc.c:1646  */
     7150    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7151#line 7152 "Parser/parser.cc" /* yacc.c:1646  */
     7152    break;
     7153
    71487154  case 571:
    7149 #line 2232 "parser.yy" /* yacc.c:1646  */
     7155#line 2238 "parser.yy" /* yacc.c:1646  */
    71507156    {
    71517157                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
    71527158                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
    71537159                }
    7154 #line 7155 "Parser/parser.cc" /* yacc.c:1646  */
     7160#line 7161 "Parser/parser.cc" /* yacc.c:1646  */
    71557161    break;
    71567162
    71577163  case 572:
    7158 #line 2237 "parser.yy" /* yacc.c:1646  */
     7164#line 2243 "parser.yy" /* yacc.c:1646  */
    71597165    { (yyval.decl) = (yyvsp[-1].decl); }
    7160 #line 7161 "Parser/parser.cc" /* yacc.c:1646  */
     7166#line 7167 "Parser/parser.cc" /* yacc.c:1646  */
    71617167    break;
    71627168
    71637169  case 573:
    7164 #line 2242 "parser.yy" /* yacc.c:1646  */
     7170#line 2248 "parser.yy" /* yacc.c:1646  */
    71657171    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7166 #line 7167 "Parser/parser.cc" /* yacc.c:1646  */
     7172#line 7173 "Parser/parser.cc" /* yacc.c:1646  */
    71677173    break;
    71687174
    71697175  case 574:
    7170 #line 2244 "parser.yy" /* yacc.c:1646  */
     7176#line 2250 "parser.yy" /* yacc.c:1646  */
    71717177    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7172 #line 7173 "Parser/parser.cc" /* yacc.c:1646  */
     7178#line 7179 "Parser/parser.cc" /* yacc.c:1646  */
    71737179    break;
    71747180
    71757181  case 575:
    7176 #line 2246 "parser.yy" /* yacc.c:1646  */
     7182#line 2252 "parser.yy" /* yacc.c:1646  */
    71777183    { (yyval.decl) = (yyvsp[-1].decl); }
    7178 #line 7179 "Parser/parser.cc" /* yacc.c:1646  */
     7184#line 7185 "Parser/parser.cc" /* yacc.c:1646  */
    71797185    break;
    71807186
    71817187  case 576:
    7182 #line 2251 "parser.yy" /* yacc.c:1646  */
     7188#line 2257 "parser.yy" /* yacc.c:1646  */
    71837189    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
    7184 #line 7185 "Parser/parser.cc" /* yacc.c:1646  */
     7190#line 7191 "Parser/parser.cc" /* yacc.c:1646  */
    71857191    break;
    71867192
    71877193  case 577:
    7188 #line 2253 "parser.yy" /* yacc.c:1646  */
    7189     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7190 #line 7191 "Parser/parser.cc" /* yacc.c:1646  */
    7191     break;
    7192 
    7193   case 578:
    7194 #line 2255 "parser.yy" /* yacc.c:1646  */
     7194#line 2259 "parser.yy" /* yacc.c:1646  */
    71957195    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    71967196#line 7197 "Parser/parser.cc" /* yacc.c:1646  */
    71977197    break;
    71987198
     7199  case 578:
     7200#line 2261 "parser.yy" /* yacc.c:1646  */
     7201    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7202#line 7203 "Parser/parser.cc" /* yacc.c:1646  */
     7203    break;
     7204
    71997205  case 579:
    7200 #line 2257 "parser.yy" /* yacc.c:1646  */
     7206#line 2263 "parser.yy" /* yacc.c:1646  */
    72017207    { (yyval.decl) = (yyvsp[-1].decl); }
    7202 #line 7203 "Parser/parser.cc" /* yacc.c:1646  */
     7208#line 7209 "Parser/parser.cc" /* yacc.c:1646  */
    72037209    break;
    72047210
    72057211  case 580:
    7206 #line 2262 "parser.yy" /* yacc.c:1646  */
     7212#line 2268 "parser.yy" /* yacc.c:1646  */
    72077213    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7208 #line 7209 "Parser/parser.cc" /* yacc.c:1646  */
     7214#line 7215 "Parser/parser.cc" /* yacc.c:1646  */
    72097215    break;
    72107216
    72117217  case 581:
    7212 #line 2264 "parser.yy" /* yacc.c:1646  */
     7218#line 2270 "parser.yy" /* yacc.c:1646  */
    72137219    { (yyval.decl) = (yyvsp[-1].decl); }
    7214 #line 7215 "Parser/parser.cc" /* yacc.c:1646  */
     7220#line 7221 "Parser/parser.cc" /* yacc.c:1646  */
    72157221    break;
    72167222
    72177223  case 582:
    7218 #line 2273 "parser.yy" /* yacc.c:1646  */
    7219     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7220 #line 7221 "Parser/parser.cc" /* yacc.c:1646  */
    7221     break;
    7222 
    7223   case 584:
    7224 #line 2276 "parser.yy" /* yacc.c:1646  */
     7224#line 2279 "parser.yy" /* yacc.c:1646  */
    72257225    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    72267226#line 7227 "Parser/parser.cc" /* yacc.c:1646  */
    72277227    break;
    72287228
     7229  case 584:
     7230#line 2282 "parser.yy" /* yacc.c:1646  */
     7231    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7232#line 7233 "Parser/parser.cc" /* yacc.c:1646  */
     7233    break;
     7234
    72297235  case 585:
    7230 #line 2281 "parser.yy" /* yacc.c:1646  */
     7236#line 2287 "parser.yy" /* yacc.c:1646  */
    72317237    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
    7232 #line 7233 "Parser/parser.cc" /* yacc.c:1646  */
     7238#line 7239 "Parser/parser.cc" /* yacc.c:1646  */
    72337239    break;
    72347240
    72357241  case 586:
    7236 #line 2283 "parser.yy" /* yacc.c:1646  */
     7242#line 2289 "parser.yy" /* yacc.c:1646  */
    72377243    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7238 #line 7239 "Parser/parser.cc" /* yacc.c:1646  */
     7244#line 7245 "Parser/parser.cc" /* yacc.c:1646  */
    72397245    break;
    72407246
    72417247  case 587:
    7242 #line 2285 "parser.yy" /* yacc.c:1646  */
     7248#line 2291 "parser.yy" /* yacc.c:1646  */
    72437249    { (yyval.decl) = (yyvsp[-1].decl); }
    7244 #line 7245 "Parser/parser.cc" /* yacc.c:1646  */
     7250#line 7251 "Parser/parser.cc" /* yacc.c:1646  */
    72457251    break;
    72467252
    72477253  case 588:
    7248 #line 2290 "parser.yy" /* yacc.c:1646  */
     7254#line 2296 "parser.yy" /* yacc.c:1646  */
    72497255    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7250 #line 7251 "Parser/parser.cc" /* yacc.c:1646  */
     7256#line 7257 "Parser/parser.cc" /* yacc.c:1646  */
    72517257    break;
    72527258
    72537259  case 589:
    7254 #line 2292 "parser.yy" /* yacc.c:1646  */
     7260#line 2298 "parser.yy" /* yacc.c:1646  */
    72557261    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7256 #line 7257 "Parser/parser.cc" /* yacc.c:1646  */
     7262#line 7263 "Parser/parser.cc" /* yacc.c:1646  */
    72577263    break;
    72587264
    72597265  case 590:
    7260 #line 2294 "parser.yy" /* yacc.c:1646  */
     7266#line 2300 "parser.yy" /* yacc.c:1646  */
    72617267    { (yyval.decl) = (yyvsp[-1].decl); }
    7262 #line 7263 "Parser/parser.cc" /* yacc.c:1646  */
     7268#line 7269 "Parser/parser.cc" /* yacc.c:1646  */
    72637269    break;
    72647270
    72657271  case 591:
    7266 #line 2299 "parser.yy" /* yacc.c:1646  */
    7267     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7268 #line 7269 "Parser/parser.cc" /* yacc.c:1646  */
    7269     break;
    7270 
    7271   case 592:
    7272 #line 2301 "parser.yy" /* yacc.c:1646  */
     7272#line 2305 "parser.yy" /* yacc.c:1646  */
    72737273    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    72747274#line 7275 "Parser/parser.cc" /* yacc.c:1646  */
    72757275    break;
    72767276
     7277  case 592:
     7278#line 2307 "parser.yy" /* yacc.c:1646  */
     7279    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7280#line 7281 "Parser/parser.cc" /* yacc.c:1646  */
     7281    break;
     7282
    72777283  case 593:
    7278 #line 2303 "parser.yy" /* yacc.c:1646  */
     7284#line 2309 "parser.yy" /* yacc.c:1646  */
    72797285    { (yyval.decl) = (yyvsp[-1].decl); }
    7280 #line 7281 "Parser/parser.cc" /* yacc.c:1646  */
     7286#line 7287 "Parser/parser.cc" /* yacc.c:1646  */
    72817287    break;
    72827288
    72837289  case 597:
    7284 #line 2318 "parser.yy" /* yacc.c:1646  */
     7290#line 2324 "parser.yy" /* yacc.c:1646  */
    72857291    { (yyval.decl) = (yyvsp[-3].decl)->addIdList( (yyvsp[-1].decl) ); }
    7286 #line 7287 "Parser/parser.cc" /* yacc.c:1646  */
     7292#line 7293 "Parser/parser.cc" /* yacc.c:1646  */
    72877293    break;
    72887294
    72897295  case 598:
    7290 #line 2320 "parser.yy" /* yacc.c:1646  */
     7296#line 2326 "parser.yy" /* yacc.c:1646  */
    72917297    { (yyval.decl) = (yyvsp[-4].decl)->addIdList( (yyvsp[-1].decl) ); }
    7292 #line 7293 "Parser/parser.cc" /* yacc.c:1646  */
     7298#line 7299 "Parser/parser.cc" /* yacc.c:1646  */
    72937299    break;
    72947300
    72957301  case 599:
    7296 #line 2322 "parser.yy" /* yacc.c:1646  */
     7302#line 2328 "parser.yy" /* yacc.c:1646  */
    72977303    { (yyval.decl) = (yyvsp[-1].decl); }
    7298 #line 7299 "Parser/parser.cc" /* yacc.c:1646  */
     7304#line 7305 "Parser/parser.cc" /* yacc.c:1646  */
    72997305    break;
    73007306
    73017307  case 600:
    7302 #line 2327 "parser.yy" /* yacc.c:1646  */
     7308#line 2333 "parser.yy" /* yacc.c:1646  */
    73037309    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7304 #line 7305 "Parser/parser.cc" /* yacc.c:1646  */
     7310#line 7311 "Parser/parser.cc" /* yacc.c:1646  */
    73057311    break;
    73067312
    73077313  case 601:
    7308 #line 2329 "parser.yy" /* yacc.c:1646  */
     7314#line 2335 "parser.yy" /* yacc.c:1646  */
    73097315    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7310 #line 7311 "Parser/parser.cc" /* yacc.c:1646  */
     7316#line 7317 "Parser/parser.cc" /* yacc.c:1646  */
    73117317    break;
    73127318
    73137319  case 602:
    7314 #line 2331 "parser.yy" /* yacc.c:1646  */
     7320#line 2337 "parser.yy" /* yacc.c:1646  */
    73157321    { (yyval.decl) = (yyvsp[-1].decl); }
    7316 #line 7317 "Parser/parser.cc" /* yacc.c:1646  */
     7322#line 7323 "Parser/parser.cc" /* yacc.c:1646  */
    73177323    break;
    73187324
    73197325  case 603:
    7320 #line 2336 "parser.yy" /* yacc.c:1646  */
    7321     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7322 #line 7323 "Parser/parser.cc" /* yacc.c:1646  */
    7323     break;
    7324 
    7325   case 604:
    7326 #line 2338 "parser.yy" /* yacc.c:1646  */
     7326#line 2342 "parser.yy" /* yacc.c:1646  */
    73277327    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    73287328#line 7329 "Parser/parser.cc" /* yacc.c:1646  */
    73297329    break;
    73307330
     7331  case 604:
     7332#line 2344 "parser.yy" /* yacc.c:1646  */
     7333    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7334#line 7335 "Parser/parser.cc" /* yacc.c:1646  */
     7335    break;
     7336
    73317337  case 605:
    7332 #line 2340 "parser.yy" /* yacc.c:1646  */
     7338#line 2346 "parser.yy" /* yacc.c:1646  */
    73337339    { (yyval.decl) = (yyvsp[-1].decl); }
    7334 #line 7335 "Parser/parser.cc" /* yacc.c:1646  */
     7340#line 7341 "Parser/parser.cc" /* yacc.c:1646  */
    73357341    break;
    73367342
    73377343  case 606:
    7338 #line 2355 "parser.yy" /* yacc.c:1646  */
    7339     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7340 #line 7341 "Parser/parser.cc" /* yacc.c:1646  */
    7341     break;
    7342 
    7343   case 608:
    7344 #line 2358 "parser.yy" /* yacc.c:1646  */
     7344#line 2361 "parser.yy" /* yacc.c:1646  */
    73457345    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    73467346#line 7347 "Parser/parser.cc" /* yacc.c:1646  */
    73477347    break;
    73487348
    7349   case 609:
    7350 #line 2360 "parser.yy" /* yacc.c:1646  */
     7349  case 608:
     7350#line 2364 "parser.yy" /* yacc.c:1646  */
    73517351    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    73527352#line 7353 "Parser/parser.cc" /* yacc.c:1646  */
    73537353    break;
    73547354
     7355  case 609:
     7356#line 2366 "parser.yy" /* yacc.c:1646  */
     7357    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7358#line 7359 "Parser/parser.cc" /* yacc.c:1646  */
     7359    break;
     7360
    73557361  case 611:
    7356 #line 2366 "parser.yy" /* yacc.c:1646  */
     7362#line 2372 "parser.yy" /* yacc.c:1646  */
    73577363    { (yyval.decl) = (yyvsp[-1].decl); }
    7358 #line 7359 "Parser/parser.cc" /* yacc.c:1646  */
     7364#line 7365 "Parser/parser.cc" /* yacc.c:1646  */
    73597365    break;
    73607366
    73617367  case 612:
    7362 #line 2371 "parser.yy" /* yacc.c:1646  */
     7368#line 2377 "parser.yy" /* yacc.c:1646  */
    73637369    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7364 #line 7365 "Parser/parser.cc" /* yacc.c:1646  */
     7370#line 7371 "Parser/parser.cc" /* yacc.c:1646  */
    73657371    break;
    73667372
    73677373  case 613:
    7368 #line 2373 "parser.yy" /* yacc.c:1646  */
     7374#line 2379 "parser.yy" /* yacc.c:1646  */
    73697375    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7370 #line 7371 "Parser/parser.cc" /* yacc.c:1646  */
     7376#line 7377 "Parser/parser.cc" /* yacc.c:1646  */
    73717377    break;
    73727378
    73737379  case 614:
    7374 #line 2375 "parser.yy" /* yacc.c:1646  */
     7380#line 2381 "parser.yy" /* yacc.c:1646  */
    73757381    { (yyval.decl) = (yyvsp[-1].decl); }
    7376 #line 7377 "Parser/parser.cc" /* yacc.c:1646  */
     7382#line 7383 "Parser/parser.cc" /* yacc.c:1646  */
    73777383    break;
    73787384
    73797385  case 615:
    7380 #line 2380 "parser.yy" /* yacc.c:1646  */
     7386#line 2386 "parser.yy" /* yacc.c:1646  */
    73817387    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
    7382 #line 7383 "Parser/parser.cc" /* yacc.c:1646  */
     7388#line 7389 "Parser/parser.cc" /* yacc.c:1646  */
    73837389    break;
    73847390
    73857391  case 616:
    7386 #line 2382 "parser.yy" /* yacc.c:1646  */
    7387     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7388 #line 7389 "Parser/parser.cc" /* yacc.c:1646  */
    7389     break;
    7390 
    7391   case 617:
    7392 #line 2384 "parser.yy" /* yacc.c:1646  */
     7392#line 2388 "parser.yy" /* yacc.c:1646  */
    73937393    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    73947394#line 7395 "Parser/parser.cc" /* yacc.c:1646  */
    73957395    break;
    73967396
     7397  case 617:
     7398#line 2390 "parser.yy" /* yacc.c:1646  */
     7399    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7400#line 7401 "Parser/parser.cc" /* yacc.c:1646  */
     7401    break;
     7402
    73977403  case 618:
    7398 #line 2386 "parser.yy" /* yacc.c:1646  */
     7404#line 2392 "parser.yy" /* yacc.c:1646  */
    73997405    { (yyval.decl) = (yyvsp[-1].decl); }
    7400 #line 7401 "Parser/parser.cc" /* yacc.c:1646  */
     7406#line 7407 "Parser/parser.cc" /* yacc.c:1646  */
    74017407    break;
    74027408
    74037409  case 619:
    7404 #line 2391 "parser.yy" /* yacc.c:1646  */
     7410#line 2397 "parser.yy" /* yacc.c:1646  */
    74057411    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
    7406 #line 7407 "Parser/parser.cc" /* yacc.c:1646  */
     7412#line 7413 "Parser/parser.cc" /* yacc.c:1646  */
    74077413    break;
    74087414
    74097415  case 620:
    7410 #line 2393 "parser.yy" /* yacc.c:1646  */
     7416#line 2399 "parser.yy" /* yacc.c:1646  */
    74117417    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7412 #line 7413 "Parser/parser.cc" /* yacc.c:1646  */
     7418#line 7419 "Parser/parser.cc" /* yacc.c:1646  */
    74137419    break;
    74147420
    74157421  case 621:
    7416 #line 2395 "parser.yy" /* yacc.c:1646  */
     7422#line 2401 "parser.yy" /* yacc.c:1646  */
    74177423    { (yyval.decl) = (yyvsp[-1].decl); }
    7418 #line 7419 "Parser/parser.cc" /* yacc.c:1646  */
     7424#line 7425 "Parser/parser.cc" /* yacc.c:1646  */
    74197425    break;
    74207426
    74217427  case 622:
    7422 #line 2405 "parser.yy" /* yacc.c:1646  */
    7423     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7424 #line 7425 "Parser/parser.cc" /* yacc.c:1646  */
    7425     break;
    7426 
    7427   case 624:
    7428 #line 2408 "parser.yy" /* yacc.c:1646  */
     7428#line 2411 "parser.yy" /* yacc.c:1646  */
    74297429    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    74307430#line 7431 "Parser/parser.cc" /* yacc.c:1646  */
    74317431    break;
    74327432
    7433   case 625:
    7434 #line 2410 "parser.yy" /* yacc.c:1646  */
     7433  case 624:
     7434#line 2414 "parser.yy" /* yacc.c:1646  */
    74357435    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    74367436#line 7437 "Parser/parser.cc" /* yacc.c:1646  */
    74377437    break;
    74387438
     7439  case 625:
     7440#line 2416 "parser.yy" /* yacc.c:1646  */
     7441    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7442#line 7443 "Parser/parser.cc" /* yacc.c:1646  */
     7443    break;
     7444
    74397445  case 626:
    7440 #line 2415 "parser.yy" /* yacc.c:1646  */
     7446#line 2421 "parser.yy" /* yacc.c:1646  */
    74417447    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7442 #line 7443 "Parser/parser.cc" /* yacc.c:1646  */
     7448#line 7449 "Parser/parser.cc" /* yacc.c:1646  */
    74437449    break;
    74447450
    74457451  case 627:
    7446 #line 2417 "parser.yy" /* yacc.c:1646  */
     7452#line 2423 "parser.yy" /* yacc.c:1646  */
    74477453    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7448 #line 7449 "Parser/parser.cc" /* yacc.c:1646  */
     7454#line 7455 "Parser/parser.cc" /* yacc.c:1646  */
    74497455    break;
    74507456
    74517457  case 628:
    7452 #line 2419 "parser.yy" /* yacc.c:1646  */
     7458#line 2425 "parser.yy" /* yacc.c:1646  */
    74537459    { (yyval.decl) = (yyvsp[-1].decl); }
    7454 #line 7455 "Parser/parser.cc" /* yacc.c:1646  */
     7460#line 7461 "Parser/parser.cc" /* yacc.c:1646  */
    74557461    break;
    74567462
    74577463  case 629:
    7458 #line 2424 "parser.yy" /* yacc.c:1646  */
     7464#line 2430 "parser.yy" /* yacc.c:1646  */
    74597465    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
    7460 #line 7461 "Parser/parser.cc" /* yacc.c:1646  */
     7466#line 7467 "Parser/parser.cc" /* yacc.c:1646  */
    74617467    break;
    74627468
    74637469  case 630:
    7464 #line 2426 "parser.yy" /* yacc.c:1646  */
    7465     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7466 #line 7467 "Parser/parser.cc" /* yacc.c:1646  */
    7467     break;
    7468 
    7469   case 631:
    7470 #line 2428 "parser.yy" /* yacc.c:1646  */
     7470#line 2432 "parser.yy" /* yacc.c:1646  */
    74717471    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    74727472#line 7473 "Parser/parser.cc" /* yacc.c:1646  */
    74737473    break;
    74747474
     7475  case 631:
     7476#line 2434 "parser.yy" /* yacc.c:1646  */
     7477    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7478#line 7479 "Parser/parser.cc" /* yacc.c:1646  */
     7479    break;
     7480
    74757481  case 632:
    7476 #line 2430 "parser.yy" /* yacc.c:1646  */
     7482#line 2436 "parser.yy" /* yacc.c:1646  */
    74777483    { (yyval.decl) = (yyvsp[-1].decl); }
    7478 #line 7479 "Parser/parser.cc" /* yacc.c:1646  */
     7484#line 7485 "Parser/parser.cc" /* yacc.c:1646  */
    74797485    break;
    74807486
    74817487  case 633:
    7482 #line 2435 "parser.yy" /* yacc.c:1646  */
     7488#line 2441 "parser.yy" /* yacc.c:1646  */
    74837489    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
    7484 #line 7485 "Parser/parser.cc" /* yacc.c:1646  */
     7490#line 7491 "Parser/parser.cc" /* yacc.c:1646  */
    74857491    break;
    74867492
    74877493  case 634:
    7488 #line 2437 "parser.yy" /* yacc.c:1646  */
     7494#line 2443 "parser.yy" /* yacc.c:1646  */
    74897495    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7490 #line 7491 "Parser/parser.cc" /* yacc.c:1646  */
     7496#line 7497 "Parser/parser.cc" /* yacc.c:1646  */
    74917497    break;
    74927498
    74937499  case 635:
    7494 #line 2439 "parser.yy" /* yacc.c:1646  */
     7500#line 2445 "parser.yy" /* yacc.c:1646  */
    74957501    { (yyval.decl) = (yyvsp[-1].decl); }
    7496 #line 7497 "Parser/parser.cc" /* yacc.c:1646  */
     7502#line 7503 "Parser/parser.cc" /* yacc.c:1646  */
    74977503    break;
    74987504
    74997505  case 636:
    7500 #line 2470 "parser.yy" /* yacc.c:1646  */
    7501     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7502 #line 7503 "Parser/parser.cc" /* yacc.c:1646  */
    7503     break;
    7504 
    7505   case 638:
    7506 #line 2473 "parser.yy" /* yacc.c:1646  */
     7506#line 2476 "parser.yy" /* yacc.c:1646  */
    75077507    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    75087508#line 7509 "Parser/parser.cc" /* yacc.c:1646  */
    75097509    break;
    75107510
    7511   case 639:
    7512 #line 2475 "parser.yy" /* yacc.c:1646  */
     7511  case 638:
     7512#line 2479 "parser.yy" /* yacc.c:1646  */
    75137513    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    75147514#line 7515 "Parser/parser.cc" /* yacc.c:1646  */
    75157515    break;
    75167516
     7517  case 639:
     7518#line 2481 "parser.yy" /* yacc.c:1646  */
     7519    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7520#line 7521 "Parser/parser.cc" /* yacc.c:1646  */
     7521    break;
     7522
    75177523  case 640:
    7518 #line 2480 "parser.yy" /* yacc.c:1646  */
     7524#line 2486 "parser.yy" /* yacc.c:1646  */
    75197525    {
    75207526                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
    75217527                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
    75227528                }
    7523 #line 7524 "Parser/parser.cc" /* yacc.c:1646  */
     7529#line 7530 "Parser/parser.cc" /* yacc.c:1646  */
    75247530    break;
    75257531
    75267532  case 641:
    7527 #line 2485 "parser.yy" /* yacc.c:1646  */
     7533#line 2491 "parser.yy" /* yacc.c:1646  */
    75287534    {
    75297535                        typedefTable.setNextIdentifier( *(yyvsp[0].tok) );
    75307536                        (yyval.decl) = DeclarationNode::newName( (yyvsp[0].tok) );
    75317537                }
    7532 #line 7533 "Parser/parser.cc" /* yacc.c:1646  */
     7538#line 7539 "Parser/parser.cc" /* yacc.c:1646  */
    75337539    break;
    75347540
    75357541  case 642:
    7536 #line 2493 "parser.yy" /* yacc.c:1646  */
     7542#line 2499 "parser.yy" /* yacc.c:1646  */
    75377543    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7538 #line 7539 "Parser/parser.cc" /* yacc.c:1646  */
     7544#line 7545 "Parser/parser.cc" /* yacc.c:1646  */
    75397545    break;
    75407546
    75417547  case 643:
    7542 #line 2495 "parser.yy" /* yacc.c:1646  */
     7548#line 2501 "parser.yy" /* yacc.c:1646  */
    75437549    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7544 #line 7545 "Parser/parser.cc" /* yacc.c:1646  */
     7550#line 7551 "Parser/parser.cc" /* yacc.c:1646  */
    75457551    break;
    75467552
    75477553  case 644:
    7548 #line 2497 "parser.yy" /* yacc.c:1646  */
     7554#line 2503 "parser.yy" /* yacc.c:1646  */
    75497555    { (yyval.decl) = (yyvsp[-1].decl); }
    7550 #line 7551 "Parser/parser.cc" /* yacc.c:1646  */
     7556#line 7557 "Parser/parser.cc" /* yacc.c:1646  */
    75517557    break;
    75527558
    75537559  case 645:
    7554 #line 2502 "parser.yy" /* yacc.c:1646  */
     7560#line 2508 "parser.yy" /* yacc.c:1646  */
    75557561    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
    7556 #line 7557 "Parser/parser.cc" /* yacc.c:1646  */
     7562#line 7563 "Parser/parser.cc" /* yacc.c:1646  */
    75577563    break;
    75587564
    75597565  case 646:
    7560 #line 2504 "parser.yy" /* yacc.c:1646  */
     7566#line 2510 "parser.yy" /* yacc.c:1646  */
    75617567    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7562 #line 7563 "Parser/parser.cc" /* yacc.c:1646  */
     7568#line 7569 "Parser/parser.cc" /* yacc.c:1646  */
    75637569    break;
    75647570
    75657571  case 647:
    7566 #line 2509 "parser.yy" /* yacc.c:1646  */
     7572#line 2515 "parser.yy" /* yacc.c:1646  */
    75677573    { (yyval.decl) = (yyvsp[-5].decl)->addParamList( (yyvsp[-2].decl) ); }
    7568 #line 7569 "Parser/parser.cc" /* yacc.c:1646  */
     7574#line 7575 "Parser/parser.cc" /* yacc.c:1646  */
    75697575    break;
    75707576
    75717577  case 648:
    7572 #line 2511 "parser.yy" /* yacc.c:1646  */
     7578#line 2517 "parser.yy" /* yacc.c:1646  */
    75737579    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7574 #line 7575 "Parser/parser.cc" /* yacc.c:1646  */
     7580#line 7581 "Parser/parser.cc" /* yacc.c:1646  */
    75757581    break;
    75767582
    75777583  case 650:
    7578 #line 2526 "parser.yy" /* yacc.c:1646  */
    7579     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7580 #line 7581 "Parser/parser.cc" /* yacc.c:1646  */
    7581     break;
    7582 
    7583   case 651:
    7584 #line 2528 "parser.yy" /* yacc.c:1646  */
     7584#line 2532 "parser.yy" /* yacc.c:1646  */
    75857585    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    75867586#line 7587 "Parser/parser.cc" /* yacc.c:1646  */
    75877587    break;
    75887588
     7589  case 651:
     7590#line 2534 "parser.yy" /* yacc.c:1646  */
     7591    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7592#line 7593 "Parser/parser.cc" /* yacc.c:1646  */
     7593    break;
     7594
    75897595  case 652:
    7590 #line 2533 "parser.yy" /* yacc.c:1646  */
     7596#line 2539 "parser.yy" /* yacc.c:1646  */
    75917597    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    7592 #line 7593 "Parser/parser.cc" /* yacc.c:1646  */
     7598#line 7599 "Parser/parser.cc" /* yacc.c:1646  */
    75937599    break;
    75947600
    75957601  case 653:
    7596 #line 2535 "parser.yy" /* yacc.c:1646  */
     7602#line 2541 "parser.yy" /* yacc.c:1646  */
    75977603    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
    7598 #line 7599 "Parser/parser.cc" /* yacc.c:1646  */
     7604#line 7605 "Parser/parser.cc" /* yacc.c:1646  */
    75997605    break;
    76007606
    76017607  case 654:
    7602 #line 2537 "parser.yy" /* yacc.c:1646  */
     7608#line 2543 "parser.yy" /* yacc.c:1646  */
    76037609    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7604 #line 7605 "Parser/parser.cc" /* yacc.c:1646  */
     7610#line 7611 "Parser/parser.cc" /* yacc.c:1646  */
    76057611    break;
    76067612
    76077613  case 655:
    7608 #line 2539 "parser.yy" /* yacc.c:1646  */
     7614#line 2545 "parser.yy" /* yacc.c:1646  */
    76097615    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7610 #line 7611 "Parser/parser.cc" /* yacc.c:1646  */
     7616#line 7617 "Parser/parser.cc" /* yacc.c:1646  */
    76117617    break;
    76127618
    76137619  case 656:
    7614 #line 2541 "parser.yy" /* yacc.c:1646  */
     7620#line 2547 "parser.yy" /* yacc.c:1646  */
    76157621    { (yyval.decl) = (yyvsp[-1].decl); }
    7616 #line 7617 "Parser/parser.cc" /* yacc.c:1646  */
     7622#line 7623 "Parser/parser.cc" /* yacc.c:1646  */
    76177623    break;
    76187624
    76197625  case 658:
    7620 #line 2547 "parser.yy" /* yacc.c:1646  */
    7621     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7622 #line 7623 "Parser/parser.cc" /* yacc.c:1646  */
    7623     break;
    7624 
    7625   case 659:
    7626 #line 2549 "parser.yy" /* yacc.c:1646  */
     7626#line 2553 "parser.yy" /* yacc.c:1646  */
    76277627    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    76287628#line 7629 "Parser/parser.cc" /* yacc.c:1646  */
    76297629    break;
    76307630
     7631  case 659:
     7632#line 2555 "parser.yy" /* yacc.c:1646  */
     7633    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7634#line 7635 "Parser/parser.cc" /* yacc.c:1646  */
     7635    break;
     7636
    76317637  case 660:
    7632 #line 2551 "parser.yy" /* yacc.c:1646  */
     7638#line 2557 "parser.yy" /* yacc.c:1646  */
    76337639    { (yyval.decl) = (yyvsp[-1].decl); }
    7634 #line 7635 "Parser/parser.cc" /* yacc.c:1646  */
     7640#line 7641 "Parser/parser.cc" /* yacc.c:1646  */
    76357641    break;
    76367642
    76377643  case 661:
    7638 #line 2556 "parser.yy" /* yacc.c:1646  */
     7644#line 2562 "parser.yy" /* yacc.c:1646  */
    76397645    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[-2].decl), nullptr ); }
    7640 #line 7641 "Parser/parser.cc" /* yacc.c:1646  */
     7646#line 7647 "Parser/parser.cc" /* yacc.c:1646  */
    76417647    break;
    76427648
    76437649  case 662:
    7644 #line 2558 "parser.yy" /* yacc.c:1646  */
     7650#line 2564 "parser.yy" /* yacc.c:1646  */
    76457651    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7646 #line 7647 "Parser/parser.cc" /* yacc.c:1646  */
     7652#line 7653 "Parser/parser.cc" /* yacc.c:1646  */
    76477653    break;
    76487654
    76497655  case 663:
    7650 #line 2560 "parser.yy" /* yacc.c:1646  */
     7656#line 2566 "parser.yy" /* yacc.c:1646  */
    76517657    { (yyval.decl) = (yyvsp[-1].decl); }
    7652 #line 7653 "Parser/parser.cc" /* yacc.c:1646  */
     7658#line 7659 "Parser/parser.cc" /* yacc.c:1646  */
    76537659    break;
    76547660
    76557661  case 664:
    7656 #line 2566 "parser.yy" /* yacc.c:1646  */
     7662#line 2572 "parser.yy" /* yacc.c:1646  */
    76577663    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    7658 #line 7659 "Parser/parser.cc" /* yacc.c:1646  */
     7664#line 7665 "Parser/parser.cc" /* yacc.c:1646  */
    76597665    break;
    76607666
    76617667  case 665:
    7662 #line 2568 "parser.yy" /* yacc.c:1646  */
     7668#line 2574 "parser.yy" /* yacc.c:1646  */
    76637669    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[0].decl) ); }
    7664 #line 7665 "Parser/parser.cc" /* yacc.c:1646  */
     7670#line 7671 "Parser/parser.cc" /* yacc.c:1646  */
    76657671    break;
    76667672
    76677673  case 667:
    7668 #line 2574 "parser.yy" /* yacc.c:1646  */
     7674#line 2580 "parser.yy" /* yacc.c:1646  */
    76697675    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), 0, false ); }
    7670 #line 7671 "Parser/parser.cc" /* yacc.c:1646  */
     7676#line 7677 "Parser/parser.cc" /* yacc.c:1646  */
    76717677    break;
    76727678
    76737679  case 668:
    7674 #line 2576 "parser.yy" /* yacc.c:1646  */
     7680#line 2582 "parser.yy" /* yacc.c:1646  */
    76757681    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    7676 #line 7677 "Parser/parser.cc" /* yacc.c:1646  */
     7682#line 7683 "Parser/parser.cc" /* yacc.c:1646  */
    76777683    break;
    76787684
    76797685  case 669:
    7680 #line 2578 "parser.yy" /* yacc.c:1646  */
     7686#line 2584 "parser.yy" /* yacc.c:1646  */
    76817687    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newArray( (yyvsp[-2].en), 0, false ) ); }
    7682 #line 7683 "Parser/parser.cc" /* yacc.c:1646  */
     7688#line 7689 "Parser/parser.cc" /* yacc.c:1646  */
    76837689    break;
    76847690
    76857691  case 670:
    7686 #line 2580 "parser.yy" /* yacc.c:1646  */
     7692#line 2586 "parser.yy" /* yacc.c:1646  */
    76877693    { (yyval.decl) = (yyvsp[-5].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    7688 #line 7689 "Parser/parser.cc" /* yacc.c:1646  */
     7694#line 7695 "Parser/parser.cc" /* yacc.c:1646  */
    76897695    break;
    76907696
    76917697  case 672:
    7692 #line 2595 "parser.yy" /* yacc.c:1646  */
    7693     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7694 #line 7695 "Parser/parser.cc" /* yacc.c:1646  */
    7695     break;
    7696 
    7697   case 673:
    7698 #line 2597 "parser.yy" /* yacc.c:1646  */
     7698#line 2601 "parser.yy" /* yacc.c:1646  */
    76997699    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    77007700#line 7701 "Parser/parser.cc" /* yacc.c:1646  */
    77017701    break;
    77027702
     7703  case 673:
     7704#line 2603 "parser.yy" /* yacc.c:1646  */
     7705    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7706#line 7707 "Parser/parser.cc" /* yacc.c:1646  */
     7707    break;
     7708
    77037709  case 674:
    7704 #line 2602 "parser.yy" /* yacc.c:1646  */
     7710#line 2608 "parser.yy" /* yacc.c:1646  */
    77057711    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    7706 #line 7707 "Parser/parser.cc" /* yacc.c:1646  */
     7712#line 7713 "Parser/parser.cc" /* yacc.c:1646  */
    77077713    break;
    77087714
    77097715  case 675:
    7710 #line 2604 "parser.yy" /* yacc.c:1646  */
     7716#line 2610 "parser.yy" /* yacc.c:1646  */
    77117717    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
    7712 #line 7713 "Parser/parser.cc" /* yacc.c:1646  */
     7718#line 7719 "Parser/parser.cc" /* yacc.c:1646  */
    77137719    break;
    77147720
    77157721  case 676:
    7716 #line 2606 "parser.yy" /* yacc.c:1646  */
     7722#line 2612 "parser.yy" /* yacc.c:1646  */
    77177723    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7718 #line 7719 "Parser/parser.cc" /* yacc.c:1646  */
     7724#line 7725 "Parser/parser.cc" /* yacc.c:1646  */
    77197725    break;
    77207726
    77217727  case 677:
    7722 #line 2608 "parser.yy" /* yacc.c:1646  */
     7728#line 2614 "parser.yy" /* yacc.c:1646  */
    77237729    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7724 #line 7725 "Parser/parser.cc" /* yacc.c:1646  */
     7730#line 7731 "Parser/parser.cc" /* yacc.c:1646  */
    77257731    break;
    77267732
    77277733  case 678:
    7728 #line 2610 "parser.yy" /* yacc.c:1646  */
     7734#line 2616 "parser.yy" /* yacc.c:1646  */
    77297735    { (yyval.decl) = (yyvsp[-1].decl); }
    7730 #line 7731 "Parser/parser.cc" /* yacc.c:1646  */
     7736#line 7737 "Parser/parser.cc" /* yacc.c:1646  */
    77317737    break;
    77327738
    77337739  case 680:
    7734 #line 2616 "parser.yy" /* yacc.c:1646  */
    7735     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7736 #line 7737 "Parser/parser.cc" /* yacc.c:1646  */
    7737     break;
    7738 
    7739   case 681:
    7740 #line 2618 "parser.yy" /* yacc.c:1646  */
     7740#line 2622 "parser.yy" /* yacc.c:1646  */
    77417741    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    77427742#line 7743 "Parser/parser.cc" /* yacc.c:1646  */
    77437743    break;
    77447744
     7745  case 681:
     7746#line 2624 "parser.yy" /* yacc.c:1646  */
     7747    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7748#line 7749 "Parser/parser.cc" /* yacc.c:1646  */
     7749    break;
     7750
    77457751  case 682:
    7746 #line 2620 "parser.yy" /* yacc.c:1646  */
     7752#line 2626 "parser.yy" /* yacc.c:1646  */
    77477753    { (yyval.decl) = (yyvsp[-1].decl); }
    7748 #line 7749 "Parser/parser.cc" /* yacc.c:1646  */
     7754#line 7755 "Parser/parser.cc" /* yacc.c:1646  */
    77497755    break;
    77507756
    77517757  case 683:
    7752 #line 2625 "parser.yy" /* yacc.c:1646  */
     7758#line 2631 "parser.yy" /* yacc.c:1646  */
    77537759    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[-2].decl), nullptr ); }
    7754 #line 7755 "Parser/parser.cc" /* yacc.c:1646  */
     7760#line 7761 "Parser/parser.cc" /* yacc.c:1646  */
    77557761    break;
    77567762
    77577763  case 684:
    7758 #line 2627 "parser.yy" /* yacc.c:1646  */
     7764#line 2633 "parser.yy" /* yacc.c:1646  */
    77597765    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7760 #line 7761 "Parser/parser.cc" /* yacc.c:1646  */
     7766#line 7767 "Parser/parser.cc" /* yacc.c:1646  */
    77617767    break;
    77627768
    77637769  case 685:
    7764 #line 2629 "parser.yy" /* yacc.c:1646  */
     7770#line 2635 "parser.yy" /* yacc.c:1646  */
    77657771    { (yyval.decl) = (yyvsp[-1].decl); }
    7766 #line 7767 "Parser/parser.cc" /* yacc.c:1646  */
     7772#line 7773 "Parser/parser.cc" /* yacc.c:1646  */
    77677773    break;
    77687774
    77697775  case 687:
    7770 #line 2636 "parser.yy" /* yacc.c:1646  */
     7776#line 2642 "parser.yy" /* yacc.c:1646  */
    77717777    { (yyval.decl) = (yyvsp[-1].decl)->addArray( (yyvsp[0].decl) ); }
    7772 #line 7773 "Parser/parser.cc" /* yacc.c:1646  */
     7778#line 7779 "Parser/parser.cc" /* yacc.c:1646  */
    77737779    break;
    77747780
    77757781  case 689:
    7776 #line 2647 "parser.yy" /* yacc.c:1646  */
     7782#line 2653 "parser.yy" /* yacc.c:1646  */
    77777783    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    7778 #line 7779 "Parser/parser.cc" /* yacc.c:1646  */
     7784#line 7785 "Parser/parser.cc" /* yacc.c:1646  */
    77797785    break;
    77807786
    77817787  case 690:
    7782 #line 2650 "parser.yy" /* yacc.c:1646  */
     7788#line 2656 "parser.yy" /* yacc.c:1646  */
    77837789    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
    7784 #line 7785 "Parser/parser.cc" /* yacc.c:1646  */
     7790#line 7791 "Parser/parser.cc" /* yacc.c:1646  */
    77857791    break;
    77867792
    77877793  case 691:
    7788 #line 2652 "parser.yy" /* yacc.c:1646  */
     7794#line 2658 "parser.yy" /* yacc.c:1646  */
    77897795    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[-2].decl), false ); }
    7790 #line 7791 "Parser/parser.cc" /* yacc.c:1646  */
     7796#line 7797 "Parser/parser.cc" /* yacc.c:1646  */
    77917797    break;
    77927798
    77937799  case 692:
    7794 #line 2655 "parser.yy" /* yacc.c:1646  */
     7800#line 2661 "parser.yy" /* yacc.c:1646  */
    77957801    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
    7796 #line 7797 "Parser/parser.cc" /* yacc.c:1646  */
     7802#line 7803 "Parser/parser.cc" /* yacc.c:1646  */
    77977803    break;
    77987804
    77997805  case 693:
    7800 #line 2657 "parser.yy" /* yacc.c:1646  */
     7806#line 2663 "parser.yy" /* yacc.c:1646  */
    78017807    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
    7802 #line 7803 "Parser/parser.cc" /* yacc.c:1646  */
     7808#line 7809 "Parser/parser.cc" /* yacc.c:1646  */
    78037809    break;
    78047810
    78057811  case 694:
    7806 #line 2659 "parser.yy" /* yacc.c:1646  */
     7812#line 2665 "parser.yy" /* yacc.c:1646  */
    78077813    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-4].decl), true ); }
    7808 #line 7809 "Parser/parser.cc" /* yacc.c:1646  */
     7814#line 7815 "Parser/parser.cc" /* yacc.c:1646  */
    78097815    break;
    78107816
    78117817  case 696:
    7812 #line 2673 "parser.yy" /* yacc.c:1646  */
    7813     { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    7814 #line 7815 "Parser/parser.cc" /* yacc.c:1646  */
    7815     break;
    7816 
    7817   case 697:
    7818 #line 2675 "parser.yy" /* yacc.c:1646  */
     7818#line 2679 "parser.yy" /* yacc.c:1646  */
    78197819    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
    78207820#line 7821 "Parser/parser.cc" /* yacc.c:1646  */
    78217821    break;
    78227822
     7823  case 697:
     7824#line 2681 "parser.yy" /* yacc.c:1646  */
     7825    { (yyval.decl) = (yyvsp[-1].decl)->addQualifiers( (yyvsp[0].decl) ); }
     7826#line 7827 "Parser/parser.cc" /* yacc.c:1646  */
     7827    break;
     7828
    78237829  case 698:
    7824 #line 2680 "parser.yy" /* yacc.c:1646  */
     7830#line 2686 "parser.yy" /* yacc.c:1646  */
    78257831    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    7826 #line 7827 "Parser/parser.cc" /* yacc.c:1646  */
     7832#line 7833 "Parser/parser.cc" /* yacc.c:1646  */
    78277833    break;
    78287834
    78297835  case 699:
    7830 #line 2682 "parser.yy" /* yacc.c:1646  */
     7836#line 2688 "parser.yy" /* yacc.c:1646  */
    78317837    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[0].decl) ); }
    7832 #line 7833 "Parser/parser.cc" /* yacc.c:1646  */
     7838#line 7839 "Parser/parser.cc" /* yacc.c:1646  */
    78337839    break;
    78347840
    78357841  case 700:
    7836 #line 2684 "parser.yy" /* yacc.c:1646  */
     7842#line 2690 "parser.yy" /* yacc.c:1646  */
    78377843    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    7838 #line 7839 "Parser/parser.cc" /* yacc.c:1646  */
     7844#line 7845 "Parser/parser.cc" /* yacc.c:1646  */
    78397845    break;
    78407846
    78417847  case 701:
    7842 #line 2686 "parser.yy" /* yacc.c:1646  */
     7848#line 2692 "parser.yy" /* yacc.c:1646  */
    78437849    { (yyval.decl) = (yyvsp[0].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[-1].decl) ) ); }
    7844 #line 7845 "Parser/parser.cc" /* yacc.c:1646  */
     7850#line 7851 "Parser/parser.cc" /* yacc.c:1646  */
    78457851    break;
    78467852
    78477853  case 702:
    7848 #line 2688 "parser.yy" /* yacc.c:1646  */
     7854#line 2694 "parser.yy" /* yacc.c:1646  */
    78497855    { (yyval.decl) = (yyvsp[-1].decl); }
    7850 #line 7851 "Parser/parser.cc" /* yacc.c:1646  */
     7856#line 7857 "Parser/parser.cc" /* yacc.c:1646  */
    78517857    break;
    78527858
    78537859  case 704:
    7854 #line 2694 "parser.yy" /* yacc.c:1646  */
    7855     { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    7856 #line 7857 "Parser/parser.cc" /* yacc.c:1646  */
    7857     break;
    7858 
    7859   case 705:
    7860 #line 2696 "parser.yy" /* yacc.c:1646  */
     7860#line 2700 "parser.yy" /* yacc.c:1646  */
    78617861    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
    78627862#line 7863 "Parser/parser.cc" /* yacc.c:1646  */
    78637863    break;
    78647864
     7865  case 705:
     7866#line 2702 "parser.yy" /* yacc.c:1646  */
     7867    { (yyval.decl) = (yyvsp[-2].decl)->addArray( (yyvsp[0].decl) ); }
     7868#line 7869 "Parser/parser.cc" /* yacc.c:1646  */
     7869    break;
     7870
    78657871  case 706:
    7866 #line 2698 "parser.yy" /* yacc.c:1646  */
     7872#line 2704 "parser.yy" /* yacc.c:1646  */
    78677873    { (yyval.decl) = (yyvsp[-1].decl); }
    7868 #line 7869 "Parser/parser.cc" /* yacc.c:1646  */
     7874#line 7875 "Parser/parser.cc" /* yacc.c:1646  */
    78697875    break;
    78707876
    78717877  case 707:
    7872 #line 2703 "parser.yy" /* yacc.c:1646  */
     7878#line 2709 "parser.yy" /* yacc.c:1646  */
    78737879    { (yyval.decl) = (yyvsp[-6].decl)->addParamList( (yyvsp[-2].decl) ); }
    7874 #line 7875 "Parser/parser.cc" /* yacc.c:1646  */
     7880#line 7881 "Parser/parser.cc" /* yacc.c:1646  */
    78757881    break;
    78767882
    78777883  case 708:
    7878 #line 2705 "parser.yy" /* yacc.c:1646  */
     7884#line 2711 "parser.yy" /* yacc.c:1646  */
    78797885    { (yyval.decl) = (yyvsp[-1].decl); }
    7880 #line 7881 "Parser/parser.cc" /* yacc.c:1646  */
     7886#line 7887 "Parser/parser.cc" /* yacc.c:1646  */
    78817887    break;
    78827888
    78837889  case 711:
    7884 #line 2715 "parser.yy" /* yacc.c:1646  */
     7890#line 2721 "parser.yy" /* yacc.c:1646  */
    78857891    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    7886 #line 7887 "Parser/parser.cc" /* yacc.c:1646  */
     7892#line 7893 "Parser/parser.cc" /* yacc.c:1646  */
    78877893    break;
    78887894
    78897895  case 714:
    7890 #line 2725 "parser.yy" /* yacc.c:1646  */
     7896#line 2731 "parser.yy" /* yacc.c:1646  */
    78917897    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    7892 #line 7893 "Parser/parser.cc" /* yacc.c:1646  */
     7898#line 7899 "Parser/parser.cc" /* yacc.c:1646  */
    78937899    break;
    78947900
    78957901  case 715:
    7896 #line 2727 "parser.yy" /* yacc.c:1646  */
     7902#line 2733 "parser.yy" /* yacc.c:1646  */
    78977903    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    7898 #line 7899 "Parser/parser.cc" /* yacc.c:1646  */
     7904#line 7905 "Parser/parser.cc" /* yacc.c:1646  */
    78997905    break;
    79007906
    79017907  case 716:
    7902 #line 2729 "parser.yy" /* yacc.c:1646  */
     7908#line 2735 "parser.yy" /* yacc.c:1646  */
    79037909    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    7904 #line 7905 "Parser/parser.cc" /* yacc.c:1646  */
     7910#line 7911 "Parser/parser.cc" /* yacc.c:1646  */
    79057911    break;
    79067912
    79077913  case 717:
    7908 #line 2731 "parser.yy" /* yacc.c:1646  */
     7914#line 2737 "parser.yy" /* yacc.c:1646  */
    79097915    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    7910 #line 7911 "Parser/parser.cc" /* yacc.c:1646  */
     7916#line 7917 "Parser/parser.cc" /* yacc.c:1646  */
    79117917    break;
    79127918
    79137919  case 718:
    7914 #line 2733 "parser.yy" /* yacc.c:1646  */
     7920#line 2739 "parser.yy" /* yacc.c:1646  */
    79157921    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    7916 #line 7917 "Parser/parser.cc" /* yacc.c:1646  */
     7922#line 7923 "Parser/parser.cc" /* yacc.c:1646  */
    79177923    break;
    79187924
    79197925  case 719:
    7920 #line 2735 "parser.yy" /* yacc.c:1646  */
     7926#line 2741 "parser.yy" /* yacc.c:1646  */
    79217927    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    7922 #line 7923 "Parser/parser.cc" /* yacc.c:1646  */
     7928#line 7929 "Parser/parser.cc" /* yacc.c:1646  */
    79237929    break;
    79247930
    79257931  case 720:
    7926 #line 2742 "parser.yy" /* yacc.c:1646  */
     7932#line 2748 "parser.yy" /* yacc.c:1646  */
    79277933    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    7928 #line 7929 "Parser/parser.cc" /* yacc.c:1646  */
     7934#line 7935 "Parser/parser.cc" /* yacc.c:1646  */
    79297935    break;
    79307936
    79317937  case 721:
    7932 #line 2744 "parser.yy" /* yacc.c:1646  */
    7933     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
    7934 #line 7935 "Parser/parser.cc" /* yacc.c:1646  */
    7935     break;
    7936 
    7937   case 722:
    7938 #line 2746 "parser.yy" /* yacc.c:1646  */
    7939     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    7940 #line 7941 "Parser/parser.cc" /* yacc.c:1646  */
    7941     break;
    7942 
    7943   case 723:
    7944 #line 2748 "parser.yy" /* yacc.c:1646  */
    7945     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
    7946 #line 7947 "Parser/parser.cc" /* yacc.c:1646  */
    7947     break;
    7948 
    7949   case 724:
    79507938#line 2750 "parser.yy" /* yacc.c:1646  */
    79517939    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7940#line 7941 "Parser/parser.cc" /* yacc.c:1646  */
     7941    break;
     7942
     7943  case 722:
     7944#line 2752 "parser.yy" /* yacc.c:1646  */
     7945    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7946#line 7947 "Parser/parser.cc" /* yacc.c:1646  */
     7947    break;
     7948
     7949  case 723:
     7950#line 2754 "parser.yy" /* yacc.c:1646  */
     7951    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
    79527952#line 7953 "Parser/parser.cc" /* yacc.c:1646  */
    79537953    break;
    79547954
     7955  case 724:
     7956#line 2756 "parser.yy" /* yacc.c:1646  */
     7957    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7958#line 7959 "Parser/parser.cc" /* yacc.c:1646  */
     7959    break;
     7960
    79557961  case 725:
    7956 #line 2753 "parser.yy" /* yacc.c:1646  */
     7962#line 2759 "parser.yy" /* yacc.c:1646  */
    79577963    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    7958 #line 7959 "Parser/parser.cc" /* yacc.c:1646  */
     7964#line 7965 "Parser/parser.cc" /* yacc.c:1646  */
    79597965    break;
    79607966
    79617967  case 726:
    7962 #line 2755 "parser.yy" /* yacc.c:1646  */
    7963     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
    7964 #line 7965 "Parser/parser.cc" /* yacc.c:1646  */
    7965     break;
    7966 
    7967   case 727:
    7968 #line 2757 "parser.yy" /* yacc.c:1646  */
    7969     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    7970 #line 7971 "Parser/parser.cc" /* yacc.c:1646  */
    7971     break;
    7972 
    7973   case 728:
    7974 #line 2759 "parser.yy" /* yacc.c:1646  */
    7975     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
    7976 #line 7977 "Parser/parser.cc" /* yacc.c:1646  */
    7977     break;
    7978 
    7979   case 729:
    79807968#line 2761 "parser.yy" /* yacc.c:1646  */
    79817969    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7970#line 7971 "Parser/parser.cc" /* yacc.c:1646  */
     7971    break;
     7972
     7973  case 727:
     7974#line 2763 "parser.yy" /* yacc.c:1646  */
     7975    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     7976#line 7977 "Parser/parser.cc" /* yacc.c:1646  */
     7977    break;
     7978
     7979  case 728:
     7980#line 2765 "parser.yy" /* yacc.c:1646  */
     7981    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( (yyvsp[-2].decl) ); }
    79827982#line 7983 "Parser/parser.cc" /* yacc.c:1646  */
    79837983    break;
    79847984
     7985  case 729:
     7986#line 2767 "parser.yy" /* yacc.c:1646  */
     7987    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     7988#line 7989 "Parser/parser.cc" /* yacc.c:1646  */
     7989    break;
     7990
    79857991  case 730:
    7986 #line 2766 "parser.yy" /* yacc.c:1646  */
     7992#line 2772 "parser.yy" /* yacc.c:1646  */
    79877993    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[-3].decl) ); }
    7988 #line 7989 "Parser/parser.cc" /* yacc.c:1646  */
     7994#line 7995 "Parser/parser.cc" /* yacc.c:1646  */
    79897995    break;
    79907996
    79917997  case 731:
    7992 #line 2768 "parser.yy" /* yacc.c:1646  */
     7998#line 2774 "parser.yy" /* yacc.c:1646  */
    79937999    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), false ); }
    7994 #line 7995 "Parser/parser.cc" /* yacc.c:1646  */
     8000#line 8001 "Parser/parser.cc" /* yacc.c:1646  */
    79958001    break;
    79968002
    79978003  case 732:
    7998 #line 2773 "parser.yy" /* yacc.c:1646  */
     8004#line 2779 "parser.yy" /* yacc.c:1646  */
    79998005    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl), true ); }
    8000 #line 8001 "Parser/parser.cc" /* yacc.c:1646  */
     8006#line 8007 "Parser/parser.cc" /* yacc.c:1646  */
    80018007    break;
    80028008
    80038009  case 733:
    8004 #line 2775 "parser.yy" /* yacc.c:1646  */
     8010#line 2781 "parser.yy" /* yacc.c:1646  */
    80058011    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[-2].en), (yyvsp[-3].decl)->addQualifiers( (yyvsp[-4].decl) ), true ); }
    8006 #line 8007 "Parser/parser.cc" /* yacc.c:1646  */
     8012#line 8013 "Parser/parser.cc" /* yacc.c:1646  */
    80078013    break;
    80088014
    80098015  case 735:
    8010 #line 2802 "parser.yy" /* yacc.c:1646  */
     8016#line 2808 "parser.yy" /* yacc.c:1646  */
    80118017    { (yyval.decl) = (yyvsp[0].decl)->addQualifiers( (yyvsp[-1].decl) ); }
    8012 #line 8013 "Parser/parser.cc" /* yacc.c:1646  */
     8018#line 8019 "Parser/parser.cc" /* yacc.c:1646  */
    80138019    break;
    80148020
    80158021  case 739:
    8016 #line 2813 "parser.yy" /* yacc.c:1646  */
     8022#line 2819 "parser.yy" /* yacc.c:1646  */
    80178023    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8018 #line 8019 "Parser/parser.cc" /* yacc.c:1646  */
     8024#line 8025 "Parser/parser.cc" /* yacc.c:1646  */
    80198025    break;
    80208026
    80218027  case 740:
    8022 #line 2815 "parser.yy" /* yacc.c:1646  */
     8028#line 2821 "parser.yy" /* yacc.c:1646  */
    80238029    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    8024 #line 8025 "Parser/parser.cc" /* yacc.c:1646  */
     8030#line 8031 "Parser/parser.cc" /* yacc.c:1646  */
    80258031    break;
    80268032
    80278033  case 741:
    8028 #line 2817 "parser.yy" /* yacc.c:1646  */
     8034#line 2823 "parser.yy" /* yacc.c:1646  */
    80298035    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8030 #line 8031 "Parser/parser.cc" /* yacc.c:1646  */
     8036#line 8037 "Parser/parser.cc" /* yacc.c:1646  */
    80318037    break;
    80328038
    80338039  case 742:
    8034 #line 2819 "parser.yy" /* yacc.c:1646  */
     8040#line 2825 "parser.yy" /* yacc.c:1646  */
    80358041    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    8036 #line 8037 "Parser/parser.cc" /* yacc.c:1646  */
     8042#line 8043 "Parser/parser.cc" /* yacc.c:1646  */
    80378043    break;
    80388044
    80398045  case 743:
    8040 #line 2821 "parser.yy" /* yacc.c:1646  */
     8046#line 2827 "parser.yy" /* yacc.c:1646  */
    80418047    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    8042 #line 8043 "Parser/parser.cc" /* yacc.c:1646  */
     8048#line 8049 "Parser/parser.cc" /* yacc.c:1646  */
    80438049    break;
    80448050
    80458051  case 744:
    8046 #line 2823 "parser.yy" /* yacc.c:1646  */
     8052#line 2829 "parser.yy" /* yacc.c:1646  */
    80478053    { (yyval.decl) = (yyvsp[0].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[-2].decl) ) ); }
    8048 #line 8049 "Parser/parser.cc" /* yacc.c:1646  */
     8054#line 8055 "Parser/parser.cc" /* yacc.c:1646  */
    80498055    break;
    80508056
    80518057  case 745:
    8052 #line 2830 "parser.yy" /* yacc.c:1646  */
    8053     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    8054 #line 8055 "Parser/parser.cc" /* yacc.c:1646  */
    8055     break;
    8056 
    8057   case 746:
    8058 #line 2832 "parser.yy" /* yacc.c:1646  */
    8059     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    8060 #line 8061 "Parser/parser.cc" /* yacc.c:1646  */
    8061     break;
    8062 
    8063   case 747:
    8064 #line 2834 "parser.yy" /* yacc.c:1646  */
    8065     { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
    8066 #line 8067 "Parser/parser.cc" /* yacc.c:1646  */
    8067     break;
    8068 
    8069   case 748:
    80708058#line 2836 "parser.yy" /* yacc.c:1646  */
    80718059    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    8072 #line 8073 "Parser/parser.cc" /* yacc.c:1646  */
    8073     break;
    8074 
    8075   case 749:
     8060#line 8061 "Parser/parser.cc" /* yacc.c:1646  */
     8061    break;
     8062
     8063  case 746:
    80768064#line 2838 "parser.yy" /* yacc.c:1646  */
    80778065    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    8078 #line 8079 "Parser/parser.cc" /* yacc.c:1646  */
    8079     break;
    8080 
    8081   case 750:
     8066#line 8067 "Parser/parser.cc" /* yacc.c:1646  */
     8067    break;
     8068
     8069  case 747:
    80828070#line 2840 "parser.yy" /* yacc.c:1646  */
    80838071    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     8072#line 8073 "Parser/parser.cc" /* yacc.c:1646  */
     8073    break;
     8074
     8075  case 748:
     8076#line 2842 "parser.yy" /* yacc.c:1646  */
     8077    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     8078#line 8079 "Parser/parser.cc" /* yacc.c:1646  */
     8079    break;
     8080
     8081  case 749:
     8082#line 2844 "parser.yy" /* yacc.c:1646  */
     8083    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    80848084#line 8085 "Parser/parser.cc" /* yacc.c:1646  */
    80858085    break;
    80868086
     8087  case 750:
     8088#line 2846 "parser.yy" /* yacc.c:1646  */
     8089    { (yyval.decl) = (yyvsp[0].decl)->addNewArray( (yyvsp[-1].decl) ); }
     8090#line 8091 "Parser/parser.cc" /* yacc.c:1646  */
     8091    break;
     8092
    80878093  case 751:
    8088 #line 2845 "parser.yy" /* yacc.c:1646  */
     8094#line 2851 "parser.yy" /* yacc.c:1646  */
    80898095    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[-2].decl) ); }
    8090 #line 8091 "Parser/parser.cc" /* yacc.c:1646  */
     8096#line 8097 "Parser/parser.cc" /* yacc.c:1646  */
    80918097    break;
    80928098
    80938099  case 752:
    8094 #line 2852 "parser.yy" /* yacc.c:1646  */
    8095     { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[-5].decl), (yyvsp[-2].decl), nullptr ); }
    8096 #line 8097 "Parser/parser.cc" /* yacc.c:1646  */
    8097     break;
    8098 
    8099   case 753:
    8100 #line 2854 "parser.yy" /* yacc.c:1646  */
     8100#line 2858 "parser.yy" /* yacc.c:1646  */
    81018101    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[-5].decl), (yyvsp[-2].decl), nullptr ); }
    81028102#line 8103 "Parser/parser.cc" /* yacc.c:1646  */
    81038103    break;
    81048104
     8105  case 753:
     8106#line 2860 "parser.yy" /* yacc.c:1646  */
     8107    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[-5].decl), (yyvsp[-2].decl), nullptr ); }
     8108#line 8109 "Parser/parser.cc" /* yacc.c:1646  */
     8109    break;
     8110
    81058111  case 756:
    8106 #line 2878 "parser.yy" /* yacc.c:1646  */
     8112#line 2884 "parser.yy" /* yacc.c:1646  */
    81078113    { (yyval.en) = 0; }
    8108 #line 8109 "Parser/parser.cc" /* yacc.c:1646  */
     8114#line 8115 "Parser/parser.cc" /* yacc.c:1646  */
    81098115    break;
    81108116
    81118117  case 757:
    8112 #line 2880 "parser.yy" /* yacc.c:1646  */
     8118#line 2886 "parser.yy" /* yacc.c:1646  */
    81138119    { (yyval.en) = (yyvsp[0].en); }
    8114 #line 8115 "Parser/parser.cc" /* yacc.c:1646  */
    8115     break;
    8116 
    8117 
    8118 #line 8119 "Parser/parser.cc" /* yacc.c:1646  */
     8120#line 8121 "Parser/parser.cc" /* yacc.c:1646  */
     8121    break;
     8122
     8123
     8124#line 8125 "Parser/parser.cc" /* yacc.c:1646  */
    81198125      default: break;
    81208126    }
     
    83448350  return yyresult;
    83458351}
    8346 #line 2883 "parser.yy" /* yacc.c:1906  */
     8352#line 2889 "parser.yy" /* yacc.c:1906  */
    83478353
    83488354// ----end of grammar----
  • src/Parser/parser.yy

    r148f729 r4cb935e  
    362362                { $$ = new ExpressionNode( build_varref( $1 ) ); }
    363363        | zero_one
    364                 { $$ = new ExpressionNode( build_varref( $1 ) ); }
     364                { $$ = new ExpressionNode( build_constantZeroOne( *$1 ) ); }
    365365        | tuple
    366366        | '(' comma_expression ')'
     
    443443                { $$ = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *$1 ), $2 ) ); }
    444444        | no_attr_identifier fraction_constants
    445                 { $$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) ); }
     445                {
     446                        if( (*$1) == "0" || (*$1) == "1" ) {
     447                                $$ = new ExpressionNode( build_field_name_fraction_constants( build_constantZeroOne( *$1 ), $2 ) );
     448                        } else {
     449                                $$ = new ExpressionNode( build_field_name_fraction_constants( build_varref( $1 ), $2 ) );
     450                        }
     451                }
    446452        ;
    447453
  • src/Parser/parseutility.cc

    r148f729 r4cb935e  
    55// file "LICENCE" distributed with Cforall.
    66//
    7 // parseutility.cc -- 
     7// parseutility.cc --
    88//
    99// Author           : Rodolfo G. Esteves
     
    1212// Last Modified On : Sun Aug 14 23:45:03 2016
    1313// Update Count     : 3
    14 // 
     14//
    1515
    1616#include "parseutility.h"
     
    2626        UntypedExpr *comparison = new UntypedExpr( new NameExpr( "?!=?" ) );
    2727        comparison->get_args().push_back( orig );
    28         comparison->get_args().push_back( new NameExpr( "0" ) );
     28        comparison->get_args().push_back( new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) ) );
    2929        return new CastExpr( comparison, new BasicType( Type::Qualifiers(), BasicType::SignedInt ) );
    3030}
  • src/ResolvExpr/CommonType.cc

    r148f729 r4cb935e  
    243243                                        result->get_qualifiers() += zeroType->get_qualifiers();
    244244                                }
     245                        } else if ( widenSecond && dynamic_cast< OneType* >( type2 ) ) {
     246                                result = new BasicType( zeroType->get_qualifiers(), BasicType::SignedInt );
     247                                result->get_qualifiers() += type2->get_qualifiers();
    245248                        }
    246249                }
     
    254257                                        result->get_qualifiers() += oneType->get_qualifiers();
    255258                                }
     259                        } else if ( widenSecond && dynamic_cast< ZeroType* >( type2 ) ) {
     260                                result = new BasicType( oneType->get_qualifiers(), BasicType::SignedInt );
     261                                result->get_qualifiers() += type2->get_qualifiers();
    256262                        }
    257263                }
  • src/SymTab/Autogen.h

    r148f729 r4cb935e  
    8888                if ( forward ) {
    8989                        // generate: for ( int i = 0; i < 0; ++i )
    90                         begin = new NameExpr( "0" );
     90                        begin = new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) );
    9191                        end = array->get_dimension()->clone();
    9292                        cmp = new NameExpr( "?<?" );
     
    9696                        begin = new UntypedExpr( new NameExpr( "?-?" ) );
    9797                        ((UntypedExpr*)begin)->get_args().push_back( array->get_dimension()->clone() );
    98                         ((UntypedExpr*)begin)->get_args().push_back( new NameExpr( "1" ) );
    99                         end = new NameExpr( "0" );
     98                        ((UntypedExpr*)begin)->get_args().push_back( new ConstantExpr( Constant( new OneType( emptyQualifiers ), "1" ) ) );
     99                        end = new ConstantExpr( Constant( new ZeroType( emptyQualifiers ), "0" ) );
    100100                        cmp = new NameExpr( "?>=?" );
    101101                        update = new NameExpr( "--?" );
     
    175175} // namespace SymTab
    176176#endif // AUTOGEN_H
    177 
  • src/SynTree/Expression.cc

    r148f729 r4cb935e  
    422422}
    423423
    424 NameExpr::NameExpr( std::string _name, Expression *_aname ) : Expression( _aname ), name(_name) {}
     424NameExpr::NameExpr( std::string _name, Expression *_aname ) : Expression( _aname ), name(_name) {
     425        assertf(_name != "0", "Zero is not a valid name\n");
     426        assertf(_name != "1", "One is not a valid name\n");
     427}
    425428
    426429NameExpr::NameExpr( const NameExpr &other ) : Expression( other ), name( other.name ) {
  • src/SynTree/Type.h

    r148f729 r4cb935e  
    8181        ForallList forall;
    8282};
     83
     84extern Type::Qualifiers emptyQualifiers;                                // no qualifiers on constants
    8385
    8486class VoidType : public Type {
  • src/libcfa/prelude.cf

    r148f729 r4cb935e  
    2222// ------------------------------------------------------------
    2323
    24 const int 0, 1;
    25 
    26 forall ( dtype DT ) const DT * const    0;
    27 forall ( ftype FT ) FT * const          0;
     24//We have none
    2825
    2926// ------------------------------------------------------------
     
    249246// ------------------------------------------------------------
    250247
    251 signed int ?==?( _Bool, _Bool ),                                        ?!=?( _Bool, _Bool );
    252 signed int ?==?( signed int, signed int ),                              ?!=?( signed int, signed int );
    253 signed int ?==?( unsigned int, unsigned int ),                          ?!=?( unsigned int, unsigned int );
    254 signed int ?==?( signed long int, signed long int ),                    ?!=?( signed long int, signed long int );
    255 signed int ?==?( unsigned long int, unsigned long int ),                ?!=?( unsigned long int, unsigned long int );
     248signed int ?==?( _Bool, _Bool ),                                                        ?!=?( _Bool, _Bool );
     249signed int ?==?( signed int, signed int ),                                      ?!=?( signed int, signed int );
     250signed int ?==?( unsigned int, unsigned int ),                                  ?!=?( unsigned int, unsigned int );
     251signed int ?==?( signed long int, signed long int ),                            ?!=?( signed long int, signed long int );
     252signed int ?==?( unsigned long int, unsigned long int ),                        ?!=?( unsigned long int, unsigned long int );
    256253signed int ?==?( signed long long int, long long int  signed),          ?!=?( signed long long int, signed long long int );
    257254signed int ?==?( unsigned long long int, unsigned long long int ),      ?!=?( unsigned long long int, unsigned long long int );
    258 signed int ?==?( float, float ),                                        ?!=?( float, float );
    259 signed int ?==?( double, double ),                                      ?!=?( double, double );
    260 signed int ?==?( long double, long double ),                            ?!=?( long double, long double );
    261 signed int ?==?( float _Complex, float _Complex ),                      ?!=?( float _Complex, float _Complex );
    262 signed int ?==?( double _Complex, double _Complex ),                    ?!=?( double _Complex, double _Complex );
     255signed int ?==?( float, float ),                                                        ?!=?( float, float );
     256signed int ?==?( double, double ),                                                      ?!=?( double, double );
     257signed int ?==?( long double, long double ),                                    ?!=?( long double, long double );
     258signed int ?==?( float _Complex, float _Complex ),                              ?!=?( float _Complex, float _Complex );
     259signed int ?==?( double _Complex, double _Complex ),                            ?!=?( double _Complex, double _Complex );
    263260signed int ?==?( long double _Complex, long double _Complex ),          ?!=?( long double _Complex, long double _Complex );
     261signed int ?==?( zero_t, zero_t ),                                                      ?!=?( zero_t, zero_t );
     262signed int ?==?( one_t, one_t ),                                                        ?!=?( one_t, one_t );
    264263
    265264forall( dtype DT ) signed int ?==?(                DT *,                DT * );
     
    279278forall( dtype DT ) signed int ?!=?( const volatile void *, const volatile DT * );
    280279
    281 forall( dtype DT ) signed int ?==?( const volatile DT *, forall( dtype DT2 )const DT2 * );
    282 forall( dtype DT ) signed int ?==?( forall( dtype DT2 )const DT2 *, const volatile DT * );
    283 forall( ftype FT ) signed int ?==?( FT *, forall( ftype FT2 )FT2 * );
    284 forall( ftype FT ) signed int ?==?( forall( ftype FT2 )FT2 *, FT * );
    285 forall( dtype DT ) signed int ?!=?( const volatile DT *, forall( dtype DT2 )const DT2 * );
    286 forall( dtype DT ) signed int ?!=?( forall( dtype DT2 )const DT2 *, const volatile DT * );
    287 forall( ftype FT ) signed int ?!=?( FT *, forall( ftype FT2 )FT2 * );
    288 forall( ftype FT ) signed int ?!=?( forall( ftype FT2 )FT2 *, FT * );
     280// forall( dtype DT ) signed int ?==?( const volatile DT *, forall( dtype DT2 )const DT2 * );
     281// forall( dtype DT ) signed int ?==?( forall( dtype DT2 )const DT2 *, const volatile DT * );
     282// forall( ftype FT ) signed int ?==?( FT *, forall( ftype FT2 )FT2 * );
     283// forall( ftype FT ) signed int ?==?( forall( ftype FT2 )FT2 *, FT * );
     284// forall( dtype DT ) signed int ?!=?( const volatile DT *, forall( dtype DT2 )const DT2 * );
     285// forall( dtype DT ) signed int ?!=?( forall( dtype DT2 )const DT2 *, const volatile DT * );
     286// forall( ftype FT ) signed int ?!=?( FT *, forall( ftype FT2 )FT2 * );
     287// forall( ftype FT ) signed int ?!=?( forall( ftype FT2 )FT2 *, FT * );
    289288
    290289// ------------------------------------------------------------
     
    458457signed long long int    ?=?( signed long long int *, signed long long int ),    ?=?( volatile signed long long int *, signed long long int );
    459458unsigned long long int  ?=?( unsigned long long int *, unsigned long long int ), ?=?( volatile unsigned long long int *, unsigned long long int );
     459zero_t          ?=?( zero_t *, zero_t );
     460one_t                   ?=?( one_t *, one_t );
     461
    460462
    461463_Bool                   ?*=?( _Bool *, _Bool ),                                 ?*=?( volatile _Bool *, _Bool );
     
    654656void    ?{}( double _Complex * );
    655657void    ?{}( long double _Complex * );
     658void    ?{}( zero_t * );
     659void    ?{}( one_t * );
    656660
    657661// copy ctor
     
    674678void    ?{}( double _Complex *, double _Complex);
    675679void    ?{}( long double _Complex *, long double _Complex);
     680void    ?{}( zero_t *, zero_t );
     681void    ?{}( one_t *, one_t );
    676682
    677683// dtor
     
    694700void    ^?{}( double _Complex * );
    695701void    ^?{}( long double _Complex * );
     702void    ^?{}( zero_t * );
     703void    ^?{}( one_t * );
    696704
    697705// // default ctor
  • src/tests/.expect/32/declarationSpecifier.txt

    r148f729 r4cb935e  
    623623int main(int __argc__i_1, const char **__argv__PPCc_1){
    624624    int _retVal0 = { 0 };
    625     ((void)(_retVal0=0) /* ?{} */);
     625    ((void)(_retVal0=((int )0)) /* ?{} */);
    626626    return ((int )_retVal0);
    627627