Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.cc

    r1b29996 r8780e30  
    10261026static const yytype_uint16 yyrline[] =
    10271027{
    1028        0,   306,   306,   310,   317,   318,   319,   320,   321,   325,
    1029      326,   327,   331,   332,   336,   337,   341,   342,   346,   350,
    1030      351,   362,   364,   366,   367,   369,   374,   375,   381,   383,
    1031      385,   386,   387,   389,   390,   392,   394,   396,   405,   406,
    1032      412,   413,   417,   418,   422,   424,   426,   428,   430,   432,
    1033      434,   439,   441,   443,   447,   449,   453,   456,   458,   460,
    1034      465,   478,   480,   482,   484,   486,   488,   490,   492,   494,
    1035      496,   498,   505,   506,   512,   513,   514,   515,   519,   520,
    1036      527,   528,   530,   532,   537,   538,   540,   545,   546,   548,
    1037      553,   554,   556,   558,   560,   565,   566,   568,   573,   574,
    1038      579,   580,   585,   586,   591,   592,   597,   598,   603,   604,
    1039      607,   614,   619,   620,   628,   629,   633,   634,   635,   636,
    1040      637,   638,   639,   640,   641,   642,   643,   644,   654,   656,
    1041      661,   662,   667,   668,   674,   675,   681,   682,   683,   684,
    1042      685,   686,   687,   688,   689,   699,   706,   708,   718,   719,
    1043      724,   726,   732,   734,   738,   739,   744,   749,   752,   754,
    1044      756,   766,   768,   779,   780,   782,   786,   788,   792,   793,
    1045      798,   799,   803,   808,   809,   813,   815,   821,   822,   826,
    1046      828,   830,   832,   838,   839,   843,   845,   850,   852,   854,
    1047      859,   861,   866,   868,   872,   875,   879,   882,   886,   888,
    1048      890,   892,   897,   899,   901,   906,   908,   910,   912,   914,
    1049      919,   921,   923,   925,   930,   942,   943,   948,   950,   955,
    1050      959,   961,   963,   965,   967,   973,   974,   980,   981,   985,
    1051      986,   991,   993,   999,  1000,  1002,  1007,  1012,  1022,  1024,
    1052     1028,  1029,  1034,  1036,  1040,  1041,  1045,  1047,  1051,  1052,
    1053     1056,  1057,  1061,  1062,  1077,  1078,  1079,  1080,  1081,  1085,
    1054     1090,  1097,  1107,  1112,  1117,  1125,  1130,  1135,  1140,  1145,
    1055     1175,  1180,  1187,  1189,  1196,  1201,  1206,  1217,  1222,  1227,
    1056     1232,  1237,  1246,  1251,  1259,  1260,  1261,  1262,  1268,  1273,
    1057     1281,  1282,  1283,  1284,  1288,  1289,  1290,  1291,  1296,  1297,
    1058     1306,  1307,  1312,  1313,  1318,  1320,  1322,  1324,  1326,  1329,
    1059     1328,  1340,  1341,  1343,  1353,  1354,  1359,  1361,  1363,  1365,
    1060     1367,  1370,  1372,  1375,  1380,  1382,  1384,  1386,  1388,  1390,
    1061     1392,  1394,  1396,  1398,  1400,  1402,  1404,  1410,  1411,  1413,
    1062     1415,  1417,  1422,  1423,  1429,  1430,  1432,  1434,  1439,  1441,
    1063     1443,  1445,  1450,  1451,  1453,  1455,  1460,  1461,  1463,  1468,
    1064     1469,  1471,  1473,  1478,  1480,  1482,  1487,  1488,  1492,  1494,
    1065     1500,  1499,  1503,  1505,  1510,  1512,  1518,  1519,  1524,  1525,
    1066     1527,  1528,  1537,  1538,  1540,  1542,  1547,  1549,  1555,  1556,
    1067     1558,  1561,  1564,  1569,  1570,  1575,  1580,  1584,  1586,  1592,
    1068     1591,  1598,  1600,  1606,  1607,  1615,  1616,  1620,  1621,  1622,
    1069     1624,  1626,  1633,  1634,  1636,  1638,  1643,  1644,  1650,  1651,
    1070     1655,  1656,  1661,  1662,  1663,  1665,  1673,  1674,  1676,  1679,
    1071     1681,  1685,  1686,  1687,  1689,  1691,  1695,  1700,  1708,  1709,
    1072     1718,  1720,  1725,  1726,  1727,  1731,  1732,  1733,  1737,  1738,
    1073     1739,  1743,  1744,  1745,  1750,  1751,  1752,  1753,  1759,  1760,
    1074     1762,  1767,  1768,  1773,  1774,  1775,  1776,  1777,  1792,  1793,
    1075     1798,  1799,  1805,  1807,  1810,  1812,  1814,  1837,  1838,  1840,
    1076     1842,  1847,  1848,  1850,  1855,  1860,  1861,  1867,  1866,  1870,
    1077     1874,  1876,  1878,  1884,  1885,  1890,  1895,  1897,  1902,  1904,
    1078     1905,  1907,  1912,  1914,  1916,  1921,  1923,  1928,  1933,  1941,
    1079     1947,  1946,  1960,  1961,  1966,  1967,  1971,  1976,  1981,  1989,
    1080     1994,  2005,  2006,  2011,  2012,  2018,  2019,  2023,  2024,  2025,
    1081     2028,  2027,  2038,  2047,  2053,  2059,  2068,  2074,  2080,  2086,
    1082     2092,  2100,  2106,  2114,  2120,  2129,  2130,  2131,  2135,  2139,
    1083     2141,  2146,  2147,  2151,  2152,  2157,  2163,  2164,  2167,  2169,
    1084     2170,  2174,  2175,  2176,  2177,  2211,  2213,  2214,  2216,  2221,
    1085     2226,  2231,  2233,  2235,  2240,  2242,  2244,  2246,  2251,  2253,
    1086     2262,  2264,  2265,  2270,  2272,  2274,  2279,  2281,  2283,  2288,
    1087     2290,  2292,  2301,  2302,  2303,  2307,  2309,  2311,  2316,  2318,
    1088     2320,  2325,  2327,  2329,  2344,  2346,  2347,  2349,  2354,  2355,
    1089     2360,  2362,  2364,  2369,  2371,  2373,  2375,  2380,  2382,  2384,
    1090     2394,  2396,  2397,  2399,  2404,  2406,  2408,  2413,  2415,  2417,
    1091     2419,  2424,  2426,  2428,  2459,  2461,  2462,  2464,  2469,  2474,
    1092     2482,  2484,  2486,  2491,  2493,  2498,  2500,  2514,  2515,  2517,
    1093     2522,  2524,  2526,  2528,  2530,  2535,  2536,  2538,  2540,  2545,
    1094     2547,  2549,  2555,  2557,  2559,  2563,  2565,  2567,  2569,  2583,
    1095     2584,  2586,  2591,  2593,  2595,  2597,  2599,  2604,  2605,  2607,
    1096     2609,  2614,  2616,  2618,  2624,  2625,  2627,  2636,  2639,  2641,
    1097     2644,  2646,  2648,  2661,  2662,  2664,  2669,  2671,  2673,  2675,
    1098     2677,  2682,  2683,  2685,  2687,  2692,  2694,  2702,  2703,  2704,
    1099     2709,  2710,  2714,  2716,  2718,  2720,  2722,  2724,  2731,  2733,
    1100     2735,  2737,  2739,  2742,  2744,  2746,  2748,  2750,  2755,  2757,
    1101     2759,  2764,  2790,  2791,  2793,  2797,  2798,  2802,  2804,  2806,
    1102     2808,  2810,  2812,  2819,  2821,  2823,  2825,  2827,  2829,  2834,
    1103     2841,  2843,  2861,  2863,  2868,  2869
     1028       0,   305,   305,   309,   316,   317,   318,   319,   320,   324,
     1029     325,   326,   330,   331,   335,   336,   340,   341,   345,   349,
     1030     350,   361,   363,   365,   366,   368,   373,   374,   380,   382,
     1031     384,   386,   388,   390,   392,   394,   396,   398,   407,   408,
     1032     414,   415,   419,   420,   424,   425,   427,   429,   431,   433,
     1033     435,   440,   442,   444,   450,   451,   459,   462,   464,   466,
     1034     471,   484,   486,   488,   490,   492,   494,   496,   498,   500,
     1035     502,   504,   511,   512,   518,   519,   520,   521,   525,   526,
     1036     533,   534,   536,   538,   543,   544,   546,   551,   552,   554,
     1037     559,   560,   562,   564,   566,   571,   572,   574,   579,   580,
     1038     585,   586,   591,   592,   597,   598,   603,   604,   609,   610,
     1039     613,   620,   625,   626,   634,   635,   639,   640,   641,   642,
     1040     643,   644,   645,   646,   647,   648,   649,   650,   660,   662,
     1041     667,   668,   673,   674,   680,   681,   687,   688,   689,   690,
     1042     691,   692,   693,   694,   695,   705,   712,   714,   724,   725,
     1043     730,   732,   738,   740,   744,   745,   750,   755,   758,   760,
     1044     762,   772,   774,   785,   786,   788,   792,   794,   798,   799,
     1045     804,   805,   809,   814,   815,   819,   821,   827,   828,   832,
     1046     834,   836,   838,   844,   845,   849,   851,   856,   858,   860,
     1047     865,   867,   872,   874,   878,   881,   885,   888,   892,   894,
     1048     896,   898,   903,   905,   907,   912,   914,   916,   918,   920,
     1049     925,   927,   929,   931,   936,   948,   949,   954,   956,   961,
     1050     965,   967,   969,   971,   973,   979,   980,   986,   987,   991,
     1051     992,   997,   999,  1005,  1006,  1008,  1013,  1018,  1028,  1030,
     1052    1034,  1035,  1040,  1042,  1046,  1047,  1051,  1053,  1057,  1058,
     1053    1062,  1063,  1067,  1068,  1083,  1084,  1085,  1086,  1087,  1091,
     1054    1096,  1103,  1113,  1118,  1123,  1131,  1136,  1141,  1146,  1151,
     1055    1181,  1186,  1193,  1195,  1202,  1207,  1212,  1223,  1228,  1233,
     1056    1238,  1243,  1252,  1257,  1265,  1266,  1267,  1268,  1274,  1279,
     1057    1287,  1288,  1289,  1290,  1294,  1295,  1296,  1297,  1302,  1303,
     1058    1312,  1313,  1318,  1319,  1324,  1326,  1328,  1330,  1332,  1335,
     1059    1334,  1346,  1347,  1349,  1359,  1360,  1365,  1367,  1369,  1371,
     1060    1373,  1376,  1378,  1381,  1386,  1388,  1390,  1392,  1394,  1396,
     1061    1398,  1400,  1402,  1404,  1406,  1408,  1410,  1416,  1417,  1419,
     1062    1421,  1423,  1428,  1429,  1435,  1436,  1438,  1440,  1445,  1447,
     1063    1449,  1451,  1456,  1457,  1459,  1461,  1466,  1467,  1469,  1474,
     1064    1475,  1477,  1479,  1484,  1486,  1488,  1493,  1494,  1498,  1500,
     1065    1506,  1505,  1509,  1511,  1516,  1518,  1524,  1525,  1530,  1531,
     1066    1533,  1534,  1543,  1544,  1546,  1548,  1553,  1555,  1561,  1562,
     1067    1564,  1567,  1570,  1575,  1576,  1581,  1586,  1590,  1592,  1598,
     1068    1597,  1604,  1606,  1612,  1613,  1621,  1622,  1626,  1627,  1628,
     1069    1630,  1632,  1639,  1640,  1642,  1644,  1649,  1650,  1656,  1657,
     1070    1661,  1662,  1667,  1668,  1669,  1671,  1679,  1680,  1682,  1685,
     1071    1687,  1691,  1692,  1693,  1695,  1697,  1701,  1706,  1714,  1715,
     1072    1724,  1726,  1731,  1732,  1733,  1737,  1738,  1739,  1743,  1744,
     1073    1745,  1749,  1750,  1751,  1756,  1757,  1758,  1759,  1765,  1766,
     1074    1768,  1773,  1774,  1779,  1780,  1781,  1782,  1783,  1798,  1799,
     1075    1804,  1805,  1811,  1813,  1816,  1818,  1820,  1843,  1844,  1846,
     1076    1848,  1853,  1854,  1856,  1861,  1866,  1867,  1873,  1872,  1876,
     1077    1880,  1882,  1884,  1890,  1891,  1896,  1901,  1903,  1908,  1910,
     1078    1911,  1913,  1918,  1920,  1922,  1927,  1929,  1934,  1939,  1947,
     1079    1953,  1952,  1966,  1967,  1972,  1973,  1977,  1982,  1987,  1995,
     1080    2000,  2011,  2012,  2017,  2018,  2024,  2025,  2029,  2030,  2031,
     1081    2034,  2033,  2044,  2053,  2059,  2065,  2074,  2080,  2086,  2092,
     1082    2098,  2106,  2112,  2120,  2126,  2135,  2136,  2137,  2141,  2145,
     1083    2147,  2152,  2153,  2157,  2158,  2163,  2169,  2170,  2173,  2175,
     1084    2176,  2180,  2181,  2182,  2183,  2217,  2219,  2220,  2222,  2227,
     1085    2232,  2237,  2239,  2241,  2246,  2248,  2250,  2252,  2257,  2259,
     1086    2268,  2270,  2271,  2276,  2278,  2280,  2285,  2287,  2289,  2294,
     1087    2296,  2298,  2307,  2308,  2309,  2313,  2315,  2317,  2322,  2324,
     1088    2326,  2331,  2333,  2335,  2350,  2352,  2353,  2355,  2360,  2361,
     1089    2366,  2368,  2370,  2375,  2377,  2379,  2381,  2386,  2388,  2390,
     1090    2400,  2402,  2403,  2405,  2410,  2412,  2414,  2419,  2421,  2423,
     1091    2425,  2430,  2432,  2434,  2465,  2467,  2468,  2470,  2475,  2480,
     1092    2488,  2490,  2492,  2497,  2499,  2504,  2506,  2520,  2521,  2523,
     1093    2528,  2530,  2532,  2534,  2536,  2541,  2542,  2544,  2546,  2551,
     1094    2553,  2555,  2561,  2563,  2565,  2569,  2571,  2573,  2575,  2589,
     1095    2590,  2592,  2597,  2599,  2601,  2603,  2605,  2610,  2611,  2613,
     1096    2615,  2620,  2622,  2624,  2630,  2631,  2633,  2642,  2645,  2647,
     1097    2650,  2652,  2654,  2667,  2668,  2670,  2675,  2677,  2679,  2681,
     1098    2683,  2688,  2689,  2691,  2693,  2698,  2700,  2708,  2709,  2710,
     1099    2715,  2716,  2720,  2722,  2724,  2726,  2728,  2730,  2737,  2739,
     1100    2741,  2743,  2745,  2748,  2750,  2752,  2754,  2756,  2761,  2763,
     1101    2765,  2770,  2796,  2797,  2799,  2803,  2804,  2808,  2810,  2812,
     1102    2814,  2816,  2818,  2825,  2827,  2829,  2831,  2833,  2835,  2840,
     1103    2847,  2849,  2867,  2869,  2874,  2875
    11041104};
    11051105#endif
     
    48514851
    48524852/* Line 1806 of yacc.c  */
    4853 #line 306 "parser.yy"
     4853#line 305 "parser.yy"
    48544854    { typedefTable.enterScope(); }
    48554855    break;
     
    48584858
    48594859/* Line 1806 of yacc.c  */
    4860 #line 310 "parser.yy"
     4860#line 309 "parser.yy"
    48614861    { typedefTable.leaveScope(); }
    48624862    break;
     
    48654865
    48664866/* Line 1806 of yacc.c  */
     4867#line 316 "parser.yy"
     4868    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
     4869    break;
     4870
     4871  case 5:
     4872
     4873/* Line 1806 of yacc.c  */
    48674874#line 317 "parser.yy"
    4868     { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    4869     break;
    4870 
    4871   case 5:
     4875    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
     4876    break;
     4877
     4878  case 6:
    48724879
    48734880/* Line 1806 of yacc.c  */
     
    48764883    break;
    48774884
    4878   case 6:
     4885  case 7:
    48794886
    48804887/* Line 1806 of yacc.c  */
     
    48834890    break;
    48844891
    4885   case 7:
     4892  case 8:
    48864893
    48874894/* Line 1806 of yacc.c  */
    48884895#line 320 "parser.yy"
    4889     { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    4890     break;
    4891 
    4892   case 8:
    4893 
    4894 /* Line 1806 of yacc.c  */
    4895 #line 321 "parser.yy"
    48964896    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    48974897    break;
     
    49004900
    49014901/* Line 1806 of yacc.c  */
    4902 #line 346 "parser.yy"
     4902#line 345 "parser.yy"
    49034903    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
    49044904    break;
     
    49074907
    49084908/* Line 1806 of yacc.c  */
    4909 #line 350 "parser.yy"
     4909#line 349 "parser.yy"
    49104910    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
    49114911    break;
     
    49144914
    49154915/* Line 1806 of yacc.c  */
    4916 #line 352 "parser.yy"
     4916#line 351 "parser.yy"
    49174917    {
    49184918                        appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
     
    49254925
    49264926/* Line 1806 of yacc.c  */
    4927 #line 363 "parser.yy"
     4927#line 362 "parser.yy"
    49284928    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    49294929    break;
     
    49324932
    49334933/* Line 1806 of yacc.c  */
    4934 #line 365 "parser.yy"
     4934#line 364 "parser.yy"
    49354935    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    49364936    break;
     
    49394939
    49404940/* Line 1806 of yacc.c  */
    4941 #line 368 "parser.yy"
     4941#line 367 "parser.yy"
    49424942    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    49434943    break;
     
    49464946
    49474947/* Line 1806 of yacc.c  */
    4948 #line 370 "parser.yy"
     4948#line 369 "parser.yy"
    49494949    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    49504950    break;
     
    49534953
    49544954/* Line 1806 of yacc.c  */
    4955 #line 380 "parser.yy"
     4955#line 379 "parser.yy"
    49564956    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    49574957    break;
     
    49604960
    49614961/* Line 1806 of yacc.c  */
    4962 #line 382 "parser.yy"
     4962#line 381 "parser.yy"
    49634963    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    49644964    break;
     
    49674967
    49684968/* Line 1806 of yacc.c  */
    4969 #line 384 "parser.yy"
     4969#line 383 "parser.yy"
    49704970    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    49714971    break;
    49724972
     4973  case 30:
     4974
     4975/* Line 1806 of yacc.c  */
     4976#line 385 "parser.yy"
     4977    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     4978    break;
     4979
     4980  case 31:
     4981
     4982/* Line 1806 of yacc.c  */
     4983#line 387 "parser.yy"
     4984    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en), build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) ) ) ); }
     4985    break;
     4986
    49734987  case 32:
    49744988
    49754989/* Line 1806 of yacc.c  */
    4976 #line 388 "parser.yy"
     4990#line 389 "parser.yy"
    49774991    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    49784992    break;
    49794993
     4994  case 33:
     4995
     4996/* Line 1806 of yacc.c  */
     4997#line 391 "parser.yy"
     4998    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
     4999    break;
     5000
    49805001  case 34:
    49815002
    49825003/* Line 1806 of yacc.c  */
    4983 #line 391 "parser.yy"
     5004#line 393 "parser.yy"
    49845005    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    49855006    break;
     
    49885009
    49895010/* Line 1806 of yacc.c  */
    4990 #line 393 "parser.yy"
     5011#line 395 "parser.yy"
    49915012    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    49925013    break;
     
    49955016
    49965017/* Line 1806 of yacc.c  */
    4997 #line 395 "parser.yy"
     5018#line 397 "parser.yy"
    49985019    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    49995020    break;
     
    50025023
    50035024/* Line 1806 of yacc.c  */
    5004 #line 397 "parser.yy"
     5025#line 399 "parser.yy"
    50055026    {
    50065027                        Token fn;
     
    50135034
    50145035/* Line 1806 of yacc.c  */
    5015 #line 407 "parser.yy"
     5036#line 409 "parser.yy"
    50165037    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    50175038    break;
     
    50205041
    50215042/* Line 1806 of yacc.c  */
    5022 #line 412 "parser.yy"
     5043#line 414 "parser.yy"
    50235044    { (yyval.en) = 0; }
    50245045    break;
     
    50275048
    50285049/* Line 1806 of yacc.c  */
    5029 #line 418 "parser.yy"
     5050#line 420 "parser.yy"
    50305051    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    50315052    break;
    50325053
    5033   case 44:
    5034 
    5035 /* Line 1806 of yacc.c  */
    5036 #line 423 "parser.yy"
    5037     { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    5038     break;
    5039 
    50405054  case 45:
    50415055
    50425056/* Line 1806 of yacc.c  */
    5043 #line 425 "parser.yy"
    5044     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(2) - (2)].en), build_varref( (yyvsp[(1) - (2)].tok) ) ) ); }
     5057#line 426 "parser.yy"
     5058    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (2)].tok) ) ), maybeMoveBuild<Expression>( (yyvsp[(2) - (2)].en) ) ) ); }
    50455059    break;
    50465060
     
    50485062
    50495063/* Line 1806 of yacc.c  */
    5050 #line 427 "parser.yy"
    5051     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(4) - (6)].en), build_varref( (yyvsp[(1) - (6)].tok) ) ) ); }
     5064#line 428 "parser.yy"
     5065    { (yyval.en) = new ExpressionNode( build_fieldSel( new ExpressionNode( build_field_name_REALDECIMALconstant( *(yyvsp[(1) - (6)].tok) ) ), build_tuple( (yyvsp[(4) - (6)].en) ) ) ); }
    50525066    break;
    50535067
     
    50555069
    50565070/* Line 1806 of yacc.c  */
    5057 #line 429 "parser.yy"
    5058     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     5071#line 430 "parser.yy"
     5072    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    50595073    break;
    50605074
     
    50625076
    50635077/* Line 1806 of yacc.c  */
    5064 #line 431 "parser.yy"
    5065     { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     5078#line 432 "parser.yy"
     5079    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    50665080    break;
    50675081
     
    50695083
    50705084/* Line 1806 of yacc.c  */
    5071 #line 433 "parser.yy"
    5072     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
     5085#line 434 "parser.yy"
     5086    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), maybeMoveBuild<Expression>( (yyvsp[(3) - (3)].en) ) ) ); }
    50735087    break;
    50745088
     
    50765090
    50775091/* Line 1806 of yacc.c  */
    5078 #line 435 "parser.yy"
    5079     { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
     5092#line 436 "parser.yy"
     5093    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (7)].en), build_tuple( (yyvsp[(5) - (7)].en) ) ) ); }
    50805094    break;
    50815095
     
    50835097
    50845098/* Line 1806 of yacc.c  */
    5085 #line 440 "parser.yy"
    5086     { (yyval.tok) = (yyvsp[(1) - (2)].tok); }
     5099#line 441 "parser.yy"
     5100    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_constantInteger( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    50875101    break;
    50885102
     
    50905104
    50915105/* Line 1806 of yacc.c  */
    5092 #line 442 "parser.yy"
    5093     { (yyval.tok) = (yyvsp[(1) - (2)].tok); }
     5106#line 443 "parser.yy"
     5107    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_field_name_FLOATINGconstant( *(yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
    50945108    break;
    50955109
     
    50975111
    50985112/* Line 1806 of yacc.c  */
    5099 #line 444 "parser.yy"
    5100     { (yyval.tok) = (yyvsp[(1) - (2)].tok); }
     5113#line 445 "parser.yy"
     5114    { (yyval.en) = new ExpressionNode( build_field_name_fraction_constants( build_varref( (yyvsp[(1) - (2)].tok) ), (yyvsp[(2) - (2)].en) ) ); }
     5115    break;
     5116
     5117  case 54:
     5118
     5119/* Line 1806 of yacc.c  */
     5120#line 450 "parser.yy"
     5121    { (yyval.en) = nullptr; }
     5122    break;
     5123
     5124  case 55:
     5125
     5126/* Line 1806 of yacc.c  */
     5127#line 452 "parser.yy"
     5128    {
     5129                        Expression * constant = build_field_name_REALFRACTIONconstant( *(yyvsp[(2) - (2)].tok) );
     5130                        (yyval.en) = (yyvsp[(1) - (2)].en) != nullptr ? new ExpressionNode( build_fieldSel( (yyvsp[(1) - (2)].en),  constant ) ) : new ExpressionNode( constant );
     5131                }
    51015132    break;
    51025133
     
    51045135
    51055136/* Line 1806 of yacc.c  */
    5106 #line 457 "parser.yy"
     5137#line 463 "parser.yy"
    51075138    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    51085139    break;
     
    51115142
    51125143/* Line 1806 of yacc.c  */
    5113 #line 459 "parser.yy"
     5144#line 465 "parser.yy"
    51145145    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    51155146    break;
     
    51185149
    51195150/* Line 1806 of yacc.c  */
    5120 #line 461 "parser.yy"
     5151#line 467 "parser.yy"
    51215152    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    51225153    break;
     
    51255156
    51265157/* Line 1806 of yacc.c  */
    5127 #line 466 "parser.yy"
     5158#line 472 "parser.yy"
    51285159    {
    51295160                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    51435174
    51445175/* Line 1806 of yacc.c  */
    5145 #line 479 "parser.yy"
     5176#line 485 "parser.yy"
    51465177    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    51475178    break;
     
    51505181
    51515182/* Line 1806 of yacc.c  */
    5152 #line 481 "parser.yy"
     5183#line 487 "parser.yy"
    51535184    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    51545185    break;
     
    51575188
    51585189/* Line 1806 of yacc.c  */
    5159 #line 483 "parser.yy"
     5190#line 489 "parser.yy"
    51605191    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    51615192    break;
     
    51645195
    51655196/* Line 1806 of yacc.c  */
    5166 #line 485 "parser.yy"
     5197#line 491 "parser.yy"
    51675198    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    51685199    break;
     
    51715202
    51725203/* Line 1806 of yacc.c  */
    5173 #line 487 "parser.yy"
     5204#line 493 "parser.yy"
    51745205    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    51755206    break;
     
    51785209
    51795210/* Line 1806 of yacc.c  */
    5180 #line 489 "parser.yy"
     5211#line 495 "parser.yy"
    51815212    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    51825213    break;
     
    51855216
    51865217/* Line 1806 of yacc.c  */
    5187 #line 491 "parser.yy"
     5218#line 497 "parser.yy"
    51885219    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    51895220    break;
     
    51925223
    51935224/* Line 1806 of yacc.c  */
    5194 #line 493 "parser.yy"
     5225#line 499 "parser.yy"
    51955226    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    51965227    break;
     
    51995230
    52005231/* Line 1806 of yacc.c  */
    5201 #line 495 "parser.yy"
     5232#line 501 "parser.yy"
    52025233    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    52035234    break;
     
    52065237
    52075238/* Line 1806 of yacc.c  */
    5208 #line 497 "parser.yy"
     5239#line 503 "parser.yy"
    52095240    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    52105241    break;
     
    52135244
    52145245/* Line 1806 of yacc.c  */
    5215 #line 499 "parser.yy"
     5246#line 505 "parser.yy"
    52165247    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    52175248    break;
     
    52205251
    52215252/* Line 1806 of yacc.c  */
    5222 #line 505 "parser.yy"
     5253#line 511 "parser.yy"
    52235254    { (yyval.op) = OperKinds::PointTo; }
    52245255    break;
     
    52275258
    52285259/* Line 1806 of yacc.c  */
    5229 #line 506 "parser.yy"
     5260#line 512 "parser.yy"
    52305261    { (yyval.op) = OperKinds::AddressOf; }
    52315262    break;
     
    52345265
    52355266/* Line 1806 of yacc.c  */
    5236 #line 512 "parser.yy"
     5267#line 518 "parser.yy"
    52375268    { (yyval.op) = OperKinds::UnPlus; }
    52385269    break;
     
    52415272
    52425273/* Line 1806 of yacc.c  */
    5243 #line 513 "parser.yy"
     5274#line 519 "parser.yy"
    52445275    { (yyval.op) = OperKinds::UnMinus; }
    52455276    break;
     
    52485279
    52495280/* Line 1806 of yacc.c  */
    5250 #line 514 "parser.yy"
     5281#line 520 "parser.yy"
    52515282    { (yyval.op) = OperKinds::Neg; }
    52525283    break;
     
    52555286
    52565287/* Line 1806 of yacc.c  */
    5257 #line 515 "parser.yy"
     5288#line 521 "parser.yy"
    52585289    { (yyval.op) = OperKinds::BitNeg; }
    52595290    break;
     
    52625293
    52635294/* Line 1806 of yacc.c  */
    5264 #line 521 "parser.yy"
     5295#line 527 "parser.yy"
    52655296    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    52665297    break;
     
    52695300
    52705301/* Line 1806 of yacc.c  */
    5271 #line 529 "parser.yy"
     5302#line 535 "parser.yy"
    52725303    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    52735304    break;
     
    52765307
    52775308/* Line 1806 of yacc.c  */
    5278 #line 531 "parser.yy"
     5309#line 537 "parser.yy"
    52795310    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    52805311    break;
     
    52835314
    52845315/* Line 1806 of yacc.c  */
    5285 #line 533 "parser.yy"
     5316#line 539 "parser.yy"
    52865317    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    52875318    break;
     
    52905321
    52915322/* Line 1806 of yacc.c  */
    5292 #line 539 "parser.yy"
     5323#line 545 "parser.yy"
    52935324    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    52945325    break;
     
    52975328
    52985329/* Line 1806 of yacc.c  */
    5299 #line 541 "parser.yy"
     5330#line 547 "parser.yy"
    53005331    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53015332    break;
     
    53045335
    53055336/* Line 1806 of yacc.c  */
    5306 #line 547 "parser.yy"
     5337#line 553 "parser.yy"
    53075338    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53085339    break;
     
    53115342
    53125343/* Line 1806 of yacc.c  */
    5313 #line 549 "parser.yy"
     5344#line 555 "parser.yy"
    53145345    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53155346    break;
     
    53185349
    53195350/* Line 1806 of yacc.c  */
    5320 #line 555 "parser.yy"
     5351#line 561 "parser.yy"
    53215352    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53225353    break;
     
    53255356
    53265357/* Line 1806 of yacc.c  */
    5327 #line 557 "parser.yy"
     5358#line 563 "parser.yy"
    53285359    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53295360    break;
     
    53325363
    53335364/* Line 1806 of yacc.c  */
    5334 #line 559 "parser.yy"
     5365#line 565 "parser.yy"
    53355366    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53365367    break;
     
    53395370
    53405371/* Line 1806 of yacc.c  */
    5341 #line 561 "parser.yy"
     5372#line 567 "parser.yy"
    53425373    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53435374    break;
     
    53465377
    53475378/* Line 1806 of yacc.c  */
    5348 #line 567 "parser.yy"
     5379#line 573 "parser.yy"
    53495380    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53505381    break;
     
    53535384
    53545385/* Line 1806 of yacc.c  */
    5355 #line 569 "parser.yy"
     5386#line 575 "parser.yy"
    53565387    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53575388    break;
     
    53605391
    53615392/* Line 1806 of yacc.c  */
    5362 #line 575 "parser.yy"
     5393#line 581 "parser.yy"
    53635394    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53645395    break;
     
    53675398
    53685399/* Line 1806 of yacc.c  */
    5369 #line 581 "parser.yy"
     5400#line 587 "parser.yy"
    53705401    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53715402    break;
     
    53745405
    53755406/* Line 1806 of yacc.c  */
    5376 #line 587 "parser.yy"
     5407#line 593 "parser.yy"
    53775408    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53785409    break;
     
    53815412
    53825413/* Line 1806 of yacc.c  */
    5383 #line 593 "parser.yy"
     5414#line 599 "parser.yy"
    53845415    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    53855416    break;
     
    53885419
    53895420/* Line 1806 of yacc.c  */
    5390 #line 599 "parser.yy"
     5421#line 605 "parser.yy"
    53915422    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    53925423    break;
     
    53955426
    53965427/* Line 1806 of yacc.c  */
    5397 #line 605 "parser.yy"
     5428#line 611 "parser.yy"
    53985429    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    53995430    break;
     
    54025433
    54035434/* Line 1806 of yacc.c  */
    5404 #line 608 "parser.yy"
     5435#line 614 "parser.yy"
    54055436    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    54065437    break;
     
    54095440
    54105441/* Line 1806 of yacc.c  */
    5411 #line 621 "parser.yy"
     5442#line 627 "parser.yy"
    54125443    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54135444    break;
     
    54165447
    54175448/* Line 1806 of yacc.c  */
    5418 #line 628 "parser.yy"
     5449#line 634 "parser.yy"
    54195450    { (yyval.en) = nullptr; }
    54205451    break;
     
    54235454
    54245455/* Line 1806 of yacc.c  */
    5425 #line 633 "parser.yy"
     5456#line 639 "parser.yy"
    54265457    { (yyval.op) = OperKinds::Assign; }
    54275458    break;
     
    54305461
    54315462/* Line 1806 of yacc.c  */
    5432 #line 634 "parser.yy"
     5463#line 640 "parser.yy"
    54335464    { (yyval.op) = OperKinds::AtAssn; }
    54345465    break;
     
    54375468
    54385469/* Line 1806 of yacc.c  */
    5439 #line 635 "parser.yy"
     5470#line 641 "parser.yy"
    54405471    { (yyval.op) = OperKinds::MulAssn; }
    54415472    break;
     
    54445475
    54455476/* Line 1806 of yacc.c  */
    5446 #line 636 "parser.yy"
     5477#line 642 "parser.yy"
    54475478    { (yyval.op) = OperKinds::DivAssn; }
    54485479    break;
     
    54515482
    54525483/* Line 1806 of yacc.c  */
    5453 #line 637 "parser.yy"
     5484#line 643 "parser.yy"
    54545485    { (yyval.op) = OperKinds::ModAssn; }
    54555486    break;
     
    54585489
    54595490/* Line 1806 of yacc.c  */
    5460 #line 638 "parser.yy"
     5491#line 644 "parser.yy"
    54615492    { (yyval.op) = OperKinds::PlusAssn; }
    54625493    break;
     
    54655496
    54665497/* Line 1806 of yacc.c  */
    5467 #line 639 "parser.yy"
     5498#line 645 "parser.yy"
    54685499    { (yyval.op) = OperKinds::MinusAssn; }
    54695500    break;
     
    54725503
    54735504/* Line 1806 of yacc.c  */
    5474 #line 640 "parser.yy"
     5505#line 646 "parser.yy"
    54755506    { (yyval.op) = OperKinds::LSAssn; }
    54765507    break;
     
    54795510
    54805511/* Line 1806 of yacc.c  */
    5481 #line 641 "parser.yy"
     5512#line 647 "parser.yy"
    54825513    { (yyval.op) = OperKinds::RSAssn; }
    54835514    break;
     
    54865517
    54875518/* Line 1806 of yacc.c  */
    5488 #line 642 "parser.yy"
     5519#line 648 "parser.yy"
    54895520    { (yyval.op) = OperKinds::AndAssn; }
    54905521    break;
     
    54935524
    54945525/* Line 1806 of yacc.c  */
    5495 #line 643 "parser.yy"
     5526#line 649 "parser.yy"
    54965527    { (yyval.op) = OperKinds::ERAssn; }
    54975528    break;
     
    55005531
    55015532/* Line 1806 of yacc.c  */
    5502 #line 644 "parser.yy"
     5533#line 650 "parser.yy"
    55035534    { (yyval.op) = OperKinds::OrAssn; }
    55045535    break;
     
    55075538
    55085539/* Line 1806 of yacc.c  */
    5509 #line 655 "parser.yy"
     5540#line 661 "parser.yy"
    55105541    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    55115542    break;
     
    55145545
    55155546/* Line 1806 of yacc.c  */
    5516 #line 657 "parser.yy"
     5547#line 663 "parser.yy"
    55175548    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    55185549    break;
     
    55215552
    55225553/* Line 1806 of yacc.c  */
    5523 #line 663 "parser.yy"
     5554#line 669 "parser.yy"
    55245555    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    55255556    break;
     
    55285559
    55295560/* Line 1806 of yacc.c  */
    5530 #line 669 "parser.yy"
     5561#line 675 "parser.yy"
    55315562    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    55325563    break;
     
    55355566
    55365567/* Line 1806 of yacc.c  */
    5537 #line 674 "parser.yy"
     5568#line 680 "parser.yy"
    55385569    { (yyval.en) = 0; }
    55395570    break;
     
    55425573
    55435574/* Line 1806 of yacc.c  */
    5544 #line 683 "parser.yy"
     5575#line 689 "parser.yy"
    55455576    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    55465577    break;
     
    55495580
    55505581/* Line 1806 of yacc.c  */
    5551 #line 690 "parser.yy"
     5582#line 696 "parser.yy"
    55525583    {
    55535584                        Token fn;
     
    55605591
    55615592/* Line 1806 of yacc.c  */
    5562 #line 700 "parser.yy"
     5593#line 706 "parser.yy"
    55635594    {
    55645595                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    55695600
    55705601/* Line 1806 of yacc.c  */
    5571 #line 707 "parser.yy"
     5602#line 713 "parser.yy"
    55725603    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    55735604    break;
     
    55765607
    55775608/* Line 1806 of yacc.c  */
    5578 #line 714 "parser.yy"
     5609#line 720 "parser.yy"
    55795610    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    55805611    break;
     
    55835614
    55845615/* Line 1806 of yacc.c  */
    5585 #line 720 "parser.yy"
     5616#line 726 "parser.yy"
    55865617    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    55875618    break;
     
    55905621
    55915622/* Line 1806 of yacc.c  */
    5592 #line 725 "parser.yy"
     5623#line 731 "parser.yy"
    55935624    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    55945625    break;
     
    55975628
    55985629/* Line 1806 of yacc.c  */
    5599 #line 727 "parser.yy"
     5630#line 733 "parser.yy"
    56005631    {   // mark all fields in list
    56015632                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    56085639
    56095640/* Line 1806 of yacc.c  */
    5610 #line 733 "parser.yy"
     5641#line 739 "parser.yy"
    56115642    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    56125643    break;
     
    56155646
    56165647/* Line 1806 of yacc.c  */
    5617 #line 740 "parser.yy"
     5648#line 746 "parser.yy"
    56185649    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    56195650    break;
     
    56225653
    56235654/* Line 1806 of yacc.c  */
    5624 #line 745 "parser.yy"
     5655#line 751 "parser.yy"
    56255656    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    56265657    break;
     
    56295660
    56305661/* Line 1806 of yacc.c  */
    5631 #line 751 "parser.yy"
     5662#line 757 "parser.yy"
    56325663    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    56335664    break;
     
    56365667
    56375668/* Line 1806 of yacc.c  */
    5638 #line 753 "parser.yy"
     5669#line 759 "parser.yy"
    56395670    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    56405671    break;
     
    56435674
    56445675/* Line 1806 of yacc.c  */
    5645 #line 755 "parser.yy"
     5676#line 761 "parser.yy"
    56465677    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    56475678    break;
     
    56505681
    56515682/* Line 1806 of yacc.c  */
    5652 #line 757 "parser.yy"
     5683#line 763 "parser.yy"
    56535684    {
    56545685                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    56655696
    56665697/* Line 1806 of yacc.c  */
    5667 #line 767 "parser.yy"
     5698#line 773 "parser.yy"
    56685699    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    56695700    break;
     
    56725703
    56735704/* Line 1806 of yacc.c  */
    5674 #line 769 "parser.yy"
     5705#line 775 "parser.yy"
    56755706    {
    56765707                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    56825713
    56835714/* Line 1806 of yacc.c  */
    5684 #line 779 "parser.yy"
     5715#line 785 "parser.yy"
    56855716    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    56865717    break;
     
    56895720
    56905721/* Line 1806 of yacc.c  */
    5691 #line 781 "parser.yy"
     5722#line 787 "parser.yy"
    56925723    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56935724    break;
     
    56965727
    56975728/* Line 1806 of yacc.c  */
    5698 #line 786 "parser.yy"
     5729#line 792 "parser.yy"
    56995730    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    57005731    break;
     
    57035734
    57045735/* Line 1806 of yacc.c  */
    5705 #line 788 "parser.yy"
     5736#line 794 "parser.yy"
    57065737    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    57075738    break;
     
    57105741
    57115742/* Line 1806 of yacc.c  */
    5712 #line 792 "parser.yy"
     5743#line 798 "parser.yy"
    57135744    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    57145745    break;
     
    57175748
    57185749/* Line 1806 of yacc.c  */
    5719 #line 793 "parser.yy"
     5750#line 799 "parser.yy"
    57205751    { (yyval.sn) = new StatementNode( build_default() ); }
    57215752    break;
     
    57245755
    57255756/* Line 1806 of yacc.c  */
    5726 #line 799 "parser.yy"
     5757#line 805 "parser.yy"
    57275758    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    57285759    break;
     
    57315762
    57325763/* Line 1806 of yacc.c  */
    5733 #line 803 "parser.yy"
     5764#line 809 "parser.yy"
    57345765    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    57355766    break;
     
    57385769
    57395770/* Line 1806 of yacc.c  */
    5740 #line 808 "parser.yy"
     5771#line 814 "parser.yy"
    57415772    { (yyval.sn) = 0; }
    57425773    break;
     
    57455776
    57465777/* Line 1806 of yacc.c  */
    5747 #line 814 "parser.yy"
     5778#line 820 "parser.yy"
    57485779    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    57495780    break;
     
    57525783
    57535784/* Line 1806 of yacc.c  */
    5754 #line 816 "parser.yy"
     5785#line 822 "parser.yy"
    57555786    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
    57565787    break;
     
    57595790
    57605791/* Line 1806 of yacc.c  */
    5761 #line 821 "parser.yy"
     5792#line 827 "parser.yy"
    57625793    { (yyval.sn) = 0; }
    57635794    break;
     
    57665797
    57675798/* Line 1806 of yacc.c  */
    5768 #line 827 "parser.yy"
     5799#line 833 "parser.yy"
    57695800    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    57705801    break;
     
    57735804
    57745805/* Line 1806 of yacc.c  */
    5775 #line 829 "parser.yy"
     5806#line 835 "parser.yy"
    57765807    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    57775808    break;
     
    57805811
    57815812/* Line 1806 of yacc.c  */
    5782 #line 831 "parser.yy"
     5813#line 837 "parser.yy"
    57835814    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    57845815    break;
     
    57875818
    57885819/* Line 1806 of yacc.c  */
    5789 #line 833 "parser.yy"
     5820#line 839 "parser.yy"
    57905821    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
    57915822    break;
     
    57945825
    57955826/* Line 1806 of yacc.c  */
    5796 #line 838 "parser.yy"
     5827#line 844 "parser.yy"
    57975828    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    57985829    break;
     
    58015832
    58025833/* Line 1806 of yacc.c  */
    5803 #line 844 "parser.yy"
     5834#line 850 "parser.yy"
    58045835    { (yyval.sn) = 0; }
    58055836    break;
     
    58085839
    58095840/* Line 1806 of yacc.c  */
    5810 #line 846 "parser.yy"
     5841#line 852 "parser.yy"
    58115842    { (yyval.sn) = 0; }
    58125843    break;
     
    58155846
    58165847/* Line 1806 of yacc.c  */
    5817 #line 851 "parser.yy"
     5848#line 857 "parser.yy"
    58185849    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    58195850    break;
     
    58225853
    58235854/* Line 1806 of yacc.c  */
    5824 #line 853 "parser.yy"
     5855#line 859 "parser.yy"
    58255856    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
    58265857    break;
     
    58295860
    58305861/* Line 1806 of yacc.c  */
    5831 #line 855 "parser.yy"
     5862#line 861 "parser.yy"
    58325863    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    58335864    break;
     
    58365867
    58375868/* Line 1806 of yacc.c  */
    5838 #line 860 "parser.yy"
     5869#line 866 "parser.yy"
    58395870    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    58405871    break;
     
    58435874
    58445875/* Line 1806 of yacc.c  */
    5845 #line 862 "parser.yy"
     5876#line 868 "parser.yy"
    58465877    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    58475878    break;
     
    58505881
    58515882/* Line 1806 of yacc.c  */
    5852 #line 867 "parser.yy"
     5883#line 873 "parser.yy"
    58535884    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    58545885    break;
     
    58575888
    58585889/* Line 1806 of yacc.c  */
    5859 #line 871 "parser.yy"
     5890#line 877 "parser.yy"
    58605891    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    58615892    break;
     
    58645895
    58655896/* Line 1806 of yacc.c  */
    5866 #line 874 "parser.yy"
     5897#line 880 "parser.yy"
    58675898    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    58685899    break;
     
    58715902
    58725903/* Line 1806 of yacc.c  */
    5873 #line 878 "parser.yy"
     5904#line 884 "parser.yy"
    58745905    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
    58755906    break;
     
    58785909
    58795910/* Line 1806 of yacc.c  */
    5880 #line 881 "parser.yy"
     5911#line 887 "parser.yy"
    58815912    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    58825913    break;
     
    58855916
    58865917/* Line 1806 of yacc.c  */
    5887 #line 885 "parser.yy"
     5918#line 891 "parser.yy"
    58885919    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    58895920    break;
     
    58925923
    58935924/* Line 1806 of yacc.c  */
    5894 #line 887 "parser.yy"
     5925#line 893 "parser.yy"
    58955926    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    58965927    break;
     
    58995930
    59005931/* Line 1806 of yacc.c  */
    5901 #line 889 "parser.yy"
     5932#line 895 "parser.yy"
    59025933    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    59035934    break;
     
    59065937
    59075938/* Line 1806 of yacc.c  */
    5908 #line 891 "parser.yy"
     5939#line 897 "parser.yy"
    59095940    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    59105941    break;
     
    59135944
    59145945/* Line 1806 of yacc.c  */
    5915 #line 893 "parser.yy"
     5946#line 899 "parser.yy"
    59165947    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    59175948    break;
     
    59205951
    59215952/* Line 1806 of yacc.c  */
    5922 #line 898 "parser.yy"
     5953#line 904 "parser.yy"
    59235954    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    59245955    break;
     
    59275958
    59285959/* Line 1806 of yacc.c  */
    5929 #line 900 "parser.yy"
     5960#line 906 "parser.yy"
    59305961    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    59315962    break;
     
    59345965
    59355966/* Line 1806 of yacc.c  */
    5936 #line 902 "parser.yy"
     5967#line 908 "parser.yy"
    59375968    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    59385969    break;
     
    59415972
    59425973/* Line 1806 of yacc.c  */
    5943 #line 909 "parser.yy"
     5974#line 915 "parser.yy"
    59445975    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    59455976    break;
     
    59485979
    59495980/* Line 1806 of yacc.c  */
    5950 #line 911 "parser.yy"
     5981#line 917 "parser.yy"
    59515982    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    59525983    break;
     
    59555986
    59565987/* Line 1806 of yacc.c  */
    5957 #line 913 "parser.yy"
     5988#line 919 "parser.yy"
    59585989    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    59595990    break;
     
    59625993
    59635994/* Line 1806 of yacc.c  */
    5964 #line 915 "parser.yy"
     5995#line 921 "parser.yy"
    59655996    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    59665997    break;
     
    59696000
    59706001/* Line 1806 of yacc.c  */
    5971 #line 920 "parser.yy"
     6002#line 926 "parser.yy"
    59726003    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    59736004    break;
     
    59766007
    59776008/* Line 1806 of yacc.c  */
    5978 #line 922 "parser.yy"
     6009#line 928 "parser.yy"
    59796010    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    59806011    break;
     
    59836014
    59846015/* Line 1806 of yacc.c  */
    5985 #line 924 "parser.yy"
     6016#line 930 "parser.yy"
    59866017    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    59876018    break;
     
    59906021
    59916022/* Line 1806 of yacc.c  */
    5992 #line 926 "parser.yy"
     6023#line 932 "parser.yy"
    59936024    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    59946025    break;
     
    59976028
    59986029/* Line 1806 of yacc.c  */
    5999 #line 931 "parser.yy"
     6030#line 937 "parser.yy"
    60006031    {
    60016032                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    60066037
    60076038/* Line 1806 of yacc.c  */
    6008 #line 944 "parser.yy"
     6039#line 950 "parser.yy"
    60096040    {
    60106041                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60166047
    60176048/* Line 1806 of yacc.c  */
    6018 #line 949 "parser.yy"
     6049#line 955 "parser.yy"
    60196050    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    60206051    break;
     
    60236054
    60246055/* Line 1806 of yacc.c  */
    6025 #line 951 "parser.yy"
     6056#line 957 "parser.yy"
    60266057    {
    60276058                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60336064
    60346065/* Line 1806 of yacc.c  */
    6035 #line 960 "parser.yy"
     6066#line 966 "parser.yy"
    60366067    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
    60376068    break;
     
    60406071
    60416072/* Line 1806 of yacc.c  */
    6042 #line 962 "parser.yy"
     6073#line 968 "parser.yy"
    60436074    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
    60446075    break;
     
    60476078
    60486079/* Line 1806 of yacc.c  */
    6049 #line 964 "parser.yy"
     6080#line 970 "parser.yy"
    60506081    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
    60516082    break;
     
    60546085
    60556086/* Line 1806 of yacc.c  */
    6056 #line 966 "parser.yy"
     6087#line 972 "parser.yy"
    60576088    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
    60586089    break;
     
    60616092
    60626093/* Line 1806 of yacc.c  */
    6063 #line 968 "parser.yy"
     6094#line 974 "parser.yy"
    60646095    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
    60656096    break;
     
    60686099
    60696100/* Line 1806 of yacc.c  */
    6070 #line 973 "parser.yy"
     6101#line 979 "parser.yy"
    60716102    { (yyval.flag) = false; }
    60726103    break;
     
    60756106
    60766107/* Line 1806 of yacc.c  */
    6077 #line 975 "parser.yy"
     6108#line 981 "parser.yy"
    60786109    { (yyval.flag) = true; }
    60796110    break;
     
    60826113
    60836114/* Line 1806 of yacc.c  */
    6084 #line 980 "parser.yy"
     6115#line 986 "parser.yy"
    60856116    { (yyval.en) = 0; }
    60866117    break;
     
    60896120
    60906121/* Line 1806 of yacc.c  */
    6091 #line 987 "parser.yy"
     6122#line 993 "parser.yy"
    60926123    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    60936124    break;
     
    60966127
    60976128/* Line 1806 of yacc.c  */
    6098 #line 992 "parser.yy"
     6129#line 998 "parser.yy"
    60996130    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    61006131    break;
     
    61036134
    61046135/* Line 1806 of yacc.c  */
    6105 #line 994 "parser.yy"
     6136#line 1000 "parser.yy"
    61066137    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    61076138    break;
     
    61106141
    61116142/* Line 1806 of yacc.c  */
    6112 #line 999 "parser.yy"
     6143#line 1005 "parser.yy"
    61136144    { (yyval.en) = 0; }
    61146145    break;
     
    61176148
    61186149/* Line 1806 of yacc.c  */
    6119 #line 1001 "parser.yy"
     6150#line 1007 "parser.yy"
    61206151    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    61216152    break;
     
    61246155
    61256156/* Line 1806 of yacc.c  */
    6126 #line 1003 "parser.yy"
     6157#line 1009 "parser.yy"
    61276158    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    61286159    break;
     
    61316162
    61326163/* Line 1806 of yacc.c  */
    6133 #line 1008 "parser.yy"
     6164#line 1014 "parser.yy"
    61346165    {
    61356166                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     
    61416172
    61426173/* Line 1806 of yacc.c  */
    6143 #line 1013 "parser.yy"
     6174#line 1019 "parser.yy"
    61446175    {
    61456176                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     
    61516182
    61526183/* Line 1806 of yacc.c  */
    6153 #line 1023 "parser.yy"
     6184#line 1029 "parser.yy"
    61546185    { (yyval.decl) = 0; }
    61556186    break;
     
    61586189
    61596190/* Line 1806 of yacc.c  */
    6160 #line 1030 "parser.yy"
     6191#line 1036 "parser.yy"
    61616192    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    61626193    break;
     
    61656196
    61666197/* Line 1806 of yacc.c  */
    6167 #line 1035 "parser.yy"
     6198#line 1041 "parser.yy"
    61686199    { (yyval.decl) = 0; }
    61696200    break;
     
    61726203
    61736204/* Line 1806 of yacc.c  */
    6174 #line 1042 "parser.yy"
     6205#line 1048 "parser.yy"
    61756206    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    61766207    break;
     
    61796210
    61806211/* Line 1806 of yacc.c  */
    6181 #line 1056 "parser.yy"
     6212#line 1062 "parser.yy"
    61826213    {}
    61836214    break;
     
    61866217
    61876218/* Line 1806 of yacc.c  */
    6188 #line 1057 "parser.yy"
     6219#line 1063 "parser.yy"
    61896220    {}
    61906221    break;
     
    61936224
    61946225/* Line 1806 of yacc.c  */
    6195 #line 1086 "parser.yy"
     6226#line 1092 "parser.yy"
    61966227    {
    61976228                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62036234
    62046235/* Line 1806 of yacc.c  */
    6205 #line 1093 "parser.yy"
     6236#line 1099 "parser.yy"
    62066237    {
    62076238                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62136244
    62146245/* Line 1806 of yacc.c  */
    6215 #line 1098 "parser.yy"
     6246#line 1104 "parser.yy"
    62166247    {
    62176248                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    62236254
    62246255/* Line 1806 of yacc.c  */
    6225 #line 1108 "parser.yy"
     6256#line 1114 "parser.yy"
    62266257    {
    62276258                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62336264
    62346265/* Line 1806 of yacc.c  */
    6235 #line 1113 "parser.yy"
     6266#line 1119 "parser.yy"
    62366267    {
    62376268                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62436274
    62446275/* Line 1806 of yacc.c  */
    6245 #line 1118 "parser.yy"
     6276#line 1124 "parser.yy"
    62466277    {
    62476278                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    62536284
    62546285/* Line 1806 of yacc.c  */
    6255 #line 1126 "parser.yy"
     6286#line 1132 "parser.yy"
    62566287    {
    62576288                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62636294
    62646295/* Line 1806 of yacc.c  */
    6265 #line 1131 "parser.yy"
     6296#line 1137 "parser.yy"
    62666297    {
    62676298                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62736304
    62746305/* Line 1806 of yacc.c  */
    6275 #line 1136 "parser.yy"
     6306#line 1142 "parser.yy"
    62766307    {
    62776308                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62836314
    62846315/* Line 1806 of yacc.c  */
    6285 #line 1141 "parser.yy"
     6316#line 1147 "parser.yy"
    62866317    {
    62876318                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62936324
    62946325/* Line 1806 of yacc.c  */
    6295 #line 1146 "parser.yy"
     6326#line 1152 "parser.yy"
    62966327    {
    62976328                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    63036334
    63046335/* Line 1806 of yacc.c  */
    6305 #line 1177 "parser.yy"
     6336#line 1183 "parser.yy"
    63066337    {
    63076338                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63126343
    63136344/* Line 1806 of yacc.c  */
    6314 #line 1181 "parser.yy"
     6345#line 1187 "parser.yy"
    63156346    {
    63166347                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63216352
    63226353/* Line 1806 of yacc.c  */
    6323 #line 1188 "parser.yy"
     6354#line 1194 "parser.yy"
    63246355    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    63256356    break;
     
    63286359
    63296360/* Line 1806 of yacc.c  */
    6330 #line 1192 "parser.yy"
     6361#line 1198 "parser.yy"
    63316362    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    63326363    break;
     
    63356366
    63366367/* Line 1806 of yacc.c  */
    6337 #line 1197 "parser.yy"
     6368#line 1203 "parser.yy"
    63386369    {
    63396370                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63456376
    63466377/* Line 1806 of yacc.c  */
    6347 #line 1202 "parser.yy"
     6378#line 1208 "parser.yy"
    63486379    {
    63496380                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63556386
    63566387/* Line 1806 of yacc.c  */
    6357 #line 1207 "parser.yy"
     6388#line 1213 "parser.yy"
    63586389    {
    63596390                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    63656396
    63666397/* Line 1806 of yacc.c  */
    6367 #line 1218 "parser.yy"
     6398#line 1224 "parser.yy"
    63686399    {
    63696400                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63756406
    63766407/* Line 1806 of yacc.c  */
    6377 #line 1223 "parser.yy"
     6408#line 1229 "parser.yy"
    63786409    {
    63796410                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63856416
    63866417/* Line 1806 of yacc.c  */
    6387 #line 1228 "parser.yy"
     6418#line 1234 "parser.yy"
    63886419    {
    63896420                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    63956426
    63966427/* Line 1806 of yacc.c  */
    6397 #line 1233 "parser.yy"
     6428#line 1239 "parser.yy"
    63986429    {
    63996430                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64056436
    64066437/* Line 1806 of yacc.c  */
    6407 #line 1238 "parser.yy"
     6438#line 1244 "parser.yy"
    64086439    {
    64096440                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64156446
    64166447/* Line 1806 of yacc.c  */
    6417 #line 1247 "parser.yy"
     6448#line 1253 "parser.yy"
    64186449    {
    64196450                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    64256456
    64266457/* Line 1806 of yacc.c  */
    6427 #line 1252 "parser.yy"
     6458#line 1258 "parser.yy"
    64286459    {
    64296460                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    64356466
    64366467/* Line 1806 of yacc.c  */
    6437 #line 1269 "parser.yy"
     6468#line 1275 "parser.yy"
    64386469    {
    64396470                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64456476
    64466477/* Line 1806 of yacc.c  */
    6447 #line 1274 "parser.yy"
     6478#line 1280 "parser.yy"
    64486479    {
    64496480                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64556486
    64566487/* Line 1806 of yacc.c  */
    6457 #line 1296 "parser.yy"
     6488#line 1302 "parser.yy"
    64586489    { (yyval.decl) = 0; }
    64596490    break;
     
    64626493
    64636494/* Line 1806 of yacc.c  */
    6464 #line 1308 "parser.yy"
     6495#line 1314 "parser.yy"
    64656496    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    64666497    break;
     
    64696500
    64706501/* Line 1806 of yacc.c  */
    6471 #line 1319 "parser.yy"
     6502#line 1325 "parser.yy"
    64726503    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    64736504    break;
     
    64766507
    64776508/* Line 1806 of yacc.c  */
    6478 #line 1321 "parser.yy"
     6509#line 1327 "parser.yy"
    64796510    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    64806511    break;
     
    64836514
    64846515/* Line 1806 of yacc.c  */
    6485 #line 1323 "parser.yy"
     6516#line 1329 "parser.yy"
    64866517    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    64876518    break;
     
    64906521
    64916522/* Line 1806 of yacc.c  */
    6492 #line 1325 "parser.yy"
     6523#line 1331 "parser.yy"
    64936524    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    64946525    break;
     
    64976528
    64986529/* Line 1806 of yacc.c  */
    6499 #line 1327 "parser.yy"
     6530#line 1333 "parser.yy"
    65006531    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    65016532    break;
     
    65046535
    65056536/* Line 1806 of yacc.c  */
    6506 #line 1329 "parser.yy"
     6537#line 1335 "parser.yy"
    65076538    {
    65086539                        typedefTable.enterScope();
     
    65136544
    65146545/* Line 1806 of yacc.c  */
    6515 #line 1333 "parser.yy"
     6546#line 1339 "parser.yy"
    65166547    {
    65176548                        typedefTable.leaveScope();
     
    65236554
    65246555/* Line 1806 of yacc.c  */
    6525 #line 1342 "parser.yy"
     6556#line 1348 "parser.yy"
    65266557    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65276558    break;
     
    65306561
    65316562/* Line 1806 of yacc.c  */
    6532 #line 1344 "parser.yy"
     6563#line 1350 "parser.yy"
    65336564    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    65346565    break;
     
    65376568
    65386569/* Line 1806 of yacc.c  */
    6539 #line 1355 "parser.yy"
     6570#line 1361 "parser.yy"
    65406571    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65416572    break;
     
    65446575
    65456576/* Line 1806 of yacc.c  */
    6546 #line 1360 "parser.yy"
     6577#line 1366 "parser.yy"
    65476578    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    65486579    break;
     
    65516582
    65526583/* Line 1806 of yacc.c  */
    6553 #line 1362 "parser.yy"
     6584#line 1368 "parser.yy"
    65546585    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    65556586    break;
     
    65586589
    65596590/* Line 1806 of yacc.c  */
    6560 #line 1364 "parser.yy"
     6591#line 1370 "parser.yy"
    65616592    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    65626593    break;
     
    65656596
    65666597/* Line 1806 of yacc.c  */
    6567 #line 1366 "parser.yy"
     6598#line 1372 "parser.yy"
    65686599    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    65696600    break;
     
    65726603
    65736604/* Line 1806 of yacc.c  */
    6574 #line 1369 "parser.yy"
     6605#line 1375 "parser.yy"
    65756606    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    65766607    break;
     
    65796610
    65806611/* Line 1806 of yacc.c  */
    6581 #line 1371 "parser.yy"
     6612#line 1377 "parser.yy"
    65826613    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    65836614    break;
     
    65866617
    65876618/* Line 1806 of yacc.c  */
    6588 #line 1374 "parser.yy"
     6619#line 1380 "parser.yy"
    65896620    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    65906621    break;
     
    65936624
    65946625/* Line 1806 of yacc.c  */
    6595 #line 1376 "parser.yy"
     6626#line 1382 "parser.yy"
    65966627    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    65976628    break;
     
    66006631
    66016632/* Line 1806 of yacc.c  */
    6602 #line 1381 "parser.yy"
     6633#line 1387 "parser.yy"
    66036634    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    66046635    break;
     
    66076638
    66086639/* Line 1806 of yacc.c  */
    6609 #line 1383 "parser.yy"
     6640#line 1389 "parser.yy"
    66106641    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    66116642    break;
     
    66146645
    66156646/* Line 1806 of yacc.c  */
    6616 #line 1385 "parser.yy"
     6647#line 1391 "parser.yy"
    66176648    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    66186649    break;
     
    66216652
    66226653/* Line 1806 of yacc.c  */
    6623 #line 1387 "parser.yy"
     6654#line 1393 "parser.yy"
    66246655    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    66256656    break;
     
    66286659
    66296660/* Line 1806 of yacc.c  */
    6630 #line 1389 "parser.yy"
     6661#line 1395 "parser.yy"
    66316662    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    66326663    break;
     
    66356666
    66366667/* Line 1806 of yacc.c  */
    6637 #line 1391 "parser.yy"
     6668#line 1397 "parser.yy"
    66386669    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    66396670    break;
     
    66426673
    66436674/* Line 1806 of yacc.c  */
    6644 #line 1393 "parser.yy"
     6675#line 1399 "parser.yy"
    66456676    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    66466677    break;
     
    66496680
    66506681/* Line 1806 of yacc.c  */
    6651 #line 1395 "parser.yy"
     6682#line 1401 "parser.yy"
    66526683    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    66536684    break;
     
    66566687
    66576688/* Line 1806 of yacc.c  */
    6658 #line 1397 "parser.yy"
     6689#line 1403 "parser.yy"
    66596690    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    66606691    break;
     
    66636694
    66646695/* Line 1806 of yacc.c  */
    6665 #line 1399 "parser.yy"
     6696#line 1405 "parser.yy"
    66666697    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    66676698    break;
     
    66706701
    66716702/* Line 1806 of yacc.c  */
    6672 #line 1401 "parser.yy"
     6703#line 1407 "parser.yy"
    66736704    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    66746705    break;
     
    66776708
    66786709/* Line 1806 of yacc.c  */
    6679 #line 1403 "parser.yy"
     6710#line 1409 "parser.yy"
    66806711    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    66816712    break;
     
    66846715
    66856716/* Line 1806 of yacc.c  */
    6686 #line 1405 "parser.yy"
     6717#line 1411 "parser.yy"
    66876718    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    66886719    break;
     
    66916722
    66926723/* Line 1806 of yacc.c  */
    6693 #line 1412 "parser.yy"
     6724#line 1418 "parser.yy"
    66946725    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    66956726    break;
     
    66986729
    66996730/* Line 1806 of yacc.c  */
    6700 #line 1414 "parser.yy"
     6731#line 1420 "parser.yy"
    67016732    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67026733    break;
     
    67056736
    67066737/* Line 1806 of yacc.c  */
    6707 #line 1416 "parser.yy"
     6738#line 1422 "parser.yy"
    67086739    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67096740    break;
     
    67126743
    67136744/* Line 1806 of yacc.c  */
    6714 #line 1418 "parser.yy"
     6745#line 1424 "parser.yy"
    67156746    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    67166747    break;
     
    67196750
    67206751/* Line 1806 of yacc.c  */
    6721 #line 1424 "parser.yy"
     6752#line 1430 "parser.yy"
    67226753    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67236754    break;
     
    67266757
    67276758/* Line 1806 of yacc.c  */
    6728 #line 1431 "parser.yy"
     6759#line 1437 "parser.yy"
    67296760    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67306761    break;
     
    67336764
    67346765/* Line 1806 of yacc.c  */
    6735 #line 1433 "parser.yy"
     6766#line 1439 "parser.yy"
    67366767    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67376768    break;
     
    67406771
    67416772/* Line 1806 of yacc.c  */
    6742 #line 1435 "parser.yy"
     6773#line 1441 "parser.yy"
    67436774    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    67446775    break;
     
    67476778
    67486779/* Line 1806 of yacc.c  */
    6749 #line 1440 "parser.yy"
     6780#line 1446 "parser.yy"
    67506781    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    67516782    break;
     
    67546785
    67556786/* Line 1806 of yacc.c  */
    6756 #line 1442 "parser.yy"
     6787#line 1448 "parser.yy"
    67576788    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    67586789    break;
     
    67616792
    67626793/* Line 1806 of yacc.c  */
    6763 #line 1444 "parser.yy"
     6794#line 1450 "parser.yy"
    67646795    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    67656796    break;
     
    67686799
    67696800/* Line 1806 of yacc.c  */
    6770 #line 1446 "parser.yy"
     6801#line 1452 "parser.yy"
    67716802    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    67726803    break;
     
    67756806
    67766807/* Line 1806 of yacc.c  */
    6777 #line 1452 "parser.yy"
     6808#line 1458 "parser.yy"
    67786809    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67796810    break;
     
    67826813
    67836814/* Line 1806 of yacc.c  */
    6784 #line 1454 "parser.yy"
     6815#line 1460 "parser.yy"
    67856816    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67866817    break;
     
    67896820
    67906821/* Line 1806 of yacc.c  */
    6791 #line 1456 "parser.yy"
     6822#line 1462 "parser.yy"
    67926823    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67936824    break;
     
    67966827
    67976828/* Line 1806 of yacc.c  */
    6798 #line 1462 "parser.yy"
     6829#line 1468 "parser.yy"
    67996830    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68006831    break;
     
    68036834
    68046835/* Line 1806 of yacc.c  */
    6805 #line 1464 "parser.yy"
     6836#line 1470 "parser.yy"
    68066837    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68076838    break;
     
    68106841
    68116842/* Line 1806 of yacc.c  */
    6812 #line 1470 "parser.yy"
     6843#line 1476 "parser.yy"
    68136844    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68146845    break;
     
    68176848
    68186849/* Line 1806 of yacc.c  */
    6819 #line 1472 "parser.yy"
     6850#line 1478 "parser.yy"
    68206851    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68216852    break;
     
    68246855
    68256856/* Line 1806 of yacc.c  */
    6826 #line 1474 "parser.yy"
     6857#line 1480 "parser.yy"
    68276858    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68286859    break;
     
    68316862
    68326863/* Line 1806 of yacc.c  */
    6833 #line 1479 "parser.yy"
     6864#line 1485 "parser.yy"
    68346865    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    68356866    break;
     
    68386869
    68396870/* Line 1806 of yacc.c  */
    6840 #line 1481 "parser.yy"
     6871#line 1487 "parser.yy"
    68416872    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68426873    break;
     
    68456876
    68466877/* Line 1806 of yacc.c  */
    6847 #line 1483 "parser.yy"
     6878#line 1489 "parser.yy"
    68486879    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68496880    break;
     
    68526883
    68536884/* Line 1806 of yacc.c  */
    6854 #line 1493 "parser.yy"
     6885#line 1499 "parser.yy"
    68556886    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
    68566887    break;
     
    68596890
    68606891/* Line 1806 of yacc.c  */
    6861 #line 1495 "parser.yy"
     6892#line 1501 "parser.yy"
    68626893    {
    68636894                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    68696900
    68706901/* Line 1806 of yacc.c  */
    6871 #line 1500 "parser.yy"
     6902#line 1506 "parser.yy"
    68726903    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    68736904    break;
     
    68766907
    68776908/* Line 1806 of yacc.c  */
    6878 #line 1502 "parser.yy"
     6909#line 1508 "parser.yy"
    68796910    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
    68806911    break;
     
    68836914
    68846915/* Line 1806 of yacc.c  */
    6885 #line 1504 "parser.yy"
     6916#line 1510 "parser.yy"
    68866917    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    68876918    break;
     
    68906921
    68916922/* Line 1806 of yacc.c  */
    6892 #line 1506 "parser.yy"
     6923#line 1512 "parser.yy"
    68936924    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    68946925    break;
     
    68976928
    68986929/* Line 1806 of yacc.c  */
    6899 #line 1511 "parser.yy"
     6930#line 1517 "parser.yy"
    69006931    { (yyval.aggKey) = DeclarationNode::Struct; }
    69016932    break;
     
    69046935
    69056936/* Line 1806 of yacc.c  */
    6906 #line 1513 "parser.yy"
     6937#line 1519 "parser.yy"
    69076938    { (yyval.aggKey) = DeclarationNode::Union; }
    69086939    break;
     
    69116942
    69126943/* Line 1806 of yacc.c  */
    6913 #line 1518 "parser.yy"
     6944#line 1524 "parser.yy"
    69146945    { (yyval.decl) = 0; }
    69156946    break;
     
    69186949
    69196950/* Line 1806 of yacc.c  */
    6920 #line 1520 "parser.yy"
     6951#line 1526 "parser.yy"
    69216952    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    69226953    break;
     
    69256956
    69266957/* Line 1806 of yacc.c  */
    6927 #line 1526 "parser.yy"
     6958#line 1532 "parser.yy"
    69286959    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    69296960    break;
     
    69326963
    69336964/* Line 1806 of yacc.c  */
    6934 #line 1529 "parser.yy"
     6965#line 1535 "parser.yy"
    69356966    {   // mark all fields in list
    69366967                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    69436974
    69446975/* Line 1806 of yacc.c  */
    6945 #line 1539 "parser.yy"
     6976#line 1545 "parser.yy"
    69466977    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    69476978    break;
     
    69506981
    69516982/* Line 1806 of yacc.c  */
    6952 #line 1541 "parser.yy"
     6983#line 1547 "parser.yy"
    69536984    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    69546985    break;
     
    69576988
    69586989/* Line 1806 of yacc.c  */
    6959 #line 1543 "parser.yy"
     6990#line 1549 "parser.yy"
    69606991    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    69616992    break;
     
    69646995
    69656996/* Line 1806 of yacc.c  */
    6966 #line 1548 "parser.yy"
     6997#line 1554 "parser.yy"
    69676998    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    69686999    break;
     
    69717002
    69727003/* Line 1806 of yacc.c  */
    6973 #line 1550 "parser.yy"
     7004#line 1556 "parser.yy"
    69747005    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    69757006    break;
     
    69787009
    69797010/* Line 1806 of yacc.c  */
    6980 #line 1555 "parser.yy"
     7011#line 1561 "parser.yy"
    69817012    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    69827013    break;
     
    69857016
    69867017/* Line 1806 of yacc.c  */
    6987 #line 1557 "parser.yy"
     7018#line 1563 "parser.yy"
    69887019    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    69897020    break;
     
    69927023
    69937024/* Line 1806 of yacc.c  */
    6994 #line 1560 "parser.yy"
     7025#line 1566 "parser.yy"
    69957026    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    69967027    break;
     
    69997030
    70007031/* Line 1806 of yacc.c  */
    7001 #line 1563 "parser.yy"
     7032#line 1569 "parser.yy"
    70027033    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70037034    break;
     
    70067037
    70077038/* Line 1806 of yacc.c  */
    7008 #line 1569 "parser.yy"
     7039#line 1575 "parser.yy"
    70097040    { (yyval.en) = 0; }
    70107041    break;
     
    70137044
    70147045/* Line 1806 of yacc.c  */
    7015 #line 1571 "parser.yy"
     7046#line 1577 "parser.yy"
    70167047    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    70177048    break;
     
    70207051
    70217052/* Line 1806 of yacc.c  */
    7022 #line 1576 "parser.yy"
     7053#line 1582 "parser.yy"
    70237054    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    70247055    break;
     
    70277058
    70287059/* Line 1806 of yacc.c  */
    7029 #line 1585 "parser.yy"
     7060#line 1591 "parser.yy"
    70307061    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
    70317062    break;
     
    70347065
    70357066/* Line 1806 of yacc.c  */
    7036 #line 1587 "parser.yy"
     7067#line 1593 "parser.yy"
    70377068    {
    70387069                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    70447075
    70457076/* Line 1806 of yacc.c  */
    7046 #line 1592 "parser.yy"
     7077#line 1598 "parser.yy"
    70477078    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    70487079    break;
     
    70517082
    70527083/* Line 1806 of yacc.c  */
    7053 #line 1594 "parser.yy"
     7084#line 1600 "parser.yy"
    70547085    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    70557086    break;
     
    70587089
    70597090/* Line 1806 of yacc.c  */
    7060 #line 1599 "parser.yy"
     7091#line 1605 "parser.yy"
    70617092    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    70627093    break;
     
    70657096
    70667097/* Line 1806 of yacc.c  */
    7067 #line 1601 "parser.yy"
     7098#line 1607 "parser.yy"
    70687099    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    70697100    break;
     
    70727103
    70737104/* Line 1806 of yacc.c  */
    7074 #line 1606 "parser.yy"
     7105#line 1612 "parser.yy"
    70757106    { (yyval.en) = 0; }
    70767107    break;
     
    70797110
    70807111/* Line 1806 of yacc.c  */
    7081 #line 1608 "parser.yy"
     7112#line 1614 "parser.yy"
    70827113    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    70837114    break;
     
    70867117
    70877118/* Line 1806 of yacc.c  */
    7088 #line 1615 "parser.yy"
     7119#line 1621 "parser.yy"
    70897120    { (yyval.decl) = 0; }
    70907121    break;
     
    70937124
    70947125/* Line 1806 of yacc.c  */
    7095 #line 1623 "parser.yy"
     7126#line 1629 "parser.yy"
    70967127    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    70977128    break;
     
    71007131
    71017132/* Line 1806 of yacc.c  */
    7102 #line 1625 "parser.yy"
     7133#line 1631 "parser.yy"
    71037134    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71047135    break;
     
    71077138
    71087139/* Line 1806 of yacc.c  */
    7109 #line 1627 "parser.yy"
     7140#line 1633 "parser.yy"
    71107141    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71117142    break;
     
    71147145
    71157146/* Line 1806 of yacc.c  */
    7116 #line 1635 "parser.yy"
     7147#line 1641 "parser.yy"
    71177148    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71187149    break;
     
    71217152
    71227153/* Line 1806 of yacc.c  */
    7123 #line 1637 "parser.yy"
     7154#line 1643 "parser.yy"
    71247155    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71257156    break;
     
    71287159
    71297160/* Line 1806 of yacc.c  */
    7130 #line 1639 "parser.yy"
     7161#line 1645 "parser.yy"
    71317162    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    71327163    break;
     
    71357166
    71367167/* Line 1806 of yacc.c  */
    7137 #line 1645 "parser.yy"
     7168#line 1651 "parser.yy"
    71387169    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71397170    break;
     
    71427173
    71437174/* Line 1806 of yacc.c  */
    7144 #line 1650 "parser.yy"
     7175#line 1656 "parser.yy"
    71457176    { (yyval.decl) = 0; }
    71467177    break;
     
    71497180
    71507181/* Line 1806 of yacc.c  */
    7151 #line 1657 "parser.yy"
     7182#line 1663 "parser.yy"
    71527183    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71537184    break;
     
    71567187
    71577188/* Line 1806 of yacc.c  */
    7158 #line 1664 "parser.yy"
     7189#line 1670 "parser.yy"
    71597190    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71607191    break;
     
    71637194
    71647195/* Line 1806 of yacc.c  */
    7165 #line 1666 "parser.yy"
     7196#line 1672 "parser.yy"
    71667197    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71677198    break;
     
    71707201
    71717202/* Line 1806 of yacc.c  */
    7172 #line 1675 "parser.yy"
     7203#line 1681 "parser.yy"
    71737204    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    71747205    break;
     
    71777208
    71787209/* Line 1806 of yacc.c  */
    7179 #line 1678 "parser.yy"
     7210#line 1684 "parser.yy"
    71807211    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    71817212    break;
     
    71847215
    71857216/* Line 1806 of yacc.c  */
    7186 #line 1680 "parser.yy"
     7217#line 1686 "parser.yy"
    71877218    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    71887219    break;
     
    71917222
    71927223/* Line 1806 of yacc.c  */
    7193 #line 1690 "parser.yy"
     7224#line 1696 "parser.yy"
    71947225    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    71957226    break;
     
    71987229
    71997230/* Line 1806 of yacc.c  */
    7200 #line 1696 "parser.yy"
     7231#line 1702 "parser.yy"
    72017232    {
    72027233                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    72087239
    72097240/* Line 1806 of yacc.c  */
    7210 #line 1701 "parser.yy"
     7241#line 1707 "parser.yy"
    72117242    {
    72127243                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    72187249
    72197250/* Line 1806 of yacc.c  */
    7220 #line 1710 "parser.yy"
     7251#line 1716 "parser.yy"
    72217252    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72227253    break;
     
    72257256
    72267257/* Line 1806 of yacc.c  */
    7227 #line 1719 "parser.yy"
     7258#line 1725 "parser.yy"
    72287259    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    72297260    break;
     
    72327263
    72337264/* Line 1806 of yacc.c  */
    7234 #line 1721 "parser.yy"
     7265#line 1727 "parser.yy"
    72357266    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    72367267    break;
     
    72397270
    72407271/* Line 1806 of yacc.c  */
    7241 #line 1746 "parser.yy"
     7272#line 1752 "parser.yy"
    72427273    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72437274    break;
     
    72467277
    72477278/* Line 1806 of yacc.c  */
    7248 #line 1754 "parser.yy"
     7279#line 1760 "parser.yy"
    72497280    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72507281    break;
     
    72537284
    72547285/* Line 1806 of yacc.c  */
    7255 #line 1759 "parser.yy"
     7286#line 1765 "parser.yy"
    72567287    { (yyval.in) = 0; }
    72577288    break;
     
    72607291
    72617292/* Line 1806 of yacc.c  */
    7262 #line 1761 "parser.yy"
     7293#line 1767 "parser.yy"
    72637294    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    72647295    break;
     
    72677298
    72687299/* Line 1806 of yacc.c  */
    7269 #line 1763 "parser.yy"
     7300#line 1769 "parser.yy"
    72707301    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    72717302    break;
     
    72747305
    72757306/* Line 1806 of yacc.c  */
    7276 #line 1767 "parser.yy"
     7307#line 1773 "parser.yy"
    72777308    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    72787309    break;
     
    72817312
    72827313/* Line 1806 of yacc.c  */
    7283 #line 1768 "parser.yy"
     7314#line 1774 "parser.yy"
    72847315    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    72857316    break;
     
    72887319
    72897320/* Line 1806 of yacc.c  */
    7290 #line 1773 "parser.yy"
     7321#line 1779 "parser.yy"
    72917322    { (yyval.in) = 0; }
    72927323    break;
     
    72957326
    72967327/* Line 1806 of yacc.c  */
    7297 #line 1775 "parser.yy"
     7328#line 1781 "parser.yy"
    72987329    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    72997330    break;
     
    73027333
    73037334/* Line 1806 of yacc.c  */
    7304 #line 1776 "parser.yy"
     7335#line 1782 "parser.yy"
    73057336    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    73067337    break;
     
    73097340
    73107341/* Line 1806 of yacc.c  */
    7311 #line 1778 "parser.yy"
     7342#line 1784 "parser.yy"
    73127343    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    73137344    break;
     
    73167347
    73177348/* Line 1806 of yacc.c  */
    7318 #line 1794 "parser.yy"
     7349#line 1800 "parser.yy"
    73197350    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    73207351    break;
     
    73237354
    73247355/* Line 1806 of yacc.c  */
    7325 #line 1800 "parser.yy"
     7356#line 1806 "parser.yy"
    73267357    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    73277358    break;
     
    73307361
    73317362/* Line 1806 of yacc.c  */
    7332 #line 1806 "parser.yy"
     7363#line 1812 "parser.yy"
    73337364    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    73347365    break;
     
    73377368
    73387369/* Line 1806 of yacc.c  */
    7339 #line 1809 "parser.yy"
     7370#line 1815 "parser.yy"
    73407371    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    73417372    break;
     
    73447375
    73457376/* Line 1806 of yacc.c  */
    7346 #line 1811 "parser.yy"
     7377#line 1817 "parser.yy"
    73477378    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    73487379    break;
     
    73517382
    73527383/* Line 1806 of yacc.c  */
    7353 #line 1813 "parser.yy"
     7384#line 1819 "parser.yy"
    73547385    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    73557386    break;
     
    73587389
    73597390/* Line 1806 of yacc.c  */
    7360 #line 1815 "parser.yy"
     7391#line 1821 "parser.yy"
    73617392    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    73627393    break;
     
    73657396
    73667397/* Line 1806 of yacc.c  */
    7367 #line 1839 "parser.yy"
     7398#line 1845 "parser.yy"
    73687399    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73697400    break;
     
    73727403
    73737404/* Line 1806 of yacc.c  */
    7374 #line 1841 "parser.yy"
     7405#line 1847 "parser.yy"
    73757406    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73767407    break;
     
    73797410
    73807411/* Line 1806 of yacc.c  */
    7381 #line 1843 "parser.yy"
     7412#line 1849 "parser.yy"
    73827413    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    73837414    break;
     
    73867417
    73877418/* Line 1806 of yacc.c  */
    7388 #line 1849 "parser.yy"
     7419#line 1855 "parser.yy"
    73897420    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73907421    break;
     
    73937424
    73947425/* Line 1806 of yacc.c  */
    7395 #line 1851 "parser.yy"
     7426#line 1857 "parser.yy"
    73967427    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    73977428    break;
     
    74007431
    74017432/* Line 1806 of yacc.c  */
    7402 #line 1856 "parser.yy"
     7433#line 1862 "parser.yy"
    74037434    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    74047435    break;
     
    74077438
    74087439/* Line 1806 of yacc.c  */
    7409 #line 1862 "parser.yy"
     7440#line 1868 "parser.yy"
    74107441    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    74117442    break;
     
    74147445
    74157446/* Line 1806 of yacc.c  */
    7416 #line 1867 "parser.yy"
     7447#line 1873 "parser.yy"
    74177448    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    74187449    break;
     
    74217452
    74227453/* Line 1806 of yacc.c  */
    7423 #line 1869 "parser.yy"
     7454#line 1875 "parser.yy"
    74247455    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    74257456    break;
     
    74287459
    74297460/* Line 1806 of yacc.c  */
    7430 #line 1875 "parser.yy"
     7461#line 1881 "parser.yy"
    74317462    { (yyval.tclass) = DeclarationNode::Otype; }
    74327463    break;
     
    74357466
    74367467/* Line 1806 of yacc.c  */
    7437 #line 1877 "parser.yy"
     7468#line 1883 "parser.yy"
    74387469    { (yyval.tclass) = DeclarationNode::Ftype; }
    74397470    break;
     
    74427473
    74437474/* Line 1806 of yacc.c  */
    7444 #line 1879 "parser.yy"
     7475#line 1885 "parser.yy"
    74457476    { (yyval.tclass) = DeclarationNode::Dtype; }
    74467477    break;
     
    74497480
    74507481/* Line 1806 of yacc.c  */
    7451 #line 1884 "parser.yy"
     7482#line 1890 "parser.yy"
    74527483    { (yyval.decl) = 0; }
    74537484    break;
     
    74567487
    74577488/* Line 1806 of yacc.c  */
    7458 #line 1886 "parser.yy"
     7489#line 1892 "parser.yy"
    74597490    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    74607491    break;
     
    74637494
    74647495/* Line 1806 of yacc.c  */
    7465 #line 1891 "parser.yy"
     7496#line 1897 "parser.yy"
    74667497    {
    74677498                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    74737504
    74747505/* Line 1806 of yacc.c  */
    7475 #line 1896 "parser.yy"
     7506#line 1902 "parser.yy"
    74767507    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    74777508    break;
     
    74807511
    74817512/* Line 1806 of yacc.c  */
    7482 #line 1898 "parser.yy"
     7513#line 1904 "parser.yy"
    74837514    { (yyval.decl) = 0; }
    74847515    break;
     
    74877518
    74887519/* Line 1806 of yacc.c  */
    7489 #line 1903 "parser.yy"
     7520#line 1909 "parser.yy"
    74907521    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    74917522    break;
     
    74947525
    74957526/* Line 1806 of yacc.c  */
    7496 #line 1906 "parser.yy"
     7527#line 1912 "parser.yy"
    74977528    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    74987529    break;
     
    75017532
    75027533/* Line 1806 of yacc.c  */
    7503 #line 1908 "parser.yy"
     7534#line 1914 "parser.yy"
    75047535    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    75057536    break;
     
    75087539
    75097540/* Line 1806 of yacc.c  */
    7510 #line 1913 "parser.yy"
     7541#line 1919 "parser.yy"
    75117542    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    75127543    break;
     
    75157546
    75167547/* Line 1806 of yacc.c  */
    7517 #line 1915 "parser.yy"
     7548#line 1921 "parser.yy"
    75187549    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    75197550    break;
     
    75227553
    75237554/* Line 1806 of yacc.c  */
    7524 #line 1917 "parser.yy"
     7555#line 1923 "parser.yy"
    75257556    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    75267557    break;
     
    75297560
    75307561/* Line 1806 of yacc.c  */
    7531 #line 1922 "parser.yy"
     7562#line 1928 "parser.yy"
    75327563    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    75337564    break;
     
    75367567
    75377568/* Line 1806 of yacc.c  */
    7538 #line 1924 "parser.yy"
     7569#line 1930 "parser.yy"
    75397570    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    75407571    break;
     
    75437574
    75447575/* Line 1806 of yacc.c  */
    7545 #line 1929 "parser.yy"
     7576#line 1935 "parser.yy"
    75467577    {
    75477578                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    75537584
    75547585/* Line 1806 of yacc.c  */
    7555 #line 1934 "parser.yy"
     7586#line 1940 "parser.yy"
    75567587    {
    75577588                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    75637594
    75647595/* Line 1806 of yacc.c  */
    7565 #line 1942 "parser.yy"
     7596#line 1948 "parser.yy"
    75667597    {
    75677598                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    75737604
    75747605/* Line 1806 of yacc.c  */
    7575 #line 1947 "parser.yy"
     7606#line 1953 "parser.yy"
    75767607    {
    75777608                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    75837614
    75847615/* Line 1806 of yacc.c  */
    7585 #line 1952 "parser.yy"
     7616#line 1958 "parser.yy"
    75867617    {
    75877618                        typedefTable.leaveTrait();
     
    75947625
    75957626/* Line 1806 of yacc.c  */
    7596 #line 1962 "parser.yy"
     7627#line 1968 "parser.yy"
    75977628    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    75987629    break;
     
    76017632
    76027633/* Line 1806 of yacc.c  */
    7603 #line 1972 "parser.yy"
     7634#line 1978 "parser.yy"
    76047635    {
    76057636                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76117642
    76127643/* Line 1806 of yacc.c  */
    7613 #line 1977 "parser.yy"
     7644#line 1983 "parser.yy"
    76147645    {
    76157646                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76217652
    76227653/* Line 1806 of yacc.c  */
    7623 #line 1982 "parser.yy"
     7654#line 1988 "parser.yy"
    76247655    {
    76257656                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    76317662
    76327663/* Line 1806 of yacc.c  */
    7633 #line 1990 "parser.yy"
     7664#line 1996 "parser.yy"
    76347665    {
    76357666                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76417672
    76427673/* Line 1806 of yacc.c  */
    7643 #line 1995 "parser.yy"
     7674#line 2001 "parser.yy"
    76447675    {
    76457676                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76517682
    76527683/* Line 1806 of yacc.c  */
    7653 #line 2005 "parser.yy"
     7684#line 2011 "parser.yy"
    76547685    {}
    76557686    break;
     
    76587689
    76597690/* Line 1806 of yacc.c  */
    7660 #line 2007 "parser.yy"
     7691#line 2013 "parser.yy"
    76617692    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
    76627693    break;
     
    76657696
    76667697/* Line 1806 of yacc.c  */
    7667 #line 2013 "parser.yy"
     7698#line 2019 "parser.yy"
    76687699    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    76697700    break;
     
    76727703
    76737704/* Line 1806 of yacc.c  */
    7674 #line 2018 "parser.yy"
     7705#line 2024 "parser.yy"
    76757706    { (yyval.decl) = 0; }
    76767707    break;
     
    76797710
    76807711/* Line 1806 of yacc.c  */
    7681 #line 2026 "parser.yy"
     7712#line 2032 "parser.yy"
    76827713    {}
    76837714    break;
     
    76867717
    76877718/* Line 1806 of yacc.c  */
    7688 #line 2028 "parser.yy"
     7719#line 2034 "parser.yy"
    76897720    {
    76907721                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     
    76967727
    76977728/* Line 1806 of yacc.c  */
    7698 #line 2033 "parser.yy"
     7729#line 2039 "parser.yy"
    76997730    {
    77007731                        linkage = linkageStack.top();
     
    77077738
    77087739/* Line 1806 of yacc.c  */
    7709 #line 2039 "parser.yy"
     7740#line 2045 "parser.yy"
    77107741    {   // mark all fields in list
    77117742                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    77187749
    77197750/* Line 1806 of yacc.c  */
    7720 #line 2054 "parser.yy"
     7751#line 2060 "parser.yy"
    77217752    {
    77227753                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77297760
    77307761/* Line 1806 of yacc.c  */
    7731 #line 2060 "parser.yy"
     7762#line 2066 "parser.yy"
    77327763    {
    77337764                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77407771
    77417772/* Line 1806 of yacc.c  */
    7742 #line 2069 "parser.yy"
     7773#line 2075 "parser.yy"
    77437774    {
    77447775                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77517782
    77527783/* Line 1806 of yacc.c  */
    7753 #line 2075 "parser.yy"
     7784#line 2081 "parser.yy"
    77547785    {
    77557786                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77607791
    77617792  case 538:
    7762 
    7763 /* Line 1806 of yacc.c  */
    7764 #line 2081 "parser.yy"
    7765     {
    7766                         typedefTable.addToEnclosingScope( TypedefTable::ID );
    7767                         typedefTable.leaveScope();
    7768                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
    7769                 }
    7770     break;
    7771 
    7772   case 539:
    77737793
    77747794/* Line 1806 of yacc.c  */
     
    77817801    break;
    77827802
     7803  case 539:
     7804
     7805/* Line 1806 of yacc.c  */
     7806#line 2093 "parser.yy"
     7807    {
     7808                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     7809                        typedefTable.leaveScope();
     7810                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
     7811                }
     7812    break;
     7813
    77837814  case 540:
    77847815
    77857816/* Line 1806 of yacc.c  */
    7786 #line 2093 "parser.yy"
     7817#line 2099 "parser.yy"
    77877818    {
    77887819                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77957826
    77967827/* Line 1806 of yacc.c  */
    7797 #line 2101 "parser.yy"
     7828#line 2107 "parser.yy"
    77987829    {
    77997830                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78067837
    78077838/* Line 1806 of yacc.c  */
    7808 #line 2107 "parser.yy"
     7839#line 2113 "parser.yy"
    78097840    {
    78107841                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78177848
    78187849/* Line 1806 of yacc.c  */
    7819 #line 2115 "parser.yy"
     7850#line 2121 "parser.yy"
    78207851    {
    78217852                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78287859
    78297860/* Line 1806 of yacc.c  */
    7830 #line 2121 "parser.yy"
     7861#line 2127 "parser.yy"
    78317862    {
    78327863                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78397870
    78407871/* Line 1806 of yacc.c  */
    7841 #line 2136 "parser.yy"
     7872#line 2142 "parser.yy"
    78427873    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    78437874    break;
     
    78467877
    78477878/* Line 1806 of yacc.c  */
    7848 #line 2141 "parser.yy"
     7879#line 2147 "parser.yy"
    78497880    { delete (yyvsp[(3) - (5)].str); }
    78507881    break;
     
    78537884
    78547885/* Line 1806 of yacc.c  */
    7855 #line 2146 "parser.yy"
     7886#line 2152 "parser.yy"
    78567887    { (yyval.decl) = 0; }
    78577888    break;
     
    78607891
    78617892/* Line 1806 of yacc.c  */
    7862 #line 2153 "parser.yy"
     7893#line 2159 "parser.yy"
    78637894    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    78647895    break;
     
    78677898
    78687899/* Line 1806 of yacc.c  */
    7869 #line 2159 "parser.yy"
     7900#line 2165 "parser.yy"
    78707901    { (yyval.decl) = 0; }
    78717902    break;
     
    78747905
    78757906/* Line 1806 of yacc.c  */
    7876 #line 2170 "parser.yy"
     7907#line 2176 "parser.yy"
    78777908    { delete (yyvsp[(3) - (4)].en); }
    78787909    break;
     
    78817912
    78827913/* Line 1806 of yacc.c  */
    7883 #line 2174 "parser.yy"
     7914#line 2180 "parser.yy"
    78847915    { delete (yyvsp[(1) - (1)].tok); }
    78857916    break;
     
    78887919
    78897920/* Line 1806 of yacc.c  */
    7890 #line 2175 "parser.yy"
     7921#line 2181 "parser.yy"
    78917922    { delete (yyvsp[(1) - (1)].decl); }
    78927923    break;
     
    78957926
    78967927/* Line 1806 of yacc.c  */
    7897 #line 2176 "parser.yy"
     7928#line 2182 "parser.yy"
    78987929    { delete (yyvsp[(1) - (1)].decl); }
    78997930    break;
     
    79027933
    79037934/* Line 1806 of yacc.c  */
    7904 #line 2177 "parser.yy"
     7935#line 2183 "parser.yy"
    79057936    { delete (yyvsp[(1) - (1)].decl); }
    79067937    break;
     
    79097940
    79107941/* Line 1806 of yacc.c  */
    7911 #line 2212 "parser.yy"
     7942#line 2218 "parser.yy"
    79127943    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79137944    break;
     
    79167947
    79177948/* Line 1806 of yacc.c  */
    7918 #line 2215 "parser.yy"
     7949#line 2221 "parser.yy"
    79197950    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79207951    break;
     
    79237954
    79247955/* Line 1806 of yacc.c  */
    7925 #line 2217 "parser.yy"
     7956#line 2223 "parser.yy"
    79267957    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79277958    break;
     
    79307961
    79317962/* Line 1806 of yacc.c  */
    7932 #line 2222 "parser.yy"
     7963#line 2228 "parser.yy"
    79337964    {
    79347965                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    79407971
    79417972/* Line 1806 of yacc.c  */
    7942 #line 2227 "parser.yy"
     7973#line 2233 "parser.yy"
    79437974    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79447975    break;
     
    79477978
    79487979/* Line 1806 of yacc.c  */
    7949 #line 2232 "parser.yy"
     7980#line 2238 "parser.yy"
    79507981    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    79517982    break;
     
    79547985
    79557986/* Line 1806 of yacc.c  */
    7956 #line 2234 "parser.yy"
     7987#line 2240 "parser.yy"
    79577988    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    79587989    break;
     
    79617992
    79627993/* Line 1806 of yacc.c  */
    7963 #line 2236 "parser.yy"
     7994#line 2242 "parser.yy"
    79647995    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79657996    break;
     
    79687999
    79698000/* Line 1806 of yacc.c  */
    7970 #line 2241 "parser.yy"
     8001#line 2247 "parser.yy"
    79718002    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    79728003    break;
     
    79758006
    79768007/* Line 1806 of yacc.c  */
    7977 #line 2243 "parser.yy"
     8008#line 2249 "parser.yy"
    79788009    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    79798010    break;
     
    79828013
    79838014/* Line 1806 of yacc.c  */
    7984 #line 2245 "parser.yy"
     8015#line 2251 "parser.yy"
    79858016    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    79868017    break;
     
    79898020
    79908021/* Line 1806 of yacc.c  */
    7991 #line 2247 "parser.yy"
     8022#line 2253 "parser.yy"
    79928023    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79938024    break;
     
    79968027
    79978028/* Line 1806 of yacc.c  */
    7998 #line 2252 "parser.yy"
     8029#line 2258 "parser.yy"
    79998030    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80008031    break;
     
    80038034
    80048035/* Line 1806 of yacc.c  */
    8005 #line 2254 "parser.yy"
     8036#line 2260 "parser.yy"
    80068037    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80078038    break;
     
    80108041
    80118042/* Line 1806 of yacc.c  */
    8012 #line 2263 "parser.yy"
     8043#line 2269 "parser.yy"
    80138044    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80148045    break;
     
    80178048
    80188049/* Line 1806 of yacc.c  */
    8019 #line 2266 "parser.yy"
     8050#line 2272 "parser.yy"
    80208051    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80218052    break;
     
    80248055
    80258056/* Line 1806 of yacc.c  */
    8026 #line 2271 "parser.yy"
     8057#line 2277 "parser.yy"
    80278058    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    80288059    break;
     
    80318062
    80328063/* Line 1806 of yacc.c  */
    8033 #line 2273 "parser.yy"
     8064#line 2279 "parser.yy"
    80348065    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80358066    break;
     
    80388069
    80398070/* Line 1806 of yacc.c  */
    8040 #line 2275 "parser.yy"
     8071#line 2281 "parser.yy"
    80418072    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80428073    break;
     
    80458076
    80468077/* Line 1806 of yacc.c  */
    8047 #line 2280 "parser.yy"
     8078#line 2286 "parser.yy"
    80488079    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80498080    break;
     
    80528083
    80538084/* Line 1806 of yacc.c  */
    8054 #line 2282 "parser.yy"
     8085#line 2288 "parser.yy"
    80558086    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80568087    break;
     
    80598090
    80608091/* Line 1806 of yacc.c  */
    8061 #line 2284 "parser.yy"
     8092#line 2290 "parser.yy"
    80628093    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80638094    break;
     
    80668097
    80678098/* Line 1806 of yacc.c  */
    8068 #line 2289 "parser.yy"
     8099#line 2295 "parser.yy"
    80698100    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80708101    break;
     
    80738104
    80748105/* Line 1806 of yacc.c  */
    8075 #line 2291 "parser.yy"
     8106#line 2297 "parser.yy"
    80768107    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80778108    break;
     
    80808111
    80818112/* Line 1806 of yacc.c  */
    8082 #line 2293 "parser.yy"
     8113#line 2299 "parser.yy"
    80838114    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80848115    break;
     
    80878118
    80888119/* Line 1806 of yacc.c  */
    8089 #line 2308 "parser.yy"
     8120#line 2314 "parser.yy"
    80908121    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    80918122    break;
     
    80948125
    80958126/* Line 1806 of yacc.c  */
    8096 #line 2310 "parser.yy"
     8127#line 2316 "parser.yy"
    80978128    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    80988129    break;
     
    81018132
    81028133/* Line 1806 of yacc.c  */
    8103 #line 2312 "parser.yy"
     8134#line 2318 "parser.yy"
    81048135    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81058136    break;
     
    81088139
    81098140/* Line 1806 of yacc.c  */
    8110 #line 2317 "parser.yy"
     8141#line 2323 "parser.yy"
    81118142    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81128143    break;
     
    81158146
    81168147/* Line 1806 of yacc.c  */
    8117 #line 2319 "parser.yy"
     8148#line 2325 "parser.yy"
    81188149    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81198150    break;
     
    81228153
    81238154/* Line 1806 of yacc.c  */
    8124 #line 2321 "parser.yy"
     8155#line 2327 "parser.yy"
    81258156    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81268157    break;
     
    81298160
    81308161/* Line 1806 of yacc.c  */
    8131 #line 2326 "parser.yy"
     8162#line 2332 "parser.yy"
    81328163    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81338164    break;
     
    81368167
    81378168/* Line 1806 of yacc.c  */
    8138 #line 2328 "parser.yy"
     8169#line 2334 "parser.yy"
    81398170    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81408171    break;
     
    81438174
    81448175/* Line 1806 of yacc.c  */
    8145 #line 2330 "parser.yy"
     8176#line 2336 "parser.yy"
    81468177    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81478178    break;
     
    81508181
    81518182/* Line 1806 of yacc.c  */
    8152 #line 2345 "parser.yy"
     8183#line 2351 "parser.yy"
    81538184    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81548185    break;
     
    81578188
    81588189/* Line 1806 of yacc.c  */
    8159 #line 2348 "parser.yy"
     8190#line 2354 "parser.yy"
    81608191    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81618192    break;
     
    81648195
    81658196/* Line 1806 of yacc.c  */
    8166 #line 2350 "parser.yy"
     8197#line 2356 "parser.yy"
    81678198    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81688199    break;
     
    81718202
    81728203/* Line 1806 of yacc.c  */
    8173 #line 2356 "parser.yy"
     8204#line 2362 "parser.yy"
    81748205    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81758206    break;
     
    81788209
    81798210/* Line 1806 of yacc.c  */
    8180 #line 2361 "parser.yy"
     8211#line 2367 "parser.yy"
    81818212    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81828213    break;
     
    81858216
    81868217/* Line 1806 of yacc.c  */
    8187 #line 2363 "parser.yy"
     8218#line 2369 "parser.yy"
    81888219    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81898220    break;
     
    81928223
    81938224/* Line 1806 of yacc.c  */
    8194 #line 2365 "parser.yy"
     8225#line 2371 "parser.yy"
    81958226    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81968227    break;
     
    81998230
    82008231/* Line 1806 of yacc.c  */
    8201 #line 2370 "parser.yy"
     8232#line 2376 "parser.yy"
    82028233    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82038234    break;
     
    82068237
    82078238/* Line 1806 of yacc.c  */
    8208 #line 2372 "parser.yy"
     8239#line 2378 "parser.yy"
    82098240    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82108241    break;
     
    82138244
    82148245/* Line 1806 of yacc.c  */
    8215 #line 2374 "parser.yy"
     8246#line 2380 "parser.yy"
    82168247    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82178248    break;
     
    82208251
    82218252/* Line 1806 of yacc.c  */
    8222 #line 2376 "parser.yy"
     8253#line 2382 "parser.yy"
    82238254    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82248255    break;
     
    82278258
    82288259/* Line 1806 of yacc.c  */
    8229 #line 2381 "parser.yy"
     8260#line 2387 "parser.yy"
    82308261    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    82318262    break;
     
    82348265
    82358266/* Line 1806 of yacc.c  */
    8236 #line 2383 "parser.yy"
     8267#line 2389 "parser.yy"
    82378268    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    82388269    break;
     
    82418272
    82428273/* Line 1806 of yacc.c  */
    8243 #line 2385 "parser.yy"
     8274#line 2391 "parser.yy"
    82448275    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82458276    break;
     
    82488279
    82498280/* Line 1806 of yacc.c  */
    8250 #line 2395 "parser.yy"
     8281#line 2401 "parser.yy"
    82518282    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82528283    break;
     
    82558286
    82568287/* Line 1806 of yacc.c  */
    8257 #line 2398 "parser.yy"
     8288#line 2404 "parser.yy"
    82588289    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82598290    break;
     
    82628293
    82638294/* Line 1806 of yacc.c  */
    8264 #line 2400 "parser.yy"
     8295#line 2406 "parser.yy"
    82658296    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82668297    break;
     
    82698300
    82708301/* Line 1806 of yacc.c  */
    8271 #line 2405 "parser.yy"
     8302#line 2411 "parser.yy"
    82728303    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82738304    break;
     
    82768307
    82778308/* Line 1806 of yacc.c  */
    8278 #line 2407 "parser.yy"
     8309#line 2413 "parser.yy"
    82798310    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82808311    break;
     
    82838314
    82848315/* Line 1806 of yacc.c  */
    8285 #line 2409 "parser.yy"
     8316#line 2415 "parser.yy"
    82868317    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82878318    break;
     
    82908321
    82918322/* Line 1806 of yacc.c  */
    8292 #line 2414 "parser.yy"
     8323#line 2420 "parser.yy"
    82938324    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82948325    break;
     
    82978328
    82988329/* Line 1806 of yacc.c  */
    8299 #line 2416 "parser.yy"
     8330#line 2422 "parser.yy"
    83008331    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83018332    break;
     
    83048335
    83058336/* Line 1806 of yacc.c  */
    8306 #line 2418 "parser.yy"
     8337#line 2424 "parser.yy"
    83078338    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83088339    break;
     
    83118342
    83128343/* Line 1806 of yacc.c  */
    8313 #line 2420 "parser.yy"
     8344#line 2426 "parser.yy"
    83148345    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83158346    break;
     
    83188349
    83198350/* Line 1806 of yacc.c  */
    8320 #line 2425 "parser.yy"
     8351#line 2431 "parser.yy"
    83218352    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83228353    break;
     
    83258356
    83268357/* Line 1806 of yacc.c  */
    8327 #line 2427 "parser.yy"
     8358#line 2433 "parser.yy"
    83288359    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83298360    break;
     
    83328363
    83338364/* Line 1806 of yacc.c  */
    8334 #line 2429 "parser.yy"
     8365#line 2435 "parser.yy"
    83358366    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83368367    break;
     
    83398370
    83408371/* Line 1806 of yacc.c  */
    8341 #line 2460 "parser.yy"
     8372#line 2466 "parser.yy"
    83428373    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83438374    break;
     
    83468377
    83478378/* Line 1806 of yacc.c  */
    8348 #line 2463 "parser.yy"
     8379#line 2469 "parser.yy"
    83498380    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83508381    break;
     
    83538384
    83548385/* Line 1806 of yacc.c  */
    8355 #line 2465 "parser.yy"
     8386#line 2471 "parser.yy"
    83568387    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83578388    break;
     
    83608391
    83618392/* Line 1806 of yacc.c  */
    8362 #line 2470 "parser.yy"
     8393#line 2476 "parser.yy"
    83638394    {
    83648395                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    83708401
    83718402/* Line 1806 of yacc.c  */
    8372 #line 2475 "parser.yy"
     8403#line 2481 "parser.yy"
    83738404    {
    83748405                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    83808411
    83818412/* Line 1806 of yacc.c  */
    8382 #line 2483 "parser.yy"
     8413#line 2489 "parser.yy"
    83838414    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83848415    break;
     
    83878418
    83888419/* Line 1806 of yacc.c  */
    8389 #line 2485 "parser.yy"
     8420#line 2491 "parser.yy"
    83908421    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83918422    break;
     
    83948425
    83958426/* Line 1806 of yacc.c  */
    8396 #line 2487 "parser.yy"
     8427#line 2493 "parser.yy"
    83978428    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83988429    break;
     
    84018432
    84028433/* Line 1806 of yacc.c  */
    8403 #line 2492 "parser.yy"
     8434#line 2498 "parser.yy"
    84048435    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84058436    break;
     
    84088439
    84098440/* Line 1806 of yacc.c  */
    8410 #line 2494 "parser.yy"
     8441#line 2500 "parser.yy"
    84118442    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84128443    break;
     
    84158446
    84168447/* Line 1806 of yacc.c  */
    8417 #line 2499 "parser.yy"
     8448#line 2505 "parser.yy"
    84188449    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84198450    break;
     
    84228453
    84238454/* Line 1806 of yacc.c  */
    8424 #line 2501 "parser.yy"
     8455#line 2507 "parser.yy"
    84258456    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84268457    break;
     
    84298460
    84308461/* Line 1806 of yacc.c  */
    8431 #line 2516 "parser.yy"
     8462#line 2522 "parser.yy"
    84328463    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84338464    break;
     
    84368467
    84378468/* Line 1806 of yacc.c  */
    8438 #line 2518 "parser.yy"
     8469#line 2524 "parser.yy"
    84398470    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84408471    break;
     
    84438474
    84448475/* Line 1806 of yacc.c  */
    8445 #line 2523 "parser.yy"
     8476#line 2529 "parser.yy"
    84468477    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    84478478    break;
     
    84508481
    84518482/* Line 1806 of yacc.c  */
    8452 #line 2525 "parser.yy"
     8483#line 2531 "parser.yy"
    84538484    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    84548485    break;
     
    84578488
    84588489/* Line 1806 of yacc.c  */
    8459 #line 2527 "parser.yy"
     8490#line 2533 "parser.yy"
    84608491    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84618492    break;
     
    84648495
    84658496/* Line 1806 of yacc.c  */
    8466 #line 2529 "parser.yy"
     8497#line 2535 "parser.yy"
    84678498    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84688499    break;
     
    84718502
    84728503/* Line 1806 of yacc.c  */
    8473 #line 2531 "parser.yy"
     8504#line 2537 "parser.yy"
    84748505    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84758506    break;
     
    84788509
    84798510/* Line 1806 of yacc.c  */
    8480 #line 2537 "parser.yy"
     8511#line 2543 "parser.yy"
    84818512    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84828513    break;
     
    84858516
    84868517/* Line 1806 of yacc.c  */
    8487 #line 2539 "parser.yy"
     8518#line 2545 "parser.yy"
    84888519    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84898520    break;
     
    84928523
    84938524/* Line 1806 of yacc.c  */
    8494 #line 2541 "parser.yy"
     8525#line 2547 "parser.yy"
    84958526    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84968527    break;
     
    84998530
    85008531/* Line 1806 of yacc.c  */
    8501 #line 2546 "parser.yy"
     8532#line 2552 "parser.yy"
    85028533    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    85038534    break;
     
    85068537
    85078538/* Line 1806 of yacc.c  */
    8508 #line 2548 "parser.yy"
     8539#line 2554 "parser.yy"
    85098540    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85108541    break;
     
    85138544
    85148545/* Line 1806 of yacc.c  */
    8515 #line 2550 "parser.yy"
     8546#line 2556 "parser.yy"
    85168547    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85178548    break;
     
    85208551
    85218552/* Line 1806 of yacc.c  */
    8522 #line 2556 "parser.yy"
     8553#line 2562 "parser.yy"
    85238554    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    85248555    break;
     
    85278558
    85288559/* Line 1806 of yacc.c  */
    8529 #line 2558 "parser.yy"
     8560#line 2564 "parser.yy"
    85308561    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    85318562    break;
     
    85348565
    85358566/* Line 1806 of yacc.c  */
    8536 #line 2564 "parser.yy"
     8567#line 2570 "parser.yy"
    85378568    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    85388569    break;
     
    85418572
    85428573/* Line 1806 of yacc.c  */
    8543 #line 2566 "parser.yy"
     8574#line 2572 "parser.yy"
    85448575    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    85458576    break;
     
    85488579
    85498580/* Line 1806 of yacc.c  */
    8550 #line 2568 "parser.yy"
     8581#line 2574 "parser.yy"
    85518582    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    85528583    break;
     
    85558586
    85568587/* Line 1806 of yacc.c  */
    8557 #line 2570 "parser.yy"
     8588#line 2576 "parser.yy"
    85588589    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    85598590    break;
     
    85628593
    85638594/* Line 1806 of yacc.c  */
    8564 #line 2585 "parser.yy"
     8595#line 2591 "parser.yy"
    85658596    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85668597    break;
     
    85698600
    85708601/* Line 1806 of yacc.c  */
    8571 #line 2587 "parser.yy"
     8602#line 2593 "parser.yy"
    85728603    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85738604    break;
     
    85768607
    85778608/* Line 1806 of yacc.c  */
    8578 #line 2592 "parser.yy"
     8609#line 2598 "parser.yy"
    85798610    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85808611    break;
     
    85838614
    85848615/* Line 1806 of yacc.c  */
    8585 #line 2594 "parser.yy"
     8616#line 2600 "parser.yy"
    85868617    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85878618    break;
     
    85908621
    85918622/* Line 1806 of yacc.c  */
    8592 #line 2596 "parser.yy"
     8623#line 2602 "parser.yy"
    85938624    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85948625    break;
     
    85978628
    85988629/* Line 1806 of yacc.c  */
    8599 #line 2598 "parser.yy"
     8630#line 2604 "parser.yy"
    86008631    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86018632    break;
     
    86048635
    86058636/* Line 1806 of yacc.c  */
    8606 #line 2600 "parser.yy"
     8637#line 2606 "parser.yy"
    86078638    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86088639    break;
     
    86118642
    86128643/* Line 1806 of yacc.c  */
    8613 #line 2606 "parser.yy"
     8644#line 2612 "parser.yy"
    86148645    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86158646    break;
     
    86188649
    86198650/* Line 1806 of yacc.c  */
    8620 #line 2608 "parser.yy"
     8651#line 2614 "parser.yy"
    86218652    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86228653    break;
     
    86258656
    86268657/* Line 1806 of yacc.c  */
    8627 #line 2610 "parser.yy"
     8658#line 2616 "parser.yy"
    86288659    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86298660    break;
     
    86328663
    86338664/* Line 1806 of yacc.c  */
    8634 #line 2615 "parser.yy"
     8665#line 2621 "parser.yy"
    86358666    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    86368667    break;
     
    86398670
    86408671/* Line 1806 of yacc.c  */
    8641 #line 2617 "parser.yy"
     8672#line 2623 "parser.yy"
    86428673    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86438674    break;
     
    86468677
    86478678/* Line 1806 of yacc.c  */
    8648 #line 2619 "parser.yy"
     8679#line 2625 "parser.yy"
    86498680    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86508681    break;
     
    86538684
    86548685/* Line 1806 of yacc.c  */
    8655 #line 2626 "parser.yy"
     8686#line 2632 "parser.yy"
    86568687    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    86578688    break;
     
    86608691
    86618692/* Line 1806 of yacc.c  */
    8662 #line 2637 "parser.yy"
     8693#line 2643 "parser.yy"
    86638694    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86648695    break;
     
    86678698
    86688699/* Line 1806 of yacc.c  */
    8669 #line 2640 "parser.yy"
     8700#line 2646 "parser.yy"
    86708701    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    86718702    break;
     
    86748705
    86758706/* Line 1806 of yacc.c  */
    8676 #line 2642 "parser.yy"
     8707#line 2648 "parser.yy"
    86778708    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    86788709    break;
     
    86818712
    86828713/* Line 1806 of yacc.c  */
    8683 #line 2645 "parser.yy"
     8714#line 2651 "parser.yy"
    86848715    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    86858716    break;
     
    86888719
    86898720/* Line 1806 of yacc.c  */
    8690 #line 2647 "parser.yy"
     8721#line 2653 "parser.yy"
    86918722    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    86928723    break;
     
    86958726
    86968727/* Line 1806 of yacc.c  */
    8697 #line 2649 "parser.yy"
     8728#line 2655 "parser.yy"
    86988729    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    86998730    break;
     
    87028733
    87038734/* Line 1806 of yacc.c  */
    8704 #line 2663 "parser.yy"
     8735#line 2669 "parser.yy"
    87058736    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87068737    break;
     
    87098740
    87108741/* Line 1806 of yacc.c  */
    8711 #line 2665 "parser.yy"
     8742#line 2671 "parser.yy"
    87128743    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87138744    break;
     
    87168747
    87178748/* Line 1806 of yacc.c  */
    8718 #line 2670 "parser.yy"
     8749#line 2676 "parser.yy"
    87198750    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    87208751    break;
     
    87238754
    87248755/* Line 1806 of yacc.c  */
    8725 #line 2672 "parser.yy"
     8756#line 2678 "parser.yy"
    87268757    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87278758    break;
     
    87308761
    87318762/* Line 1806 of yacc.c  */
    8732 #line 2674 "parser.yy"
     8763#line 2680 "parser.yy"
    87338764    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87348765    break;
     
    87378768
    87388769/* Line 1806 of yacc.c  */
    8739 #line 2676 "parser.yy"
     8770#line 2682 "parser.yy"
    87408771    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87418772    break;
     
    87448775
    87458776/* Line 1806 of yacc.c  */
    8746 #line 2678 "parser.yy"
     8777#line 2684 "parser.yy"
    87478778    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87488779    break;
     
    87518782
    87528783/* Line 1806 of yacc.c  */
    8753 #line 2684 "parser.yy"
     8784#line 2690 "parser.yy"
    87548785    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87558786    break;
     
    87588789
    87598790/* Line 1806 of yacc.c  */
    8760 #line 2686 "parser.yy"
     8791#line 2692 "parser.yy"
    87618792    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87628793    break;
     
    87658796
    87668797/* Line 1806 of yacc.c  */
    8767 #line 2688 "parser.yy"
     8798#line 2694 "parser.yy"
    87688799    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87698800    break;
     
    87728803
    87738804/* Line 1806 of yacc.c  */
    8774 #line 2693 "parser.yy"
     8805#line 2699 "parser.yy"
    87758806    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87768807    break;
     
    87798810
    87808811/* Line 1806 of yacc.c  */
    8781 #line 2695 "parser.yy"
     8812#line 2701 "parser.yy"
    87828813    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87838814    break;
     
    87868817
    87878818/* Line 1806 of yacc.c  */
    8788 #line 2705 "parser.yy"
     8819#line 2711 "parser.yy"
    87898820    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    87908821    break;
     
    87938824
    87948825/* Line 1806 of yacc.c  */
    8795 #line 2715 "parser.yy"
     8826#line 2721 "parser.yy"
    87968827    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    87978828    break;
     
    88008831
    88018832/* Line 1806 of yacc.c  */
    8802 #line 2717 "parser.yy"
     8833#line 2723 "parser.yy"
    88038834    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88048835    break;
     
    88078838
    88088839/* Line 1806 of yacc.c  */
    8809 #line 2719 "parser.yy"
     8840#line 2725 "parser.yy"
    88108841    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88118842    break;
     
    88148845
    88158846/* Line 1806 of yacc.c  */
    8816 #line 2721 "parser.yy"
     8847#line 2727 "parser.yy"
    88178848    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88188849    break;
     
    88218852
    88228853/* Line 1806 of yacc.c  */
    8823 #line 2723 "parser.yy"
     8854#line 2729 "parser.yy"
    88248855    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88258856    break;
     
    88288859
    88298860/* Line 1806 of yacc.c  */
    8830 #line 2725 "parser.yy"
     8861#line 2731 "parser.yy"
    88318862    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88328863    break;
     
    88358866
    88368867/* Line 1806 of yacc.c  */
    8837 #line 2732 "parser.yy"
     8868#line 2738 "parser.yy"
    88388869    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88398870    break;
    88408871
    88418872  case 719:
    8842 
    8843 /* Line 1806 of yacc.c  */
    8844 #line 2734 "parser.yy"
    8845     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8846     break;
    8847 
    8848   case 720:
    8849 
    8850 /* Line 1806 of yacc.c  */
    8851 #line 2736 "parser.yy"
    8852     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8853     break;
    8854 
    8855   case 721:
    8856 
    8857 /* Line 1806 of yacc.c  */
    8858 #line 2738 "parser.yy"
    8859     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8860     break;
    8861 
    8862   case 722:
    88638873
    88648874/* Line 1806 of yacc.c  */
     
    88678877    break;
    88688878
     8879  case 720:
     8880
     8881/* Line 1806 of yacc.c  */
     8882#line 2742 "parser.yy"
     8883    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8884    break;
     8885
     8886  case 721:
     8887
     8888/* Line 1806 of yacc.c  */
     8889#line 2744 "parser.yy"
     8890    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8891    break;
     8892
     8893  case 722:
     8894
     8895/* Line 1806 of yacc.c  */
     8896#line 2746 "parser.yy"
     8897    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8898    break;
     8899
    88698900  case 723:
    88708901
    88718902/* Line 1806 of yacc.c  */
    8872 #line 2743 "parser.yy"
     8903#line 2749 "parser.yy"
    88738904    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88748905    break;
    88758906
    88768907  case 724:
    8877 
    8878 /* Line 1806 of yacc.c  */
    8879 #line 2745 "parser.yy"
    8880     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    8881     break;
    8882 
    8883   case 725:
    8884 
    8885 /* Line 1806 of yacc.c  */
    8886 #line 2747 "parser.yy"
    8887     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    8888     break;
    8889 
    8890   case 726:
    8891 
    8892 /* Line 1806 of yacc.c  */
    8893 #line 2749 "parser.yy"
    8894     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    8895     break;
    8896 
    8897   case 727:
    88988908
    88998909/* Line 1806 of yacc.c  */
     
    89028912    break;
    89038913
     8914  case 725:
     8915
     8916/* Line 1806 of yacc.c  */
     8917#line 2753 "parser.yy"
     8918    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     8919    break;
     8920
     8921  case 726:
     8922
     8923/* Line 1806 of yacc.c  */
     8924#line 2755 "parser.yy"
     8925    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     8926    break;
     8927
     8928  case 727:
     8929
     8930/* Line 1806 of yacc.c  */
     8931#line 2757 "parser.yy"
     8932    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     8933    break;
     8934
    89048935  case 728:
    89058936
    89068937/* Line 1806 of yacc.c  */
    8907 #line 2756 "parser.yy"
     8938#line 2762 "parser.yy"
    89088939    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    89098940    break;
     
    89128943
    89138944/* Line 1806 of yacc.c  */
    8914 #line 2758 "parser.yy"
     8945#line 2764 "parser.yy"
    89158946    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    89168947    break;
     
    89198950
    89208951/* Line 1806 of yacc.c  */
    8921 #line 2763 "parser.yy"
     8952#line 2769 "parser.yy"
    89228953    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    89238954    break;
     
    89268957
    89278958/* Line 1806 of yacc.c  */
    8928 #line 2765 "parser.yy"
     8959#line 2771 "parser.yy"
    89298960    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    89308961    break;
     
    89338964
    89348965/* Line 1806 of yacc.c  */
    8935 #line 2792 "parser.yy"
     8966#line 2798 "parser.yy"
    89368967    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89378968    break;
     
    89408971
    89418972/* Line 1806 of yacc.c  */
    8942 #line 2803 "parser.yy"
     8973#line 2809 "parser.yy"
    89438974    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89448975    break;
     
    89478978
    89488979/* Line 1806 of yacc.c  */
    8949 #line 2805 "parser.yy"
     8980#line 2811 "parser.yy"
    89508981    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89518982    break;
     
    89548985
    89558986/* Line 1806 of yacc.c  */
    8956 #line 2807 "parser.yy"
     8987#line 2813 "parser.yy"
    89578988    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89588989    break;
     
    89618992
    89628993/* Line 1806 of yacc.c  */
    8963 #line 2809 "parser.yy"
     8994#line 2815 "parser.yy"
    89648995    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89658996    break;
     
    89688999
    89699000/* Line 1806 of yacc.c  */
    8970 #line 2811 "parser.yy"
     9001#line 2817 "parser.yy"
    89719002    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89729003    break;
     
    89759006
    89769007/* Line 1806 of yacc.c  */
    8977 #line 2813 "parser.yy"
     9008#line 2819 "parser.yy"
    89789009    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89799010    break;
    89809011
    89819012  case 743:
    8982 
    8983 /* Line 1806 of yacc.c  */
    8984 #line 2820 "parser.yy"
    8985     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    8986     break;
    8987 
    8988   case 744:
    8989 
    8990 /* Line 1806 of yacc.c  */
    8991 #line 2822 "parser.yy"
    8992     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    8993     break;
    8994 
    8995   case 745:
    8996 
    8997 /* Line 1806 of yacc.c  */
    8998 #line 2824 "parser.yy"
    8999     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    9000     break;
    9001 
    9002   case 746:
    90039013
    90049014/* Line 1806 of yacc.c  */
     
    90079017    break;
    90089018
    9009   case 747:
     9019  case 744:
    90109020
    90119021/* Line 1806 of yacc.c  */
     
    90149024    break;
    90159025
    9016   case 748:
     9026  case 745:
    90179027
    90189028/* Line 1806 of yacc.c  */
     
    90219031    break;
    90229032
     9033  case 746:
     9034
     9035/* Line 1806 of yacc.c  */
     9036#line 2832 "parser.yy"
     9037    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9038    break;
     9039
     9040  case 747:
     9041
     9042/* Line 1806 of yacc.c  */
     9043#line 2834 "parser.yy"
     9044    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
     9045    break;
     9046
     9047  case 748:
     9048
     9049/* Line 1806 of yacc.c  */
     9050#line 2836 "parser.yy"
     9051    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     9052    break;
     9053
    90239054  case 749:
    90249055
    90259056/* Line 1806 of yacc.c  */
    9026 #line 2835 "parser.yy"
     9057#line 2841 "parser.yy"
    90279058    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    90289059    break;
     
    90319062
    90329063/* Line 1806 of yacc.c  */
    9033 #line 2842 "parser.yy"
     9064#line 2848 "parser.yy"
    90349065    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    90359066    break;
     
    90389069
    90399070/* Line 1806 of yacc.c  */
    9040 #line 2844 "parser.yy"
     9071#line 2850 "parser.yy"
    90419072    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    90429073    break;
     
    90459076
    90469077/* Line 1806 of yacc.c  */
    9047 #line 2868 "parser.yy"
     9078#line 2874 "parser.yy"
    90489079    { (yyval.en) = 0; }
    90499080    break;
     
    90529083
    90539084/* Line 1806 of yacc.c  */
    9054 #line 2870 "parser.yy"
     9085#line 2876 "parser.yy"
    90559086    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    90569087    break;
     
    90599090
    90609091/* Line 1806 of yacc.c  */
    9061 #line 9062 "Parser/parser.cc"
     9092#line 9093 "Parser/parser.cc"
    90629093      default: break;
    90639094    }
     
    92909321
    92919322/* Line 2067 of yacc.c  */
    9292 #line 2873 "parser.yy"
     9323#line 2879 "parser.yy"
    92939324
    92949325// ----end of grammar----
Note: See TracChangeset for help on using the changeset viewer.