Changeset 3b5e3aa


Ignore:
Timestamp:
Sep 24, 2016, 12:21:02 PM (5 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
aaron-thesis, arm-eh, cleanup-dtors, deferred_resn, demangler, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, resolv-new, with_gc
Children:
fb114fa1
Parents:
9c23f31
Message:

add parser.cc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.cc

    r9c23f31 r3b5e3aa  
    8282#include "TypeData.h"
    8383#include "LinkageSpec.h"
     84using namespace std;
    8485
    8586extern DeclarationNode * parseTree;
     
    8788extern TypedefTable typedefTable;
    8889
    89 std::stack< LinkageSpec::Spec > linkageStack;
    90 
    91 void appendStr( std::string *to, std::string *from ) {
     90stack< LinkageSpec::Spec > linkageStack;
     91
     92void appendStr( string *to, string *from ) {
    9293        // "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
    9394        to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) );
     
    9697
    9798/* Line 268 of yacc.c  */
    98 #line 99 "Parser/parser.cc"
     99#line 100 "Parser/parser.cc"
    99100
    100101/* Enabling traces.  */
     
    347348
    348349/* Line 293 of yacc.c  */
    349 #line 115 "parser.yy"
     350#line 116 "parser.yy"
    350351
    351352        Token tok;
     
    367368
    368369/* Line 293 of yacc.c  */
    369 #line 370 "Parser/parser.cc"
     370#line 371 "Parser/parser.cc"
    370371} YYSTYPE;
    371372# define YYSTYPE_IS_TRIVIAL 1
     
    379380
    380381/* Line 343 of yacc.c  */
    381 #line 382 "Parser/parser.cc"
     382#line 383 "Parser/parser.cc"
    382383
    383384#ifdef short
     
    10211022static const yytype_uint16 yyrline[] =
    10221023{
    1023        0,   300,   300,   304,   311,   312,   313,   317,   318,   319,
    1024      323,   324,   328,   329,   333,   334,   338,   342,   343,   354,
    1025      356,   358,   360,   365,   366,   372,   376,   378,   379,   381,
    1026      382,   384,   386,   388,   397,   398,   404,   405,   409,   410,
    1027      414,   418,   420,   422,   424,   429,   432,   434,   436,   441,
    1028      454,   456,   458,   460,   462,   464,   466,   468,   470,   472,
    1029      474,   481,   482,   488,   489,   490,   491,   495,   496,   498,
    1030      503,   504,   506,   508,   513,   514,   516,   521,   522,   524,
    1031      529,   530,   532,   534,   536,   541,   542,   544,   549,   550,
    1032      555,   556,   561,   562,   567,   568,   573,   574,   579,   580,
    1033      583,   585,   590,   595,   596,   598,   604,   605,   609,   610,
    1034      611,   612,   613,   614,   615,   616,   617,   618,   619,   620,
    1035      626,   628,   630,   632,   637,   638,   643,   644,   650,   651,
    1036      657,   658,   659,   660,   661,   662,   663,   664,   665,   675,
    1037      682,   684,   694,   695,   700,   702,   708,   710,   714,   715,
    1038      720,   725,   728,   730,   732,   742,   744,   755,   756,   758,
    1039      762,   764,   768,   769,   774,   775,   779,   784,   785,   789,
    1040      791,   797,   798,   802,   804,   806,   808,   814,   815,   819,
    1041      821,   826,   828,   830,   835,   837,   842,   844,   848,   851,
    1042      855,   858,   862,   864,   866,   868,   873,   875,   877,   882,
    1043      884,   886,   888,   890,   895,   897,   899,   901,   906,   918,
    1044      919,   924,   926,   931,   935,   937,   939,   941,   943,   949,
    1045      950,   956,   957,   961,   962,   967,   969,   975,   976,   978,
    1046      983,   988,   998,  1000,  1004,  1005,  1010,  1012,  1016,  1017,
    1047     1021,  1023,  1027,  1028,  1032,  1033,  1037,  1038,  1053,  1054,
    1048     1055,  1056,  1057,  1061,  1066,  1073,  1083,  1088,  1093,  1101,
    1049     1106,  1111,  1116,  1121,  1129,  1151,  1156,  1163,  1165,  1172,
    1050     1177,  1182,  1193,  1198,  1203,  1208,  1213,  1222,  1227,  1235,
    1051     1236,  1237,  1238,  1244,  1249,  1257,  1258,  1259,  1260,  1264,
    1052     1265,  1266,  1267,  1272,  1273,  1282,  1283,  1288,  1289,  1294,
    1053     1296,  1298,  1300,  1302,  1305,  1304,  1316,  1317,  1319,  1329,
    1054     1330,  1335,  1337,  1339,  1341,  1343,  1346,  1348,  1351,  1356,
    1055     1358,  1360,  1362,  1364,  1366,  1368,  1370,  1372,  1374,  1376,
    1056     1378,  1380,  1386,  1387,  1389,  1391,  1393,  1398,  1399,  1405,
    1057     1406,  1408,  1410,  1415,  1417,  1419,  1421,  1426,  1427,  1429,
    1058     1431,  1436,  1437,  1439,  1444,  1445,  1447,  1449,  1454,  1456,
    1059     1458,  1463,  1464,  1468,  1470,  1476,  1475,  1479,  1481,  1486,
    1060     1488,  1494,  1495,  1500,  1501,  1503,  1504,  1513,  1514,  1516,
    1061     1518,  1523,  1525,  1531,  1532,  1534,  1537,  1540,  1545,  1546,
    1062     1551,  1556,  1560,  1562,  1568,  1567,  1574,  1576,  1582,  1583,
    1063     1591,  1592,  1596,  1597,  1598,  1600,  1602,  1609,  1610,  1612,
    1064     1614,  1619,  1620,  1626,  1627,  1631,  1632,  1637,  1638,  1639,
    1065     1641,  1649,  1650,  1652,  1655,  1657,  1661,  1662,  1663,  1665,
    1066     1667,  1671,  1676,  1684,  1685,  1694,  1696,  1701,  1702,  1703,
    1067     1707,  1708,  1709,  1713,  1714,  1715,  1719,  1720,  1721,  1726,
    1068     1727,  1728,  1729,  1735,  1736,  1738,  1743,  1744,  1749,  1750,
    1069     1751,  1752,  1753,  1768,  1769,  1774,  1775,  1781,  1783,  1786,
    1070     1788,  1790,  1813,  1814,  1816,  1818,  1823,  1824,  1826,  1831,
    1071     1836,  1837,  1843,  1842,  1846,  1850,  1852,  1854,  1860,  1861,
    1072     1866,  1871,  1873,  1878,  1880,  1881,  1883,  1888,  1890,  1892,
    1073     1897,  1899,  1904,  1909,  1917,  1923,  1922,  1936,  1937,  1942,
    1074     1943,  1947,  1952,  1957,  1965,  1970,  1981,  1982,  1987,  1988,
    1075     1994,  1995,  1999,  2000,  2001,  2004,  2003,  2014,  2023,  2029,
    1076     2035,  2044,  2050,  2056,  2062,  2068,  2076,  2082,  2090,  2096,
    1077     2105,  2106,  2107,  2111,  2115,  2117,  2122,  2123,  2127,  2128,
    1078     2133,  2139,  2140,  2143,  2145,  2146,  2150,  2151,  2152,  2153,
    1079     2187,  2189,  2190,  2192,  2197,  2202,  2207,  2209,  2211,  2216,
    1080     2218,  2220,  2222,  2227,  2229,  2238,  2240,  2241,  2246,  2248,
    1081     2250,  2255,  2257,  2259,  2264,  2266,  2268,  2277,  2278,  2279,
    1082     2283,  2285,  2287,  2292,  2294,  2296,  2301,  2303,  2305,  2320,
    1083     2322,  2323,  2325,  2330,  2331,  2336,  2338,  2340,  2345,  2347,
    1084     2349,  2351,  2356,  2358,  2360,  2370,  2372,  2373,  2375,  2380,
    1085     2382,  2384,  2389,  2391,  2393,  2395,  2400,  2402,  2404,  2435,
    1086     2437,  2438,  2440,  2445,  2450,  2458,  2460,  2462,  2467,  2469,
    1087     2474,  2476,  2490,  2491,  2493,  2498,  2500,  2502,  2504,  2506,
    1088     2511,  2512,  2514,  2516,  2521,  2523,  2525,  2531,  2533,  2535,
    1089     2539,  2541,  2543,  2545,  2559,  2560,  2562,  2567,  2569,  2571,
    1090     2573,  2575,  2580,  2581,  2583,  2585,  2590,  2592,  2594,  2600,
    1091     2601,  2603,  2612,  2615,  2617,  2620,  2622,  2624,  2637,  2638,
    1092     2640,  2645,  2647,  2649,  2651,  2653,  2658,  2659,  2661,  2663,
    1093     2668,  2670,  2678,  2679,  2680,  2685,  2686,  2690,  2692,  2694,
    1094     2696,  2698,  2700,  2707,  2709,  2711,  2713,  2715,  2717,  2719,
    1095     2721,  2723,  2725,  2730,  2732,  2734,  2739,  2765,  2766,  2768,
    1096     2772,  2773,  2777,  2779,  2781,  2783,  2785,  2787,  2794,  2796,
    1097     2798,  2800,  2802,  2804,  2809,  2814,  2816,  2818,  2836,  2838,
    1098     2843,  2844
     1024       0,   301,   301,   305,   312,   313,   314,   318,   319,   320,
     1025     324,   325,   329,   330,   334,   335,   339,   343,   344,   355,
     1026     357,   359,   361,   366,   367,   373,   377,   379,   380,   382,
     1027     383,   385,   387,   389,   398,   399,   405,   406,   410,   411,
     1028     415,   419,   421,   423,   425,   430,   433,   435,   437,   442,
     1029     455,   457,   459,   461,   463,   465,   467,   469,   471,   473,
     1030     475,   482,   483,   489,   490,   491,   492,   496,   497,   499,
     1031     504,   505,   507,   509,   514,   515,   517,   522,   523,   525,
     1032     530,   531,   533,   535,   537,   542,   543,   545,   550,   551,
     1033     556,   557,   562,   563,   568,   569,   574,   575,   580,   581,
     1034     584,   586,   591,   596,   597,   599,   605,   606,   610,   611,
     1035     612,   613,   614,   615,   616,   617,   618,   619,   620,   621,
     1036     627,   629,   631,   633,   638,   639,   644,   645,   651,   652,
     1037     658,   659,   660,   661,   662,   663,   664,   665,   666,   676,
     1038     683,   685,   695,   696,   701,   703,   709,   711,   715,   716,
     1039     721,   726,   729,   731,   733,   743,   745,   756,   757,   759,
     1040     763,   765,   769,   770,   775,   776,   780,   785,   786,   790,
     1041     792,   798,   799,   803,   805,   807,   809,   815,   816,   820,
     1042     822,   827,   829,   831,   836,   838,   843,   845,   849,   852,
     1043     856,   859,   863,   865,   867,   869,   874,   876,   878,   883,
     1044     885,   887,   889,   891,   896,   898,   900,   902,   907,   919,
     1045     920,   925,   927,   932,   936,   938,   940,   942,   944,   950,
     1046     951,   957,   958,   962,   963,   968,   970,   976,   977,   979,
     1047     984,   989,   999,  1001,  1005,  1006,  1011,  1013,  1017,  1018,
     1048    1022,  1024,  1028,  1029,  1033,  1034,  1038,  1039,  1054,  1055,
     1049    1056,  1057,  1058,  1062,  1067,  1074,  1084,  1089,  1094,  1102,
     1050    1107,  1112,  1117,  1122,  1130,  1152,  1157,  1164,  1166,  1173,
     1051    1178,  1183,  1194,  1199,  1204,  1209,  1214,  1223,  1228,  1236,
     1052    1237,  1238,  1239,  1245,  1250,  1258,  1259,  1260,  1261,  1265,
     1053    1266,  1267,  1268,  1273,  1274,  1283,  1284,  1289,  1290,  1295,
     1054    1297,  1299,  1301,  1303,  1306,  1305,  1317,  1318,  1320,  1330,
     1055    1331,  1336,  1338,  1340,  1342,  1344,  1347,  1349,  1352,  1357,
     1056    1359,  1361,  1363,  1365,  1367,  1369,  1371,  1373,  1375,  1377,
     1057    1379,  1381,  1387,  1388,  1390,  1392,  1394,  1399,  1400,  1406,
     1058    1407,  1409,  1411,  1416,  1418,  1420,  1422,  1427,  1428,  1430,
     1059    1432,  1437,  1438,  1440,  1445,  1446,  1448,  1450,  1455,  1457,
     1060    1459,  1464,  1465,  1469,  1471,  1477,  1476,  1480,  1482,  1487,
     1061    1489,  1495,  1496,  1501,  1502,  1504,  1505,  1514,  1515,  1517,
     1062    1519,  1524,  1526,  1532,  1533,  1535,  1538,  1541,  1546,  1547,
     1063    1552,  1557,  1561,  1563,  1569,  1568,  1575,  1577,  1583,  1584,
     1064    1592,  1593,  1597,  1598,  1599,  1601,  1603,  1610,  1611,  1613,
     1065    1615,  1620,  1621,  1627,  1628,  1632,  1633,  1638,  1639,  1640,
     1066    1642,  1650,  1651,  1653,  1656,  1658,  1662,  1663,  1664,  1666,
     1067    1668,  1672,  1677,  1685,  1686,  1695,  1697,  1702,  1703,  1704,
     1068    1708,  1709,  1710,  1714,  1715,  1716,  1720,  1721,  1722,  1727,
     1069    1728,  1729,  1730,  1736,  1737,  1739,  1744,  1745,  1750,  1751,
     1070    1752,  1753,  1754,  1769,  1770,  1775,  1776,  1782,  1784,  1787,
     1071    1789,  1791,  1814,  1815,  1817,  1819,  1824,  1825,  1827,  1832,
     1072    1837,  1838,  1844,  1843,  1847,  1851,  1853,  1855,  1861,  1862,
     1073    1867,  1872,  1874,  1879,  1881,  1882,  1884,  1889,  1891,  1893,
     1074    1898,  1900,  1905,  1910,  1918,  1924,  1923,  1937,  1938,  1943,
     1075    1944,  1948,  1953,  1958,  1966,  1971,  1982,  1983,  1988,  1989,
     1076    1995,  1996,  2000,  2001,  2002,  2005,  2004,  2015,  2024,  2030,
     1077    2036,  2045,  2051,  2057,  2063,  2069,  2077,  2083,  2091,  2097,
     1078    2106,  2107,  2108,  2112,  2116,  2118,  2123,  2124,  2128,  2129,
     1079    2134,  2140,  2141,  2144,  2146,  2147,  2151,  2152,  2153,  2154,
     1080    2188,  2190,  2191,  2193,  2198,  2203,  2208,  2210,  2212,  2217,
     1081    2219,  2221,  2223,  2228,  2230,  2239,  2241,  2242,  2247,  2249,
     1082    2251,  2256,  2258,  2260,  2265,  2267,  2269,  2278,  2279,  2280,
     1083    2284,  2286,  2288,  2293,  2295,  2297,  2302,  2304,  2306,  2321,
     1084    2323,  2324,  2326,  2331,  2332,  2337,  2339,  2341,  2346,  2348,
     1085    2350,  2352,  2357,  2359,  2361,  2371,  2373,  2374,  2376,  2381,
     1086    2383,  2385,  2390,  2392,  2394,  2396,  2401,  2403,  2405,  2436,
     1087    2438,  2439,  2441,  2446,  2451,  2459,  2461,  2463,  2468,  2470,
     1088    2475,  2477,  2491,  2492,  2494,  2499,  2501,  2503,  2505,  2507,
     1089    2512,  2513,  2515,  2517,  2522,  2524,  2526,  2532,  2534,  2536,
     1090    2540,  2542,  2544,  2546,  2560,  2561,  2563,  2568,  2570,  2572,
     1091    2574,  2576,  2581,  2582,  2584,  2586,  2591,  2593,  2595,  2601,
     1092    2602,  2604,  2613,  2616,  2618,  2621,  2623,  2625,  2638,  2639,
     1093    2641,  2646,  2648,  2650,  2652,  2654,  2659,  2660,  2662,  2664,
     1094    2669,  2671,  2679,  2680,  2681,  2686,  2687,  2691,  2693,  2695,
     1095    2697,  2699,  2701,  2708,  2710,  2712,  2714,  2716,  2718,  2720,
     1096    2722,  2724,  2726,  2731,  2733,  2735,  2740,  2766,  2767,  2769,
     1097    2773,  2774,  2778,  2780,  2782,  2784,  2786,  2788,  2795,  2797,
     1098    2799,  2801,  2803,  2805,  2810,  2815,  2817,  2819,  2837,  2839,
     1099    2844,  2845
    10991100};
    11001101#endif
     
    49714972
    49724973/* Line 1806 of yacc.c  */
    4973 #line 300 "parser.yy"
     4974#line 301 "parser.yy"
    49744975    { typedefTable.enterScope(); }
    49754976    break;
     
    49784979
    49794980/* Line 1806 of yacc.c  */
    4980 #line 304 "parser.yy"
     4981#line 305 "parser.yy"
    49814982    { typedefTable.leaveScope(); }
    49824983    break;
     
    49854986
    49864987/* Line 1806 of yacc.c  */
    4987 #line 311 "parser.yy"
     4988#line 312 "parser.yy"
    49884989    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
    49894990    break;
     
    49924993
    49934994/* Line 1806 of yacc.c  */
    4994 #line 312 "parser.yy"
     4995#line 313 "parser.yy"
    49954996    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
    49964997    break;
     
    49995000
    50005001/* Line 1806 of yacc.c  */
    5001 #line 313 "parser.yy"
     5002#line 314 "parser.yy"
    50025003    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
    50035004    break;
     
    50065007
    50075008/* Line 1806 of yacc.c  */
    5008 #line 338 "parser.yy"
     5009#line 339 "parser.yy"
    50095010    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
    50105011    break;
     
    50135014
    50145015/* Line 1806 of yacc.c  */
    5015 #line 342 "parser.yy"
     5016#line 343 "parser.yy"
    50165017    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
    50175018    break;
     
    50205021
    50215022/* Line 1806 of yacc.c  */
    5022 #line 344 "parser.yy"
     5023#line 345 "parser.yy"
    50235024    {
    50245025                        appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );                                            // append 2nd juxtaposed string to 1st
     
    50315032
    50325033/* Line 1806 of yacc.c  */
    5033 #line 355 "parser.yy"
     5034#line 356 "parser.yy"
    50345035    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50355036    break;
     
    50385039
    50395040/* Line 1806 of yacc.c  */
    5040 #line 357 "parser.yy"
     5041#line 358 "parser.yy"
    50415042    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    50425043    break;
     
    50455046
    50465047/* Line 1806 of yacc.c  */
    5047 #line 359 "parser.yy"
     5048#line 360 "parser.yy"
    50485049    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    50495050    break;
     
    50525053
    50535054/* Line 1806 of yacc.c  */
    5054 #line 361 "parser.yy"
     5055#line 362 "parser.yy"
    50555056    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
    50565057    break;
     
    50595060
    50605061/* Line 1806 of yacc.c  */
    5061 #line 371 "parser.yy"
     5062#line 372 "parser.yy"
    50625063    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
    50635064    break;
     
    50665067
    50675068/* Line 1806 of yacc.c  */
    5068 #line 373 "parser.yy"
     5069#line 374 "parser.yy"
    50695070    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
    50705071    break;
     
    50735074
    50745075/* Line 1806 of yacc.c  */
    5075 #line 377 "parser.yy"
     5076#line 378 "parser.yy"
    50765077    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50775078    break;
     
    50805081
    50815082/* Line 1806 of yacc.c  */
    5082 #line 380 "parser.yy"
     5083#line 381 "parser.yy"
    50835084    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
    50845085    break;
     
    50875088
    50885089/* Line 1806 of yacc.c  */
    5089 #line 383 "parser.yy"
     5090#line 384 "parser.yy"
    50905091    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
    50915092    break;
     
    50945095
    50955096/* Line 1806 of yacc.c  */
    5096 #line 385 "parser.yy"
     5097#line 386 "parser.yy"
    50975098    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
    50985099    break;
     
    51015102
    51025103/* Line 1806 of yacc.c  */
    5103 #line 387 "parser.yy"
     5104#line 388 "parser.yy"
    51045105    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
    51055106    break;
     
    51085109
    51095110/* Line 1806 of yacc.c  */
    5110 #line 389 "parser.yy"
     5111#line 390 "parser.yy"
    51115112    {
    51125113                        Token fn;
    5113                         fn.str = new std::string( "?{}" ); // location undefined - use location of '{'?
     5114                        fn.str = new std::string( "?{}" );                      // location undefined - use location of '{'?
    51145115                        (yyval.en) = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) ) );
    51155116                }
     
    51195120
    51205121/* Line 1806 of yacc.c  */
    5121 #line 399 "parser.yy"
     5122#line 400 "parser.yy"
    51225123    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    51235124    break;
     
    51265127
    51275128/* Line 1806 of yacc.c  */
    5128 #line 404 "parser.yy"
     5129#line 405 "parser.yy"
    51295130    { (yyval.en) = 0; }
    51305131    break;
     
    51335134
    51345135/* Line 1806 of yacc.c  */
    5135 #line 410 "parser.yy"
     5136#line 411 "parser.yy"
    51365137    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    51375138    break;
     
    51405141
    51415142/* Line 1806 of yacc.c  */
    5142 #line 415 "parser.yy"
     5143#line 416 "parser.yy"
    51435144    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
    51445145    break;
     
    51475148
    51485149/* Line 1806 of yacc.c  */
    5149 #line 419 "parser.yy"
     5150#line 420 "parser.yy"
    51505151    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51515152    break;
     
    51545155
    51555156/* Line 1806 of yacc.c  */
    5156 #line 421 "parser.yy"
     5157#line 422 "parser.yy"
    51575158    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51585159    break;
     
    51615162
    51625163/* Line 1806 of yacc.c  */
    5163 #line 423 "parser.yy"
     5164#line 424 "parser.yy"
    51645165    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
    51655166    break;
     
    51685169
    51695170/* Line 1806 of yacc.c  */
    5170 #line 425 "parser.yy"
     5171#line 426 "parser.yy"
    51715172    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
    51725173    break;
     
    51755176
    51765177/* Line 1806 of yacc.c  */
    5177 #line 433 "parser.yy"
     5178#line 434 "parser.yy"
    51785179    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    51795180    break;
     
    51825183
    51835184/* Line 1806 of yacc.c  */
    5184 #line 435 "parser.yy"
     5185#line 436 "parser.yy"
    51855186    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    51865187    break;
     
    51895190
    51905191/* Line 1806 of yacc.c  */
    5191 #line 437 "parser.yy"
     5192#line 438 "parser.yy"
    51925193    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
    51935194    break;
     
    51965197
    51975198/* Line 1806 of yacc.c  */
    5198 #line 442 "parser.yy"
     5199#line 443 "parser.yy"
    51995200    {
    52005201                        switch ( (yyvsp[(1) - (2)].op) ) {
     
    52145215
    52155216/* Line 1806 of yacc.c  */
    5216 #line 455 "parser.yy"
     5217#line 456 "parser.yy"
    52175218    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
    52185219    break;
     
    52215222
    52225223/* Line 1806 of yacc.c  */
    5223 #line 457 "parser.yy"
     5224#line 458 "parser.yy"
    52245225    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
    52255226    break;
     
    52285229
    52295230/* Line 1806 of yacc.c  */
    5230 #line 459 "parser.yy"
     5231#line 460 "parser.yy"
    52315232    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
    52325233    break;
     
    52355236
    52365237/* Line 1806 of yacc.c  */
    5237 #line 461 "parser.yy"
     5238#line 462 "parser.yy"
    52385239    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52395240    break;
     
    52425243
    52435244/* Line 1806 of yacc.c  */
    5244 #line 463 "parser.yy"
     5245#line 464 "parser.yy"
    52455246    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52465247    break;
     
    52495250
    52505251/* Line 1806 of yacc.c  */
    5251 #line 465 "parser.yy"
     5252#line 466 "parser.yy"
    52525253    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
    52535254    break;
     
    52565257
    52575258/* Line 1806 of yacc.c  */
    5258 #line 467 "parser.yy"
     5259#line 468 "parser.yy"
    52595260    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
    52605261    break;
     
    52635264
    52645265/* Line 1806 of yacc.c  */
    5265 #line 469 "parser.yy"
     5266#line 470 "parser.yy"
    52665267    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
    52675268    break;
     
    52705271
    52715272/* Line 1806 of yacc.c  */
    5272 #line 471 "parser.yy"
     5273#line 472 "parser.yy"
    52735274    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
    52745275    break;
     
    52775278
    52785279/* Line 1806 of yacc.c  */
    5279 #line 473 "parser.yy"
     5280#line 474 "parser.yy"
    52805281    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
    52815282    break;
     
    52845285
    52855286/* Line 1806 of yacc.c  */
    5286 #line 475 "parser.yy"
     5287#line 476 "parser.yy"
    52875288    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
    52885289    break;
     
    52915292
    52925293/* Line 1806 of yacc.c  */
    5293 #line 481 "parser.yy"
     5294#line 482 "parser.yy"
    52945295    { (yyval.op) = OperKinds::PointTo; }
    52955296    break;
     
    52985299
    52995300/* Line 1806 of yacc.c  */
    5300 #line 482 "parser.yy"
     5301#line 483 "parser.yy"
    53015302    { (yyval.op) = OperKinds::AddressOf; }
    53025303    break;
     
    53055306
    53065307/* Line 1806 of yacc.c  */
    5307 #line 488 "parser.yy"
     5308#line 489 "parser.yy"
    53085309    { (yyval.op) = OperKinds::UnPlus; }
    53095310    break;
     
    53125313
    53135314/* Line 1806 of yacc.c  */
    5314 #line 489 "parser.yy"
     5315#line 490 "parser.yy"
    53155316    { (yyval.op) = OperKinds::UnMinus; }
    53165317    break;
     
    53195320
    53205321/* Line 1806 of yacc.c  */
    5321 #line 490 "parser.yy"
     5322#line 491 "parser.yy"
    53225323    { (yyval.op) = OperKinds::Neg; }
    53235324    break;
     
    53265327
    53275328/* Line 1806 of yacc.c  */
    5328 #line 491 "parser.yy"
     5329#line 492 "parser.yy"
    53295330    { (yyval.op) = OperKinds::BitNeg; }
    53305331    break;
     
    53335334
    53345335/* Line 1806 of yacc.c  */
    5335 #line 497 "parser.yy"
     5336#line 498 "parser.yy"
    53365337    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53375338    break;
     
    53405341
    53415342/* Line 1806 of yacc.c  */
    5342 #line 499 "parser.yy"
     5343#line 500 "parser.yy"
    53435344    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
    53445345    break;
     
    53475348
    53485349/* Line 1806 of yacc.c  */
    5349 #line 505 "parser.yy"
     5350#line 506 "parser.yy"
    53505351    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53515352    break;
     
    53545355
    53555356/* Line 1806 of yacc.c  */
    5356 #line 507 "parser.yy"
     5357#line 508 "parser.yy"
    53575358    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53585359    break;
     
    53615362
    53625363/* Line 1806 of yacc.c  */
    5363 #line 509 "parser.yy"
     5364#line 510 "parser.yy"
    53645365    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53655366    break;
     
    53685369
    53695370/* Line 1806 of yacc.c  */
    5370 #line 515 "parser.yy"
     5371#line 516 "parser.yy"
    53715372    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53725373    break;
     
    53755376
    53765377/* Line 1806 of yacc.c  */
    5377 #line 517 "parser.yy"
     5378#line 518 "parser.yy"
    53785379    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53795380    break;
     
    53825383
    53835384/* Line 1806 of yacc.c  */
    5384 #line 523 "parser.yy"
     5385#line 524 "parser.yy"
    53855386    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53865387    break;
     
    53895390
    53905391/* Line 1806 of yacc.c  */
    5391 #line 525 "parser.yy"
     5392#line 526 "parser.yy"
    53925393    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    53935394    break;
     
    53965397
    53975398/* Line 1806 of yacc.c  */
    5398 #line 531 "parser.yy"
     5399#line 532 "parser.yy"
    53995400    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54005401    break;
     
    54035404
    54045405/* Line 1806 of yacc.c  */
    5405 #line 533 "parser.yy"
     5406#line 534 "parser.yy"
    54065407    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54075408    break;
     
    54105411
    54115412/* Line 1806 of yacc.c  */
    5412 #line 535 "parser.yy"
     5413#line 536 "parser.yy"
    54135414    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54145415    break;
     
    54175418
    54185419/* Line 1806 of yacc.c  */
    5419 #line 537 "parser.yy"
     5420#line 538 "parser.yy"
    54205421    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54215422    break;
     
    54245425
    54255426/* Line 1806 of yacc.c  */
    5426 #line 543 "parser.yy"
     5427#line 544 "parser.yy"
    54275428    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54285429    break;
     
    54315432
    54325433/* Line 1806 of yacc.c  */
    5433 #line 545 "parser.yy"
     5434#line 546 "parser.yy"
    54345435    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54355436    break;
     
    54385439
    54395440/* Line 1806 of yacc.c  */
    5440 #line 551 "parser.yy"
     5441#line 552 "parser.yy"
    54415442    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54425443    break;
     
    54455446
    54465447/* Line 1806 of yacc.c  */
    5447 #line 557 "parser.yy"
     5448#line 558 "parser.yy"
    54485449    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54495450    break;
     
    54525453
    54535454/* Line 1806 of yacc.c  */
    5454 #line 563 "parser.yy"
     5455#line 564 "parser.yy"
    54555456    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54565457    break;
     
    54595460
    54605461/* Line 1806 of yacc.c  */
    5461 #line 569 "parser.yy"
     5462#line 570 "parser.yy"
    54625463    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
    54635464    break;
     
    54665467
    54675468/* Line 1806 of yacc.c  */
    5468 #line 575 "parser.yy"
     5469#line 576 "parser.yy"
    54695470    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
    54705471    break;
     
    54735474
    54745475/* Line 1806 of yacc.c  */
    5475 #line 581 "parser.yy"
     5476#line 582 "parser.yy"
    54765477    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54775478    break;
     
    54805481
    54815482/* Line 1806 of yacc.c  */
    5482 #line 584 "parser.yy"
     5483#line 585 "parser.yy"
    54835484    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
    54845485    break;
     
    54875488
    54885489/* Line 1806 of yacc.c  */
    5489 #line 586 "parser.yy"
     5490#line 587 "parser.yy"
    54905491    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
    54915492    break;
     
    54945495
    54955496/* Line 1806 of yacc.c  */
    5496 #line 597 "parser.yy"
     5497#line 598 "parser.yy"
    54975498    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    54985499    break;
     
    55015502
    55025503/* Line 1806 of yacc.c  */
    5503 #line 599 "parser.yy"
     5504#line 600 "parser.yy"
    55045505    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
    55055506    break;
     
    55085509
    55095510/* Line 1806 of yacc.c  */
    5510 #line 604 "parser.yy"
     5511#line 605 "parser.yy"
    55115512    { (yyval.en) = nullptr; }
    55125513    break;
     
    55155516
    55165517/* Line 1806 of yacc.c  */
    5517 #line 609 "parser.yy"
     5518#line 610 "parser.yy"
    55185519    { (yyval.op) = OperKinds::Assign; }
    55195520    break;
     
    55225523
    55235524/* Line 1806 of yacc.c  */
    5524 #line 610 "parser.yy"
     5525#line 611 "parser.yy"
    55255526    { (yyval.op) = OperKinds::AtAssn; }
    55265527    break;
     
    55295530
    55305531/* Line 1806 of yacc.c  */
    5531 #line 611 "parser.yy"
     5532#line 612 "parser.yy"
    55325533    { (yyval.op) = OperKinds::MulAssn; }
    55335534    break;
     
    55365537
    55375538/* Line 1806 of yacc.c  */
    5538 #line 612 "parser.yy"
     5539#line 613 "parser.yy"
    55395540    { (yyval.op) = OperKinds::DivAssn; }
    55405541    break;
     
    55435544
    55445545/* Line 1806 of yacc.c  */
    5545 #line 613 "parser.yy"
     5546#line 614 "parser.yy"
    55465547    { (yyval.op) = OperKinds::ModAssn; }
    55475548    break;
     
    55505551
    55515552/* Line 1806 of yacc.c  */
    5552 #line 614 "parser.yy"
     5553#line 615 "parser.yy"
    55535554    { (yyval.op) = OperKinds::PlusAssn; }
    55545555    break;
     
    55575558
    55585559/* Line 1806 of yacc.c  */
    5559 #line 615 "parser.yy"
     5560#line 616 "parser.yy"
    55605561    { (yyval.op) = OperKinds::MinusAssn; }
    55615562    break;
     
    55645565
    55655566/* Line 1806 of yacc.c  */
    5566 #line 616 "parser.yy"
     5567#line 617 "parser.yy"
    55675568    { (yyval.op) = OperKinds::LSAssn; }
    55685569    break;
     
    55715572
    55725573/* Line 1806 of yacc.c  */
    5573 #line 617 "parser.yy"
     5574#line 618 "parser.yy"
    55745575    { (yyval.op) = OperKinds::RSAssn; }
    55755576    break;
     
    55785579
    55795580/* Line 1806 of yacc.c  */
    5580 #line 618 "parser.yy"
     5581#line 619 "parser.yy"
    55815582    { (yyval.op) = OperKinds::AndAssn; }
    55825583    break;
     
    55855586
    55865587/* Line 1806 of yacc.c  */
    5587 #line 619 "parser.yy"
     5588#line 620 "parser.yy"
    55885589    { (yyval.op) = OperKinds::ERAssn; }
    55895590    break;
     
    55925593
    55935594/* Line 1806 of yacc.c  */
    5594 #line 620 "parser.yy"
     5595#line 621 "parser.yy"
    55955596    { (yyval.op) = OperKinds::OrAssn; }
    55965597    break;
     
    55995600
    56005601/* Line 1806 of yacc.c  */
    5601 #line 627 "parser.yy"
     5602#line 628 "parser.yy"
    56025603    { (yyval.en) = new ExpressionNode( build_tuple() ); }
    56035604    break;
     
    56065607
    56075608/* Line 1806 of yacc.c  */
    5608 #line 629 "parser.yy"
     5609#line 630 "parser.yy"
    56095610    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
    56105611    break;
     
    56135614
    56145615/* Line 1806 of yacc.c  */
    5615 #line 631 "parser.yy"
     5616#line 632 "parser.yy"
    56165617    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
    56175618    break;
     
    56205621
    56215622/* Line 1806 of yacc.c  */
    5622 #line 633 "parser.yy"
     5623#line 634 "parser.yy"
    56235624    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
    56245625    break;
     
    56275628
    56285629/* Line 1806 of yacc.c  */
    5629 #line 639 "parser.yy"
     5630#line 640 "parser.yy"
    56305631    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    56315632    break;
     
    56345635
    56355636/* Line 1806 of yacc.c  */
    5636 #line 645 "parser.yy"
     5637#line 646 "parser.yy"
    56375638    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    56385639    break;
     
    56415642
    56425643/* Line 1806 of yacc.c  */
    5643 #line 650 "parser.yy"
     5644#line 651 "parser.yy"
    56445645    { (yyval.en) = 0; }
    56455646    break;
     
    56485649
    56495650/* Line 1806 of yacc.c  */
    5650 #line 659 "parser.yy"
     5651#line 660 "parser.yy"
    56515652    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56525653    break;
     
    56555656
    56565657/* Line 1806 of yacc.c  */
    5657 #line 666 "parser.yy"
     5658#line 667 "parser.yy"
    56585659    {
    56595660                        Token fn;
    5660                         fn.str = new std::string( "^?{}" ); // location undefined
     5661                        fn.str = new string( "^?{}" );                          // location undefined
    56615662                        (yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_last( (yyvsp[(4) - (6)].en) ) ) ) ) );
    56625663                }
     
    56665667
    56675668/* Line 1806 of yacc.c  */
    5668 #line 676 "parser.yy"
     5669#line 677 "parser.yy"
    56695670    {
    56705671                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56755676
    56765677/* Line 1806 of yacc.c  */
    5677 #line 683 "parser.yy"
     5678#line 684 "parser.yy"
    56785679    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
    56795680    break;
     
    56825683
    56835684/* Line 1806 of yacc.c  */
    5684 #line 690 "parser.yy"
     5685#line 691 "parser.yy"
    56855686    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
    56865687    break;
     
    56895690
    56905691/* Line 1806 of yacc.c  */
    5691 #line 696 "parser.yy"
     5692#line 697 "parser.yy"
    56925693    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    56935694    break;
     
    56965697
    56975698/* Line 1806 of yacc.c  */
    5698 #line 701 "parser.yy"
     5699#line 702 "parser.yy"
    56995700    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57005701    break;
     
    57035704
    57045705/* Line 1806 of yacc.c  */
    5705 #line 703 "parser.yy"
     5706#line 704 "parser.yy"
    57065707    {   // mark all fields in list
    57075708                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    57145715
    57155716/* Line 1806 of yacc.c  */
    5716 #line 709 "parser.yy"
     5717#line 710 "parser.yy"
    57175718    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57185719    break;
     
    57215722
    57225723/* Line 1806 of yacc.c  */
    5723 #line 716 "parser.yy"
     5724#line 717 "parser.yy"
    57245725    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57255726    break;
     
    57285729
    57295730/* Line 1806 of yacc.c  */
    5730 #line 721 "parser.yy"
     5731#line 722 "parser.yy"
    57315732    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
    57325733    break;
     
    57355736
    57365737/* Line 1806 of yacc.c  */
    5737 #line 727 "parser.yy"
     5738#line 728 "parser.yy"
    57385739    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
    57395740    break;
     
    57425743
    57435744/* Line 1806 of yacc.c  */
    5744 #line 729 "parser.yy"
     5745#line 730 "parser.yy"
    57455746    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
    57465747    break;
     
    57495750
    57505751/* Line 1806 of yacc.c  */
    5751 #line 731 "parser.yy"
     5752#line 732 "parser.yy"
    57525753    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57535754    break;
     
    57565757
    57575758/* Line 1806 of yacc.c  */
    5758 #line 733 "parser.yy"
     5759#line 734 "parser.yy"
    57595760    {
    57605761                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57715772
    57725773/* Line 1806 of yacc.c  */
    5773 #line 743 "parser.yy"
     5774#line 744 "parser.yy"
    57745775    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    57755776    break;
     
    57785779
    57795780/* Line 1806 of yacc.c  */
    5780 #line 745 "parser.yy"
     5781#line 746 "parser.yy"
    57815782    {
    57825783                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
     
    57885789
    57895790/* Line 1806 of yacc.c  */
    5790 #line 755 "parser.yy"
     5791#line 756 "parser.yy"
    57915792    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57925793    break;
     
    57955796
    57965797/* Line 1806 of yacc.c  */
    5797 #line 757 "parser.yy"
     5798#line 758 "parser.yy"
    57985799    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    57995800    break;
     
    58025803
    58035804/* Line 1806 of yacc.c  */
    5804 #line 762 "parser.yy"
     5805#line 763 "parser.yy"
    58055806    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
    58065807    break;
     
    58095810
    58105811/* Line 1806 of yacc.c  */
    5811 #line 764 "parser.yy"
     5812#line 765 "parser.yy"
    58125813    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
    58135814    break;
     
    58165817
    58175818/* Line 1806 of yacc.c  */
    5818 #line 768 "parser.yy"
     5819#line 769 "parser.yy"
    58195820    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
    58205821    break;
     
    58235824
    58245825/* Line 1806 of yacc.c  */
    5825 #line 769 "parser.yy"
     5826#line 770 "parser.yy"
    58265827    { (yyval.sn) = new StatementNode( build_default() ); }
    58275828    break;
     
    58305831
    58315832/* Line 1806 of yacc.c  */
    5832 #line 775 "parser.yy"
     5833#line 776 "parser.yy"
    58335834    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
    58345835    break;
     
    58375838
    58385839/* Line 1806 of yacc.c  */
    5839 #line 779 "parser.yy"
     5840#line 780 "parser.yy"
    58405841    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58415842    break;
     
    58445845
    58455846/* Line 1806 of yacc.c  */
    5846 #line 784 "parser.yy"
     5847#line 785 "parser.yy"
    58475848    { (yyval.sn) = 0; }
    58485849    break;
     
    58515852
    58525853/* Line 1806 of yacc.c  */
    5853 #line 790 "parser.yy"
     5854#line 791 "parser.yy"
    58545855    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
    58555856    break;
     
    58585859
    58595860/* Line 1806 of yacc.c  */
    5860 #line 792 "parser.yy"
     5861#line 793 "parser.yy"
    58615862    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
    58625863    break;
     
    58655866
    58665867/* Line 1806 of yacc.c  */
    5867 #line 797 "parser.yy"
     5868#line 798 "parser.yy"
    58685869    { (yyval.sn) = 0; }
    58695870    break;
     
    58725873
    58735874/* Line 1806 of yacc.c  */
    5874 #line 803 "parser.yy"
     5875#line 804 "parser.yy"
    58755876    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58765877    break;
     
    58795880
    58805881/* Line 1806 of yacc.c  */
    5881 #line 805 "parser.yy"
     5882#line 806 "parser.yy"
    58825883    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
    58835884    break;
     
    58865887
    58875888/* Line 1806 of yacc.c  */
    5888 #line 807 "parser.yy"
     5889#line 808 "parser.yy"
    58895890    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58905891    break;
     
    58935894
    58945895/* Line 1806 of yacc.c  */
    5895 #line 809 "parser.yy"
     5896#line 810 "parser.yy"
    58965897    { (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) ) ) ) ) ) ); }
    58975898    break;
     
    59005901
    59015902/* Line 1806 of yacc.c  */
    5902 #line 814 "parser.yy"
     5903#line 815 "parser.yy"
    59035904    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59045905    break;
     
    59075908
    59085909/* Line 1806 of yacc.c  */
    5909 #line 820 "parser.yy"
     5910#line 821 "parser.yy"
    59105911    { (yyval.sn) = 0; }
    59115912    break;
     
    59145915
    59155916/* Line 1806 of yacc.c  */
    5916 #line 822 "parser.yy"
     5917#line 823 "parser.yy"
    59175918    { (yyval.sn) = 0; }
    59185919    break;
     
    59215922
    59225923/* Line 1806 of yacc.c  */
    5923 #line 827 "parser.yy"
     5924#line 828 "parser.yy"
    59245925    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
    59255926    break;
     
    59285929
    59295930/* Line 1806 of yacc.c  */
    5930 #line 829 "parser.yy"
     5931#line 830 "parser.yy"
    59315932    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
    59325933    break;
     
    59355936
    59365937/* Line 1806 of yacc.c  */
    5937 #line 831 "parser.yy"
     5938#line 832 "parser.yy"
    59385939    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
    59395940    break;
     
    59425943
    59435944/* Line 1806 of yacc.c  */
    5944 #line 836 "parser.yy"
     5945#line 837 "parser.yy"
    59455946    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59465947    break;
     
    59495950
    59505951/* Line 1806 of yacc.c  */
    5951 #line 838 "parser.yy"
     5952#line 839 "parser.yy"
    59525953    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59535954    break;
     
    59565957
    59575958/* Line 1806 of yacc.c  */
    5958 #line 843 "parser.yy"
     5959#line 844 "parser.yy"
    59595960    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
    59605961    break;
     
    59635964
    59645965/* Line 1806 of yacc.c  */
    5965 #line 847 "parser.yy"
     5966#line 848 "parser.yy"
    59665967    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
    59675968    break;
     
    59705971
    59715972/* Line 1806 of yacc.c  */
    5972 #line 850 "parser.yy"
     5973#line 851 "parser.yy"
    59735974    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
    59745975    break;
     
    59775978
    59785979/* Line 1806 of yacc.c  */
    5979 #line 854 "parser.yy"
     5980#line 855 "parser.yy"
    59805981    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
    59815982    break;
     
    59845985
    59855986/* Line 1806 of yacc.c  */
    5986 #line 857 "parser.yy"
     5987#line 858 "parser.yy"
    59875988    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
    59885989    break;
     
    59915992
    59925993/* Line 1806 of yacc.c  */
    5993 #line 861 "parser.yy"
     5994#line 862 "parser.yy"
    59945995    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
    59955996    break;
     
    59985999
    59996000/* Line 1806 of yacc.c  */
    6000 #line 863 "parser.yy"
     6001#line 864 "parser.yy"
    60016002    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
    60026003    break;
     
    60056006
    60066007/* Line 1806 of yacc.c  */
    6007 #line 865 "parser.yy"
     6008#line 866 "parser.yy"
    60086009    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60096010    break;
     
    60126013
    60136014/* Line 1806 of yacc.c  */
    6014 #line 867 "parser.yy"
     6015#line 868 "parser.yy"
    60156016    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
    60166017    break;
     
    60196020
    60206021/* Line 1806 of yacc.c  */
    6021 #line 869 "parser.yy"
     6022#line 870 "parser.yy"
    60226023    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
    60236024    break;
     
    60266027
    60276028/* Line 1806 of yacc.c  */
    6028 #line 874 "parser.yy"
     6029#line 875 "parser.yy"
    60296030    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
    60306031    break;
     
    60336034
    60346035/* Line 1806 of yacc.c  */
    6035 #line 876 "parser.yy"
     6036#line 877 "parser.yy"
    60366037    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
    60376038    break;
     
    60406041
    60416042/* Line 1806 of yacc.c  */
    6042 #line 878 "parser.yy"
     6043#line 879 "parser.yy"
    60436044    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
    60446045    break;
     
    60476048
    60486049/* Line 1806 of yacc.c  */
    6049 #line 885 "parser.yy"
     6050#line 886 "parser.yy"
    60506051    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60516052    break;
     
    60546055
    60556056/* Line 1806 of yacc.c  */
    6056 #line 887 "parser.yy"
     6057#line 888 "parser.yy"
    60576058    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60586059    break;
     
    60616062
    60626063/* Line 1806 of yacc.c  */
    6063 #line 889 "parser.yy"
     6064#line 890 "parser.yy"
    60646065    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
    60656066    break;
     
    60686069
    60696070/* Line 1806 of yacc.c  */
    6070 #line 891 "parser.yy"
     6071#line 892 "parser.yy"
    60716072    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
    60726073    break;
     
    60756076
    60766077/* Line 1806 of yacc.c  */
    6077 #line 896 "parser.yy"
     6078#line 897 "parser.yy"
    60786079    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60796080    break;
     
    60826083
    60836084/* Line 1806 of yacc.c  */
    6084 #line 898 "parser.yy"
     6085#line 899 "parser.yy"
    60856086    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    60866087    break;
     
    60896090
    60906091/* Line 1806 of yacc.c  */
    6091 #line 900 "parser.yy"
     6092#line 901 "parser.yy"
    60926093    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
    60936094    break;
     
    60966097
    60976098/* Line 1806 of yacc.c  */
    6098 #line 902 "parser.yy"
     6099#line 903 "parser.yy"
    60996100    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
    61006101    break;
     
    61036104
    61046105/* Line 1806 of yacc.c  */
    6105 #line 907 "parser.yy"
     6106#line 908 "parser.yy"
    61066107    {
    61076108                        (yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
     
    61126113
    61136114/* Line 1806 of yacc.c  */
    6114 #line 920 "parser.yy"
     6115#line 921 "parser.yy"
    61156116    {
    61166117                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61226123
    61236124/* Line 1806 of yacc.c  */
    6124 #line 925 "parser.yy"
     6125#line 926 "parser.yy"
    61256126    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61266127    break;
     
    61296130
    61306131/* Line 1806 of yacc.c  */
    6131 #line 927 "parser.yy"
     6132#line 928 "parser.yy"
    61326133    {
    61336134                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61396140
    61406141/* Line 1806 of yacc.c  */
    6141 #line 936 "parser.yy"
     6142#line 937 "parser.yy"
    61426143    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
    61436144    break;
     
    61466147
    61476148/* Line 1806 of yacc.c  */
    6148 #line 938 "parser.yy"
     6149#line 939 "parser.yy"
    61496150    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
    61506151    break;
     
    61536154
    61546155/* Line 1806 of yacc.c  */
    6155 #line 940 "parser.yy"
     6156#line 941 "parser.yy"
    61566157    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
    61576158    break;
     
    61606161
    61616162/* Line 1806 of yacc.c  */
    6162 #line 942 "parser.yy"
     6163#line 943 "parser.yy"
    61636164    { (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) ) ); }
    61646165    break;
     
    61676168
    61686169/* Line 1806 of yacc.c  */
    6169 #line 944 "parser.yy"
     6170#line 945 "parser.yy"
    61706171    { (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) ) ); }
    61716172    break;
     
    61746175
    61756176/* Line 1806 of yacc.c  */
    6176 #line 949 "parser.yy"
     6177#line 950 "parser.yy"
    61776178    { (yyval.flag) = false; }
    61786179    break;
     
    61816182
    61826183/* Line 1806 of yacc.c  */
    6183 #line 951 "parser.yy"
     6184#line 952 "parser.yy"
    61846185    { (yyval.flag) = true; }
    61856186    break;
     
    61886189
    61896190/* Line 1806 of yacc.c  */
    6190 #line 956 "parser.yy"
     6191#line 957 "parser.yy"
    61916192    { (yyval.en) = 0; }
    61926193    break;
     
    61956196
    61966197/* Line 1806 of yacc.c  */
    6197 #line 963 "parser.yy"
     6198#line 964 "parser.yy"
    61986199    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
    61996200    break;
     
    62026203
    62036204/* Line 1806 of yacc.c  */
    6204 #line 968 "parser.yy"
     6205#line 969 "parser.yy"
    62056206    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
    62066207    break;
     
    62096210
    62106211/* Line 1806 of yacc.c  */
    6211 #line 970 "parser.yy"
     6212#line 971 "parser.yy"
    62126213    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
    62136214    break;
     
    62166217
    62176218/* Line 1806 of yacc.c  */
    6218 #line 975 "parser.yy"
     6219#line 976 "parser.yy"
    62196220    { (yyval.en) = 0; }
    62206221    break;
     
    62236224
    62246225/* Line 1806 of yacc.c  */
    6225 #line 977 "parser.yy"
     6226#line 978 "parser.yy"
    62266227    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
    62276228    break;
     
    62306231
    62316232/* Line 1806 of yacc.c  */
    6232 #line 979 "parser.yy"
     6233#line 980 "parser.yy"
    62336234    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    62346235    break;
     
    62376238
    62386239/* Line 1806 of yacc.c  */
    6239 #line 984 "parser.yy"
     6240#line 985 "parser.yy"
    62406241    {
    62416242                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     
    62476248
    62486249/* Line 1806 of yacc.c  */
    6249 #line 989 "parser.yy"
     6250#line 990 "parser.yy"
    62506251    {
    62516252                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     
    62576258
    62586259/* Line 1806 of yacc.c  */
    6259 #line 999 "parser.yy"
     6260#line 1000 "parser.yy"
    62606261    { (yyval.decl) = 0; }
    62616262    break;
     
    62646265
    62656266/* Line 1806 of yacc.c  */
    6266 #line 1006 "parser.yy"
     6267#line 1007 "parser.yy"
    62676268    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62686269    break;
     
    62716272
    62726273/* Line 1806 of yacc.c  */
    6273 #line 1011 "parser.yy"
     6274#line 1012 "parser.yy"
    62746275    { (yyval.decl) = 0; }
    62756276    break;
     
    62786279
    62796280/* Line 1806 of yacc.c  */
    6280 #line 1018 "parser.yy"
     6281#line 1019 "parser.yy"
    62816282    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62826283    break;
    62836284
    62846285  case 244:
    6285 
    6286 /* Line 1806 of yacc.c  */
    6287 #line 1032 "parser.yy"
    6288     {}
    6289     break;
    6290 
    6291   case 245:
    62926286
    62936287/* Line 1806 of yacc.c  */
     
    62966290    break;
    62976291
     6292  case 245:
     6293
     6294/* Line 1806 of yacc.c  */
     6295#line 1034 "parser.yy"
     6296    {}
     6297    break;
     6298
    62986299  case 253:
    62996300
    63006301/* Line 1806 of yacc.c  */
    6301 #line 1062 "parser.yy"
     6302#line 1063 "parser.yy"
    63026303    {
    63036304                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63096310
    63106311/* Line 1806 of yacc.c  */
    6311 #line 1069 "parser.yy"
     6312#line 1070 "parser.yy"
    63126313    {
    63136314                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63196320
    63206321/* Line 1806 of yacc.c  */
    6321 #line 1074 "parser.yy"
     6322#line 1075 "parser.yy"
    63226323    {
    63236324                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63296330
    63306331/* Line 1806 of yacc.c  */
    6331 #line 1084 "parser.yy"
     6332#line 1085 "parser.yy"
    63326333    {
    63336334                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63396340
    63406341/* Line 1806 of yacc.c  */
    6341 #line 1089 "parser.yy"
     6342#line 1090 "parser.yy"
    63426343    {
    63436344                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63496350
    63506351/* Line 1806 of yacc.c  */
    6351 #line 1094 "parser.yy"
     6352#line 1095 "parser.yy"
    63526353    {
    63536354                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63596360
    63606361/* Line 1806 of yacc.c  */
    6361 #line 1102 "parser.yy"
     6362#line 1103 "parser.yy"
    63626363    {
    63636364                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63696370
    63706371/* Line 1806 of yacc.c  */
    6371 #line 1107 "parser.yy"
     6372#line 1108 "parser.yy"
    63726373    {
    63736374                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63796380
    63806381/* Line 1806 of yacc.c  */
    6381 #line 1112 "parser.yy"
     6382#line 1113 "parser.yy"
    63826383    {
    63836384                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63896390
    63906391/* Line 1806 of yacc.c  */
    6391 #line 1117 "parser.yy"
     6392#line 1118 "parser.yy"
    63926393    {
    63936394                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63996400
    64006401/* Line 1806 of yacc.c  */
    6401 #line 1122 "parser.yy"
     6402#line 1123 "parser.yy"
    64026403    {
    64036404                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64096410
    64106411/* Line 1806 of yacc.c  */
    6411 #line 1130 "parser.yy"
     6412#line 1131 "parser.yy"
    64126413    {
    64136414                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    64186419
    64196420/* Line 1806 of yacc.c  */
    6420 #line 1153 "parser.yy"
     6421#line 1154 "parser.yy"
    64216422    {
    64226423                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64276428
    64286429/* Line 1806 of yacc.c  */
    6429 #line 1157 "parser.yy"
     6430#line 1158 "parser.yy"
    64306431    {
    64316432                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64366437
    64376438/* Line 1806 of yacc.c  */
    6438 #line 1164 "parser.yy"
     6439#line 1165 "parser.yy"
    64396440    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64406441    break;
     
    64436444
    64446445/* Line 1806 of yacc.c  */
    6445 #line 1168 "parser.yy"
     6446#line 1169 "parser.yy"
    64466447    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64476448    break;
     
    64506451
    64516452/* Line 1806 of yacc.c  */
    6452 #line 1173 "parser.yy"
     6453#line 1174 "parser.yy"
    64536454    {
    64546455                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64606461
    64616462/* Line 1806 of yacc.c  */
    6462 #line 1178 "parser.yy"
     6463#line 1179 "parser.yy"
    64636464    {
    64646465                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64706471
    64716472/* Line 1806 of yacc.c  */
    6472 #line 1183 "parser.yy"
     6473#line 1184 "parser.yy"
    64736474    {
    64746475                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64806481
    64816482/* Line 1806 of yacc.c  */
    6482 #line 1194 "parser.yy"
     6483#line 1195 "parser.yy"
    64836484    {
    64846485                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64906491
    64916492/* Line 1806 of yacc.c  */
    6492 #line 1199 "parser.yy"
     6493#line 1200 "parser.yy"
    64936494    {
    64946495                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65006501
    65016502/* Line 1806 of yacc.c  */
    6502 #line 1204 "parser.yy"
     6503#line 1205 "parser.yy"
    65036504    {
    65046505                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65106511
    65116512/* Line 1806 of yacc.c  */
    6512 #line 1209 "parser.yy"
     6513#line 1210 "parser.yy"
    65136514    {
    65146515                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65206521
    65216522/* Line 1806 of yacc.c  */
    6522 #line 1214 "parser.yy"
     6523#line 1215 "parser.yy"
    65236524    {
    65246525                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65306531
    65316532/* Line 1806 of yacc.c  */
    6532 #line 1223 "parser.yy"
     6533#line 1224 "parser.yy"
    65336534    {
    65346535                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65406541
    65416542/* Line 1806 of yacc.c  */
    6542 #line 1228 "parser.yy"
     6543#line 1229 "parser.yy"
    65436544    {
    65446545                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65506551
    65516552/* Line 1806 of yacc.c  */
    6552 #line 1245 "parser.yy"
     6553#line 1246 "parser.yy"
    65536554    {
    65546555                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65606561
    65616562/* Line 1806 of yacc.c  */
    6562 #line 1250 "parser.yy"
     6563#line 1251 "parser.yy"
    65636564    {
    65646565                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65706571
    65716572/* Line 1806 of yacc.c  */
    6572 #line 1272 "parser.yy"
     6573#line 1273 "parser.yy"
    65736574    { (yyval.decl) = 0; }
    65746575    break;
     
    65776578
    65786579/* Line 1806 of yacc.c  */
    6579 #line 1284 "parser.yy"
     6580#line 1285 "parser.yy"
    65806581    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65816582    break;
     
    65846585
    65856586/* Line 1806 of yacc.c  */
    6586 #line 1295 "parser.yy"
     6587#line 1296 "parser.yy"
    65876588    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65886589    break;
     
    65916592
    65926593/* Line 1806 of yacc.c  */
    6593 #line 1297 "parser.yy"
     6594#line 1298 "parser.yy"
    65946595    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    65956596    break;
     
    65986599
    65996600/* Line 1806 of yacc.c  */
    6600 #line 1299 "parser.yy"
     6601#line 1300 "parser.yy"
    66016602    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66026603    break;
     
    66056606
    66066607/* Line 1806 of yacc.c  */
    6607 #line 1301 "parser.yy"
     6608#line 1302 "parser.yy"
    66086609    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66096610    break;
     
    66126613
    66136614/* Line 1806 of yacc.c  */
    6614 #line 1303 "parser.yy"
     6615#line 1304 "parser.yy"
    66156616    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    66166617    break;
     
    66196620
    66206621/* Line 1806 of yacc.c  */
    6621 #line 1305 "parser.yy"
     6622#line 1306 "parser.yy"
    66226623    {
    66236624                        typedefTable.enterScope();
     
    66286629
    66296630/* Line 1806 of yacc.c  */
    6630 #line 1309 "parser.yy"
     6631#line 1310 "parser.yy"
    66316632    {
    66326633                        typedefTable.leaveScope();
     
    66386639
    66396640/* Line 1806 of yacc.c  */
    6640 #line 1318 "parser.yy"
     6641#line 1319 "parser.yy"
    66416642    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66426643    break;
     
    66456646
    66466647/* Line 1806 of yacc.c  */
    6647 #line 1320 "parser.yy"
     6648#line 1321 "parser.yy"
    66486649    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66496650    break;
     
    66526653
    66536654/* Line 1806 of yacc.c  */
    6654 #line 1331 "parser.yy"
     6655#line 1332 "parser.yy"
    66556656    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66566657    break;
     
    66596660
    66606661/* Line 1806 of yacc.c  */
    6661 #line 1336 "parser.yy"
     6662#line 1337 "parser.yy"
    66626663    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66636664    break;
     
    66666667
    66676668/* Line 1806 of yacc.c  */
    6668 #line 1338 "parser.yy"
     6669#line 1339 "parser.yy"
    66696670    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66706671    break;
     
    66736674
    66746675/* Line 1806 of yacc.c  */
    6675 #line 1340 "parser.yy"
     6676#line 1341 "parser.yy"
    66766677    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66776678    break;
     
    66806681
    66816682/* Line 1806 of yacc.c  */
    6682 #line 1342 "parser.yy"
     6683#line 1343 "parser.yy"
    66836684    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66846685    break;
     
    66876688
    66886689/* Line 1806 of yacc.c  */
    6689 #line 1345 "parser.yy"
     6690#line 1346 "parser.yy"
    66906691    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    66916692    break;
     
    66946695
    66956696/* Line 1806 of yacc.c  */
    6696 #line 1347 "parser.yy"
     6697#line 1348 "parser.yy"
    66976698    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    66986699    break;
     
    67016702
    67026703/* Line 1806 of yacc.c  */
    6703 #line 1350 "parser.yy"
     6704#line 1351 "parser.yy"
    67046705    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    67056706    break;
     
    67086709
    67096710/* Line 1806 of yacc.c  */
    6710 #line 1352 "parser.yy"
     6711#line 1353 "parser.yy"
    67116712    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    67126713    break;
     
    67156716
    67166717/* Line 1806 of yacc.c  */
    6717 #line 1357 "parser.yy"
     6718#line 1358 "parser.yy"
    67186719    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    67196720    break;
     
    67226723
    67236724/* Line 1806 of yacc.c  */
    6724 #line 1359 "parser.yy"
     6725#line 1360 "parser.yy"
    67256726    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    67266727    break;
     
    67296730
    67306731/* Line 1806 of yacc.c  */
    6731 #line 1361 "parser.yy"
     6732#line 1362 "parser.yy"
    67326733    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    67336734    break;
     
    67366737
    67376738/* Line 1806 of yacc.c  */
    6738 #line 1363 "parser.yy"
     6739#line 1364 "parser.yy"
    67396740    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    67406741    break;
     
    67436744
    67446745/* Line 1806 of yacc.c  */
    6745 #line 1365 "parser.yy"
     6746#line 1366 "parser.yy"
    67466747    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    67476748    break;
     
    67506751
    67516752/* Line 1806 of yacc.c  */
    6752 #line 1367 "parser.yy"
     6753#line 1368 "parser.yy"
    67536754    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    67546755    break;
     
    67576758
    67586759/* Line 1806 of yacc.c  */
    6759 #line 1369 "parser.yy"
     6760#line 1370 "parser.yy"
    67606761    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    67616762    break;
     
    67646765
    67656766/* Line 1806 of yacc.c  */
    6766 #line 1371 "parser.yy"
     6767#line 1372 "parser.yy"
    67676768    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    67686769    break;
     
    67716772
    67726773/* Line 1806 of yacc.c  */
    6773 #line 1373 "parser.yy"
     6774#line 1374 "parser.yy"
    67746775    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    67756776    break;
     
    67786779
    67796780/* Line 1806 of yacc.c  */
    6780 #line 1375 "parser.yy"
     6781#line 1376 "parser.yy"
    67816782    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    67826783    break;
     
    67856786
    67866787/* Line 1806 of yacc.c  */
    6787 #line 1377 "parser.yy"
     6788#line 1378 "parser.yy"
    67886789    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    67896790    break;
     
    67926793
    67936794/* Line 1806 of yacc.c  */
    6794 #line 1379 "parser.yy"
     6795#line 1380 "parser.yy"
    67956796    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    67966797    break;
     
    67996800
    68006801/* Line 1806 of yacc.c  */
    6801 #line 1381 "parser.yy"
     6802#line 1382 "parser.yy"
    68026803    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    68036804    break;
     
    68066807
    68076808/* Line 1806 of yacc.c  */
    6808 #line 1388 "parser.yy"
     6809#line 1389 "parser.yy"
    68096810    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68106811    break;
     
    68136814
    68146815/* Line 1806 of yacc.c  */
    6815 #line 1390 "parser.yy"
     6816#line 1391 "parser.yy"
    68166817    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68176818    break;
     
    68206821
    68216822/* Line 1806 of yacc.c  */
    6822 #line 1392 "parser.yy"
     6823#line 1393 "parser.yy"
    68236824    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68246825    break;
     
    68276828
    68286829/* Line 1806 of yacc.c  */
    6829 #line 1394 "parser.yy"
     6830#line 1395 "parser.yy"
    68306831    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    68316832    break;
     
    68346835
    68356836/* Line 1806 of yacc.c  */
    6836 #line 1400 "parser.yy"
     6837#line 1401 "parser.yy"
    68376838    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68386839    break;
     
    68416842
    68426843/* Line 1806 of yacc.c  */
    6843 #line 1407 "parser.yy"
     6844#line 1408 "parser.yy"
    68446845    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68456846    break;
     
    68486849
    68496850/* Line 1806 of yacc.c  */
    6850 #line 1409 "parser.yy"
     6851#line 1410 "parser.yy"
    68516852    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68526853    break;
     
    68556856
    68566857/* Line 1806 of yacc.c  */
    6857 #line 1411 "parser.yy"
     6858#line 1412 "parser.yy"
    68586859    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    68596860    break;
     
    68626863
    68636864/* Line 1806 of yacc.c  */
    6864 #line 1416 "parser.yy"
     6865#line 1417 "parser.yy"
    68656866    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    68666867    break;
     
    68696870
    68706871/* Line 1806 of yacc.c  */
    6871 #line 1418 "parser.yy"
     6872#line 1419 "parser.yy"
    68726873    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    68736874    break;
     
    68766877
    68776878/* Line 1806 of yacc.c  */
    6878 #line 1420 "parser.yy"
     6879#line 1421 "parser.yy"
    68796880    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    68806881    break;
     
    68836884
    68846885/* Line 1806 of yacc.c  */
    6885 #line 1422 "parser.yy"
     6886#line 1423 "parser.yy"
    68866887    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    68876888    break;
     
    68906891
    68916892/* Line 1806 of yacc.c  */
    6892 #line 1428 "parser.yy"
     6893#line 1429 "parser.yy"
    68936894    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68946895    break;
     
    68976898
    68986899/* Line 1806 of yacc.c  */
    6899 #line 1430 "parser.yy"
     6900#line 1431 "parser.yy"
    69006901    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69016902    break;
     
    69046905
    69056906/* Line 1806 of yacc.c  */
    6906 #line 1432 "parser.yy"
     6907#line 1433 "parser.yy"
    69076908    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69086909    break;
     
    69116912
    69126913/* Line 1806 of yacc.c  */
    6913 #line 1438 "parser.yy"
     6914#line 1439 "parser.yy"
    69146915    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69156916    break;
     
    69186919
    69196920/* Line 1806 of yacc.c  */
    6920 #line 1440 "parser.yy"
     6921#line 1441 "parser.yy"
    69216922    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69226923    break;
     
    69256926
    69266927/* Line 1806 of yacc.c  */
    6927 #line 1446 "parser.yy"
     6928#line 1447 "parser.yy"
    69286929    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69296930    break;
     
    69326933
    69336934/* Line 1806 of yacc.c  */
    6934 #line 1448 "parser.yy"
     6935#line 1449 "parser.yy"
    69356936    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69366937    break;
     
    69396940
    69406941/* Line 1806 of yacc.c  */
    6941 #line 1450 "parser.yy"
     6942#line 1451 "parser.yy"
    69426943    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69436944    break;
     
    69466947
    69476948/* Line 1806 of yacc.c  */
    6948 #line 1455 "parser.yy"
     6949#line 1456 "parser.yy"
    69496950    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    69506951    break;
     
    69536954
    69546955/* Line 1806 of yacc.c  */
    6955 #line 1457 "parser.yy"
     6956#line 1458 "parser.yy"
    69566957    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69576958    break;
     
    69606961
    69616962/* Line 1806 of yacc.c  */
    6962 #line 1459 "parser.yy"
     6963#line 1460 "parser.yy"
    69636964    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69646965    break;
     
    69676968
    69686969/* Line 1806 of yacc.c  */
    6969 #line 1469 "parser.yy"
    6970     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
     6970#line 1470 "parser.yy"
     6971    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
    69716972    break;
    69726973
     
    69746975
    69756976/* Line 1806 of yacc.c  */
    6976 #line 1471 "parser.yy"
     6977#line 1472 "parser.yy"
    69776978    {
    69786979                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
    6979                         (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, false );
     6980                        (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), nullptr, nullptr, false );
    69806981                }
    69816982    break;
     
    69846985
    69856986/* Line 1806 of yacc.c  */
    6986 #line 1476 "parser.yy"
     6987#line 1477 "parser.yy"
    69876988    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    69886989    break;
     
    69916992
    69926993/* Line 1806 of yacc.c  */
    6993 #line 1478 "parser.yy"
    6994     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
     6994#line 1479 "parser.yy"
     6995    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
    69956996    break;
    69966997
     
    69986999
    69997000/* Line 1806 of yacc.c  */
    7000 #line 1480 "parser.yy"
    7001     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
     7001#line 1481 "parser.yy"
     7002    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    70027003    break;
    70037004
     
    70057006
    70067007/* Line 1806 of yacc.c  */
    7007 #line 1482 "parser.yy"
     7008#line 1483 "parser.yy"
    70087009    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    70097010    break;
     
    70127013
    70137014/* Line 1806 of yacc.c  */
    7014 #line 1487 "parser.yy"
     7015#line 1488 "parser.yy"
    70157016    { (yyval.aggKey) = DeclarationNode::Struct; }
    70167017    break;
     
    70197020
    70207021/* Line 1806 of yacc.c  */
    7021 #line 1489 "parser.yy"
     7022#line 1490 "parser.yy"
    70227023    { (yyval.aggKey) = DeclarationNode::Union; }
    70237024    break;
     
    70267027
    70277028/* Line 1806 of yacc.c  */
    7028 #line 1494 "parser.yy"
     7029#line 1495 "parser.yy"
    70297030    { (yyval.decl) = 0; }
    70307031    break;
     
    70337034
    70347035/* Line 1806 of yacc.c  */
    7035 #line 1496 "parser.yy"
     7036#line 1497 "parser.yy"
    70367037    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    70377038    break;
     
    70407041
    70417042/* Line 1806 of yacc.c  */
    7042 #line 1502 "parser.yy"
     7043#line 1503 "parser.yy"
    70437044    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    70447045    break;
     
    70477048
    70487049/* Line 1806 of yacc.c  */
    7049 #line 1505 "parser.yy"
     7050#line 1506 "parser.yy"
    70507051    {   // mark all fields in list
    70517052                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    70587059
    70597060/* Line 1806 of yacc.c  */
    7060 #line 1515 "parser.yy"
     7061#line 1516 "parser.yy"
    70617062    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    70627063    break;
     
    70657066
    70667067/* Line 1806 of yacc.c  */
    7067 #line 1517 "parser.yy"
     7068#line 1518 "parser.yy"
    70687069    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    70697070    break;
     
    70727073
    70737074/* Line 1806 of yacc.c  */
    7074 #line 1519 "parser.yy"
     7075#line 1520 "parser.yy"
    70757076    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70767077    break;
     
    70797080
    70807081/* Line 1806 of yacc.c  */
    7081 #line 1524 "parser.yy"
     7082#line 1525 "parser.yy"
    70827083    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70837084    break;
     
    70867087
    70877088/* Line 1806 of yacc.c  */
    7088 #line 1526 "parser.yy"
     7089#line 1527 "parser.yy"
    70897090    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    70907091    break;
     
    70937094
    70947095/* Line 1806 of yacc.c  */
    7095 #line 1531 "parser.yy"
     7096#line 1532 "parser.yy"
    70967097    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    70977098    break;
     
    71007101
    71017102/* Line 1806 of yacc.c  */
    7102 #line 1533 "parser.yy"
     7103#line 1534 "parser.yy"
    71037104    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    71047105    break;
     
    71077108
    71087109/* Line 1806 of yacc.c  */
    7109 #line 1536 "parser.yy"
     7110#line 1537 "parser.yy"
    71107111    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71117112    break;
     
    71147115
    71157116/* Line 1806 of yacc.c  */
    7116 #line 1539 "parser.yy"
     7117#line 1540 "parser.yy"
    71177118    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71187119    break;
     
    71217122
    71227123/* Line 1806 of yacc.c  */
    7123 #line 1545 "parser.yy"
     7124#line 1546 "parser.yy"
    71247125    { (yyval.en) = 0; }
    71257126    break;
     
    71287129
    71297130/* Line 1806 of yacc.c  */
    7130 #line 1547 "parser.yy"
     7131#line 1548 "parser.yy"
    71317132    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71327133    break;
     
    71357136
    71367137/* Line 1806 of yacc.c  */
    7137 #line 1552 "parser.yy"
     7138#line 1553 "parser.yy"
    71387139    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71397140    break;
     
    71427143
    71437144/* Line 1806 of yacc.c  */
    7144 #line 1561 "parser.yy"
    7145     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     7145#line 1562 "parser.yy"
     7146    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
    71467147    break;
    71477148
     
    71497150
    71507151/* Line 1806 of yacc.c  */
    7151 #line 1563 "parser.yy"
     7152#line 1564 "parser.yy"
    71527153    {
    71537154                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    71597160
    71607161/* Line 1806 of yacc.c  */
    7161 #line 1568 "parser.yy"
     7162#line 1569 "parser.yy"
    71627163    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    71637164    break;
     
    71667167
    71677168/* Line 1806 of yacc.c  */
    7168 #line 1570 "parser.yy"
     7169#line 1571 "parser.yy"
    71697170    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    71707171    break;
     
    71737174
    71747175/* Line 1806 of yacc.c  */
    7175 #line 1575 "parser.yy"
     7176#line 1576 "parser.yy"
    71767177    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    71777178    break;
     
    71807181
    71817182/* Line 1806 of yacc.c  */
    7182 #line 1577 "parser.yy"
     7183#line 1578 "parser.yy"
    71837184    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71847185    break;
     
    71877188
    71887189/* Line 1806 of yacc.c  */
    7189 #line 1582 "parser.yy"
     7190#line 1583 "parser.yy"
    71907191    { (yyval.en) = 0; }
    71917192    break;
     
    71947195
    71957196/* Line 1806 of yacc.c  */
    7196 #line 1584 "parser.yy"
     7197#line 1585 "parser.yy"
    71977198    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71987199    break;
     
    72017202
    72027203/* Line 1806 of yacc.c  */
    7203 #line 1591 "parser.yy"
     7204#line 1592 "parser.yy"
    72047205    { (yyval.decl) = 0; }
    72057206    break;
     
    72087209
    72097210/* Line 1806 of yacc.c  */
    7210 #line 1599 "parser.yy"
     7211#line 1600 "parser.yy"
    72117212    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72127213    break;
     
    72157216
    72167217/* Line 1806 of yacc.c  */
    7217 #line 1601 "parser.yy"
     7218#line 1602 "parser.yy"
    72187219    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72197220    break;
     
    72227223
    72237224/* Line 1806 of yacc.c  */
    7224 #line 1603 "parser.yy"
     7225#line 1604 "parser.yy"
    72257226    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72267227    break;
     
    72297230
    72307231/* Line 1806 of yacc.c  */
    7231 #line 1611 "parser.yy"
     7232#line 1612 "parser.yy"
    72327233    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72337234    break;
     
    72367237
    72377238/* Line 1806 of yacc.c  */
    7238 #line 1613 "parser.yy"
     7239#line 1614 "parser.yy"
    72397240    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72407241    break;
     
    72437244
    72447245/* Line 1806 of yacc.c  */
    7245 #line 1615 "parser.yy"
     7246#line 1616 "parser.yy"
    72467247    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    72477248    break;
     
    72507251
    72517252/* Line 1806 of yacc.c  */
    7252 #line 1621 "parser.yy"
     7253#line 1622 "parser.yy"
    72537254    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72547255    break;
     
    72577258
    72587259/* Line 1806 of yacc.c  */
    7259 #line 1626 "parser.yy"
     7260#line 1627 "parser.yy"
    72607261    { (yyval.decl) = 0; }
    72617262    break;
     
    72647265
    72657266/* Line 1806 of yacc.c  */
    7266 #line 1633 "parser.yy"
     7267#line 1634 "parser.yy"
    72677268    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72687269    break;
     
    72717272
    72727273/* Line 1806 of yacc.c  */
    7273 #line 1640 "parser.yy"
     7274#line 1641 "parser.yy"
    72747275    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72757276    break;
     
    72787279
    72797280/* Line 1806 of yacc.c  */
    7280 #line 1642 "parser.yy"
     7281#line 1643 "parser.yy"
    72817282    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72827283    break;
     
    72857286
    72867287/* Line 1806 of yacc.c  */
    7287 #line 1651 "parser.yy"
     7288#line 1652 "parser.yy"
    72887289    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72897290    break;
     
    72927293
    72937294/* Line 1806 of yacc.c  */
    7294 #line 1654 "parser.yy"
     7295#line 1655 "parser.yy"
    72957296    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72967297    break;
     
    72997300
    73007301/* Line 1806 of yacc.c  */
    7301 #line 1656 "parser.yy"
     7302#line 1657 "parser.yy"
    73027303    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    73037304    break;
     
    73067307
    73077308/* Line 1806 of yacc.c  */
    7308 #line 1666 "parser.yy"
     7309#line 1667 "parser.yy"
    73097310    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73107311    break;
     
    73137314
    73147315/* Line 1806 of yacc.c  */
    7315 #line 1672 "parser.yy"
     7316#line 1673 "parser.yy"
    73167317    {
    73177318                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73237324
    73247325/* Line 1806 of yacc.c  */
    7325 #line 1677 "parser.yy"
     7326#line 1678 "parser.yy"
    73267327    {
    73277328                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73337334
    73347335/* Line 1806 of yacc.c  */
    7335 #line 1686 "parser.yy"
     7336#line 1687 "parser.yy"
    73367337    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73377338    break;
     
    73407341
    73417342/* Line 1806 of yacc.c  */
    7342 #line 1695 "parser.yy"
     7343#line 1696 "parser.yy"
    73437344    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73447345    break;
     
    73477348
    73487349/* Line 1806 of yacc.c  */
    7349 #line 1697 "parser.yy"
     7350#line 1698 "parser.yy"
    73507351    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    73517352    break;
     
    73547355
    73557356/* Line 1806 of yacc.c  */
    7356 #line 1722 "parser.yy"
     7357#line 1723 "parser.yy"
    73577358    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73587359    break;
     
    73617362
    73627363/* Line 1806 of yacc.c  */
    7363 #line 1730 "parser.yy"
     7364#line 1731 "parser.yy"
    73647365    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73657366    break;
     
    73687369
    73697370/* Line 1806 of yacc.c  */
    7370 #line 1735 "parser.yy"
     7371#line 1736 "parser.yy"
    73717372    { (yyval.in) = 0; }
    73727373    break;
     
    73757376
    73767377/* Line 1806 of yacc.c  */
    7377 #line 1737 "parser.yy"
     7378#line 1738 "parser.yy"
    73787379    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73797380    break;
     
    73827383
    73837384/* Line 1806 of yacc.c  */
    7384 #line 1739 "parser.yy"
     7385#line 1740 "parser.yy"
    73857386    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    73867387    break;
     
    73897390
    73907391/* Line 1806 of yacc.c  */
    7391 #line 1743 "parser.yy"
     7392#line 1744 "parser.yy"
    73927393    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    73937394    break;
     
    73967397
    73977398/* Line 1806 of yacc.c  */
    7398 #line 1744 "parser.yy"
     7399#line 1745 "parser.yy"
    73997400    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    74007401    break;
     
    74037404
    74047405/* Line 1806 of yacc.c  */
    7405 #line 1749 "parser.yy"
     7406#line 1750 "parser.yy"
    74067407    { (yyval.in) = 0; }
    74077408    break;
     
    74107411
    74117412/* Line 1806 of yacc.c  */
    7412 #line 1751 "parser.yy"
     7413#line 1752 "parser.yy"
    74137414    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    74147415    break;
     
    74177418
    74187419/* Line 1806 of yacc.c  */
    7419 #line 1752 "parser.yy"
     7420#line 1753 "parser.yy"
    74207421    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    74217422    break;
     
    74247425
    74257426/* Line 1806 of yacc.c  */
    7426 #line 1754 "parser.yy"
     7427#line 1755 "parser.yy"
    74277428    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74287429    break;
     
    74317432
    74327433/* Line 1806 of yacc.c  */
    7433 #line 1770 "parser.yy"
     7434#line 1771 "parser.yy"
    74347435    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    74357436    break;
     
    74387439
    74397440/* Line 1806 of yacc.c  */
    7440 #line 1776 "parser.yy"
     7441#line 1777 "parser.yy"
    74417442    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    74427443    break;
     
    74457446
    74467447/* Line 1806 of yacc.c  */
    7447 #line 1782 "parser.yy"
     7448#line 1783 "parser.yy"
    74487449    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    74497450    break;
     
    74527453
    74537454/* Line 1806 of yacc.c  */
    7454 #line 1785 "parser.yy"
     7455#line 1786 "parser.yy"
    74557456    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74567457    break;
     
    74597460
    74607461/* Line 1806 of yacc.c  */
    7461 #line 1787 "parser.yy"
     7462#line 1788 "parser.yy"
    74627463    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74637464    break;
     
    74667467
    74677468/* Line 1806 of yacc.c  */
    7468 #line 1789 "parser.yy"
     7469#line 1790 "parser.yy"
    74697470    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    74707471    break;
     
    74737474
    74747475/* Line 1806 of yacc.c  */
    7475 #line 1791 "parser.yy"
     7476#line 1792 "parser.yy"
    74767477    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74777478    break;
     
    74807481
    74817482/* Line 1806 of yacc.c  */
    7482 #line 1815 "parser.yy"
     7483#line 1816 "parser.yy"
    74837484    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74847485    break;
     
    74877488
    74887489/* Line 1806 of yacc.c  */
    7489 #line 1817 "parser.yy"
     7490#line 1818 "parser.yy"
    74907491    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74917492    break;
     
    74947495
    74957496/* Line 1806 of yacc.c  */
    7496 #line 1819 "parser.yy"
     7497#line 1820 "parser.yy"
    74977498    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    74987499    break;
     
    75017502
    75027503/* Line 1806 of yacc.c  */
    7503 #line 1825 "parser.yy"
     7504#line 1826 "parser.yy"
    75047505    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75057506    break;
     
    75087509
    75097510/* Line 1806 of yacc.c  */
    7510 #line 1827 "parser.yy"
     7511#line 1828 "parser.yy"
    75117512    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75127513    break;
     
    75157516
    75167517/* Line 1806 of yacc.c  */
    7517 #line 1832 "parser.yy"
     7518#line 1833 "parser.yy"
    75187519    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75197520    break;
     
    75227523
    75237524/* Line 1806 of yacc.c  */
    7524 #line 1838 "parser.yy"
     7525#line 1839 "parser.yy"
    75257526    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75267527    break;
     
    75297530
    75307531/* Line 1806 of yacc.c  */
    7531 #line 1843 "parser.yy"
     7532#line 1844 "parser.yy"
    75327533    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75337534    break;
     
    75367537
    75377538/* Line 1806 of yacc.c  */
    7538 #line 1845 "parser.yy"
     7539#line 1846 "parser.yy"
    75397540    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75407541    break;
     
    75437544
    75447545/* Line 1806 of yacc.c  */
    7545 #line 1851 "parser.yy"
     7546#line 1852 "parser.yy"
    75467547    { (yyval.tclass) = DeclarationNode::Otype; }
    75477548    break;
     
    75507551
    75517552/* Line 1806 of yacc.c  */
    7552 #line 1853 "parser.yy"
     7553#line 1854 "parser.yy"
    75537554    { (yyval.tclass) = DeclarationNode::Ftype; }
    75547555    break;
     
    75577558
    75587559/* Line 1806 of yacc.c  */
    7559 #line 1855 "parser.yy"
     7560#line 1856 "parser.yy"
    75607561    { (yyval.tclass) = DeclarationNode::Dtype; }
    75617562    break;
     
    75647565
    75657566/* Line 1806 of yacc.c  */
    7566 #line 1860 "parser.yy"
     7567#line 1861 "parser.yy"
    75677568    { (yyval.decl) = 0; }
    75687569    break;
     
    75717572
    75727573/* Line 1806 of yacc.c  */
    7573 #line 1862 "parser.yy"
     7574#line 1863 "parser.yy"
    75747575    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    75757576    break;
     
    75787579
    75797580/* Line 1806 of yacc.c  */
    7580 #line 1867 "parser.yy"
     7581#line 1868 "parser.yy"
    75817582    {
    75827583                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    75887589
    75897590/* Line 1806 of yacc.c  */
    7590 #line 1872 "parser.yy"
     7591#line 1873 "parser.yy"
    75917592    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    75927593    break;
     
    75957596
    75967597/* Line 1806 of yacc.c  */
    7597 #line 1874 "parser.yy"
     7598#line 1875 "parser.yy"
    75987599    { (yyval.decl) = 0; }
    75997600    break;
     
    76027603
    76037604/* Line 1806 of yacc.c  */
    7604 #line 1879 "parser.yy"
     7605#line 1880 "parser.yy"
    76057606    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    76067607    break;
     
    76097610
    76107611/* Line 1806 of yacc.c  */
    7611 #line 1882 "parser.yy"
     7612#line 1883 "parser.yy"
    76127613    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    76137614    break;
     
    76167617
    76177618/* Line 1806 of yacc.c  */
    7618 #line 1884 "parser.yy"
     7619#line 1885 "parser.yy"
    76197620    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    76207621    break;
     
    76237624
    76247625/* Line 1806 of yacc.c  */
    7625 #line 1889 "parser.yy"
     7626#line 1890 "parser.yy"
    76267627    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76277628    break;
     
    76307631
    76317632/* Line 1806 of yacc.c  */
    7632 #line 1891 "parser.yy"
     7633#line 1892 "parser.yy"
    76337634    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76347635    break;
     
    76377638
    76387639/* Line 1806 of yacc.c  */
    7639 #line 1893 "parser.yy"
     7640#line 1894 "parser.yy"
    76407641    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76417642    break;
     
    76447645
    76457646/* Line 1806 of yacc.c  */
    7646 #line 1898 "parser.yy"
     7647#line 1899 "parser.yy"
    76477648    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76487649    break;
     
    76517652
    76527653/* Line 1806 of yacc.c  */
    7653 #line 1900 "parser.yy"
     7654#line 1901 "parser.yy"
    76547655    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76557656    break;
     
    76587659
    76597660/* Line 1806 of yacc.c  */
    7660 #line 1905 "parser.yy"
     7661#line 1906 "parser.yy"
    76617662    {
    76627663                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76687669
    76697670/* Line 1806 of yacc.c  */
    7670 #line 1910 "parser.yy"
     7671#line 1911 "parser.yy"
    76717672    {
    76727673                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76787679
    76797680/* Line 1806 of yacc.c  */
    7680 #line 1918 "parser.yy"
     7681#line 1919 "parser.yy"
    76817682    {
    76827683                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76887689
    76897690/* Line 1806 of yacc.c  */
    7690 #line 1923 "parser.yy"
     7691#line 1924 "parser.yy"
    76917692    {
    76927693                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    76987699
    76997700/* Line 1806 of yacc.c  */
    7700 #line 1928 "parser.yy"
     7701#line 1929 "parser.yy"
    77017702    {
    77027703                        typedefTable.leaveTrait();
     
    77097710
    77107711/* Line 1806 of yacc.c  */
    7711 #line 1938 "parser.yy"
     7712#line 1939 "parser.yy"
    77127713    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77137714    break;
     
    77167717
    77177718/* Line 1806 of yacc.c  */
    7718 #line 1948 "parser.yy"
     7719#line 1949 "parser.yy"
    77197720    {
    77207721                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77267727
    77277728/* Line 1806 of yacc.c  */
    7728 #line 1953 "parser.yy"
     7729#line 1954 "parser.yy"
    77297730    {
    77307731                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77367737
    77377738/* Line 1806 of yacc.c  */
    7738 #line 1958 "parser.yy"
     7739#line 1959 "parser.yy"
    77397740    {
    77407741                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77467747
    77477748/* Line 1806 of yacc.c  */
    7748 #line 1966 "parser.yy"
     7749#line 1967 "parser.yy"
    77497750    {
    77507751                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77567757
    77577758/* Line 1806 of yacc.c  */
    7758 #line 1971 "parser.yy"
     7759#line 1972 "parser.yy"
    77597760    {
    77607761                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77667767
    77677768/* Line 1806 of yacc.c  */
    7768 #line 1981 "parser.yy"
     7769#line 1982 "parser.yy"
    77697770    {}
    77707771    break;
     
    77737774
    77747775/* Line 1806 of yacc.c  */
    7775 #line 1983 "parser.yy"
     7776#line 1984 "parser.yy"
    77767777    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
    77777778    break;
     
    77807781
    77817782/* Line 1806 of yacc.c  */
    7782 #line 1989 "parser.yy"
     7783#line 1990 "parser.yy"
    77837784    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77847785    break;
     
    77877788
    77887789/* Line 1806 of yacc.c  */
    7789 #line 1994 "parser.yy"
     7790#line 1995 "parser.yy"
    77907791    { (yyval.decl) = 0; }
    77917792    break;
     
    77947795
    77957796/* Line 1806 of yacc.c  */
    7796 #line 2002 "parser.yy"
     7797#line 2003 "parser.yy"
    77977798    {}
    77987799    break;
     
    78017802
    78027803/* Line 1806 of yacc.c  */
    7803 #line 2004 "parser.yy"
     7804#line 2005 "parser.yy"
    78047805    {
    78057806                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     
    78117812
    78127813/* Line 1806 of yacc.c  */
    7813 #line 2009 "parser.yy"
     7814#line 2010 "parser.yy"
    78147815    {
    78157816                        linkage = linkageStack.top();
     
    78227823
    78237824/* Line 1806 of yacc.c  */
    7824 #line 2015 "parser.yy"
     7825#line 2016 "parser.yy"
    78257826    {   // mark all fields in list
    78267827                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    78337834
    78347835/* Line 1806 of yacc.c  */
    7835 #line 2030 "parser.yy"
     7836#line 2031 "parser.yy"
    78367837    {
    78377838                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78447845
    78457846/* Line 1806 of yacc.c  */
    7846 #line 2036 "parser.yy"
     7847#line 2037 "parser.yy"
    78477848    {
    78487849                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78557856
    78567857/* Line 1806 of yacc.c  */
    7857 #line 2045 "parser.yy"
     7858#line 2046 "parser.yy"
    78587859    {
    78597860                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78667867
    78677868/* Line 1806 of yacc.c  */
    7868 #line 2051 "parser.yy"
     7869#line 2052 "parser.yy"
    78697870    {
    78707871                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78777878
    78787879/* Line 1806 of yacc.c  */
    7879 #line 2057 "parser.yy"
     7880#line 2058 "parser.yy"
    78807881    {
    78817882                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78887889
    78897890/* Line 1806 of yacc.c  */
    7890 #line 2063 "parser.yy"
     7891#line 2064 "parser.yy"
    78917892    {
    78927893                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78997900
    79007901/* Line 1806 of yacc.c  */
    7901 #line 2069 "parser.yy"
     7902#line 2070 "parser.yy"
    79027903    {
    79037904                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79107911
    79117912/* Line 1806 of yacc.c  */
    7912 #line 2077 "parser.yy"
     7913#line 2078 "parser.yy"
    79137914    {
    79147915                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79217922
    79227923/* Line 1806 of yacc.c  */
    7923 #line 2083 "parser.yy"
     7924#line 2084 "parser.yy"
    79247925    {
    79257926                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79327933
    79337934/* Line 1806 of yacc.c  */
    7934 #line 2091 "parser.yy"
     7935#line 2092 "parser.yy"
    79357936    {
    79367937                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79437944
    79447945/* Line 1806 of yacc.c  */
    7945 #line 2097 "parser.yy"
     7946#line 2098 "parser.yy"
    79467947    {
    79477948                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79547955
    79557956/* Line 1806 of yacc.c  */
    7956 #line 2112 "parser.yy"
     7957#line 2113 "parser.yy"
    79577958    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    79587959    break;
     
    79617962
    79627963/* Line 1806 of yacc.c  */
    7963 #line 2117 "parser.yy"
     7964#line 2118 "parser.yy"
    79647965    { delete (yyvsp[(3) - (5)].str); }
    79657966    break;
     
    79687969
    79697970/* Line 1806 of yacc.c  */
    7970 #line 2122 "parser.yy"
     7971#line 2123 "parser.yy"
    79717972    { (yyval.decl) = 0; }
    79727973    break;
     
    79757976
    79767977/* Line 1806 of yacc.c  */
    7977 #line 2129 "parser.yy"
     7978#line 2130 "parser.yy"
    79787979    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    79797980    break;
     
    79827983
    79837984/* Line 1806 of yacc.c  */
    7984 #line 2135 "parser.yy"
     7985#line 2136 "parser.yy"
    79857986    { (yyval.decl) = 0; }
    79867987    break;
     
    79897990
    79907991/* Line 1806 of yacc.c  */
    7991 #line 2146 "parser.yy"
     7992#line 2147 "parser.yy"
    79927993    { delete (yyvsp[(3) - (4)].en); }
    79937994    break;
     
    79967997
    79977998/* Line 1806 of yacc.c  */
    7998 #line 2150 "parser.yy"
     7999#line 2151 "parser.yy"
    79998000    { delete (yyvsp[(1) - (1)].tok); }
    80008001    break;
    80018002
    80028003  case 557:
    8003 
    8004 /* Line 1806 of yacc.c  */
    8005 #line 2151 "parser.yy"
    8006     { delete (yyvsp[(1) - (1)].decl); }
    8007     break;
    8008 
    8009   case 558:
    80108004
    80118005/* Line 1806 of yacc.c  */
     
    80148008    break;
    80158009
    8016   case 559:
     8010  case 558:
    80178011
    80188012/* Line 1806 of yacc.c  */
     
    80218015    break;
    80228016
     8017  case 559:
     8018
     8019/* Line 1806 of yacc.c  */
     8020#line 2154 "parser.yy"
     8021    { delete (yyvsp[(1) - (1)].decl); }
     8022    break;
     8023
    80238024  case 560:
    80248025
    80258026/* Line 1806 of yacc.c  */
    8026 #line 2188 "parser.yy"
     8027#line 2189 "parser.yy"
    80278028    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80288029    break;
     
    80318032
    80328033/* Line 1806 of yacc.c  */
    8033 #line 2191 "parser.yy"
     8034#line 2192 "parser.yy"
    80348035    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80358036    break;
     
    80388039
    80398040/* Line 1806 of yacc.c  */
    8040 #line 2193 "parser.yy"
     8041#line 2194 "parser.yy"
    80418042    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80428043    break;
     
    80458046
    80468047/* Line 1806 of yacc.c  */
    8047 #line 2198 "parser.yy"
     8048#line 2199 "parser.yy"
    80488049    {
    80498050                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80558056
    80568057/* Line 1806 of yacc.c  */
    8057 #line 2203 "parser.yy"
     8058#line 2204 "parser.yy"
    80588059    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80598060    break;
     
    80628063
    80638064/* Line 1806 of yacc.c  */
    8064 #line 2208 "parser.yy"
     8065#line 2209 "parser.yy"
    80658066    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80668067    break;
     
    80698070
    80708071/* Line 1806 of yacc.c  */
    8071 #line 2210 "parser.yy"
     8072#line 2211 "parser.yy"
    80728073    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80738074    break;
     
    80768077
    80778078/* Line 1806 of yacc.c  */
    8078 #line 2212 "parser.yy"
     8079#line 2213 "parser.yy"
    80798080    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80808081    break;
     
    80838084
    80848085/* Line 1806 of yacc.c  */
    8085 #line 2217 "parser.yy"
     8086#line 2218 "parser.yy"
    80868087    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    80878088    break;
     
    80908091
    80918092/* Line 1806 of yacc.c  */
    8092 #line 2219 "parser.yy"
     8093#line 2220 "parser.yy"
    80938094    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80948095    break;
     
    80978098
    80988099/* Line 1806 of yacc.c  */
    8099 #line 2221 "parser.yy"
     8100#line 2222 "parser.yy"
    81008101    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81018102    break;
     
    81048105
    81058106/* Line 1806 of yacc.c  */
    8106 #line 2223 "parser.yy"
     8107#line 2224 "parser.yy"
    81078108    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81088109    break;
     
    81118112
    81128113/* Line 1806 of yacc.c  */
    8113 #line 2228 "parser.yy"
     8114#line 2229 "parser.yy"
    81148115    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81158116    break;
     
    81188119
    81198120/* Line 1806 of yacc.c  */
    8120 #line 2230 "parser.yy"
     8121#line 2231 "parser.yy"
    81218122    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81228123    break;
     
    81258126
    81268127/* Line 1806 of yacc.c  */
    8127 #line 2239 "parser.yy"
     8128#line 2240 "parser.yy"
    81288129    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81298130    break;
     
    81328133
    81338134/* Line 1806 of yacc.c  */
    8134 #line 2242 "parser.yy"
     8135#line 2243 "parser.yy"
    81358136    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81368137    break;
     
    81398140
    81408141/* Line 1806 of yacc.c  */
    8141 #line 2247 "parser.yy"
     8142#line 2248 "parser.yy"
    81428143    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81438144    break;
     
    81468147
    81478148/* Line 1806 of yacc.c  */
    8148 #line 2249 "parser.yy"
     8149#line 2250 "parser.yy"
    81498150    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81508151    break;
     
    81538154
    81548155/* Line 1806 of yacc.c  */
    8155 #line 2251 "parser.yy"
     8156#line 2252 "parser.yy"
    81568157    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81578158    break;
     
    81608161
    81618162/* Line 1806 of yacc.c  */
    8162 #line 2256 "parser.yy"
     8163#line 2257 "parser.yy"
    81638164    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81648165    break;
     
    81678168
    81688169/* Line 1806 of yacc.c  */
    8169 #line 2258 "parser.yy"
     8170#line 2259 "parser.yy"
    81708171    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81718172    break;
     
    81748175
    81758176/* Line 1806 of yacc.c  */
    8176 #line 2260 "parser.yy"
     8177#line 2261 "parser.yy"
    81778178    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81788179    break;
     
    81818182
    81828183/* Line 1806 of yacc.c  */
    8183 #line 2265 "parser.yy"
     8184#line 2266 "parser.yy"
    81848185    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81858186    break;
     
    81888189
    81898190/* Line 1806 of yacc.c  */
    8190 #line 2267 "parser.yy"
     8191#line 2268 "parser.yy"
    81918192    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81928193    break;
     
    81958196
    81968197/* Line 1806 of yacc.c  */
    8197 #line 2269 "parser.yy"
     8198#line 2270 "parser.yy"
    81988199    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81998200    break;
     
    82028203
    82038204/* Line 1806 of yacc.c  */
    8204 #line 2284 "parser.yy"
     8205#line 2285 "parser.yy"
    82058206    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    82068207    break;
     
    82098210
    82108211/* Line 1806 of yacc.c  */
    8211 #line 2286 "parser.yy"
     8212#line 2287 "parser.yy"
    82128213    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    82138214    break;
     
    82168217
    82178218/* Line 1806 of yacc.c  */
    8218 #line 2288 "parser.yy"
     8219#line 2289 "parser.yy"
    82198220    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82208221    break;
     
    82238224
    82248225/* Line 1806 of yacc.c  */
    8225 #line 2293 "parser.yy"
     8226#line 2294 "parser.yy"
    82268227    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82278228    break;
     
    82308231
    82318232/* Line 1806 of yacc.c  */
    8232 #line 2295 "parser.yy"
     8233#line 2296 "parser.yy"
    82338234    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82348235    break;
     
    82378238
    82388239/* Line 1806 of yacc.c  */
    8239 #line 2297 "parser.yy"
     8240#line 2298 "parser.yy"
    82408241    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82418242    break;
     
    82448245
    82458246/* Line 1806 of yacc.c  */
    8246 #line 2302 "parser.yy"
     8247#line 2303 "parser.yy"
    82478248    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82488249    break;
     
    82518252
    82528253/* Line 1806 of yacc.c  */
    8253 #line 2304 "parser.yy"
     8254#line 2305 "parser.yy"
    82548255    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82558256    break;
     
    82588259
    82598260/* Line 1806 of yacc.c  */
    8260 #line 2306 "parser.yy"
     8261#line 2307 "parser.yy"
    82618262    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82628263    break;
     
    82658266
    82668267/* Line 1806 of yacc.c  */
    8267 #line 2321 "parser.yy"
     8268#line 2322 "parser.yy"
    82688269    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82698270    break;
     
    82728273
    82738274/* Line 1806 of yacc.c  */
    8274 #line 2324 "parser.yy"
     8275#line 2325 "parser.yy"
    82758276    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82768277    break;
     
    82798280
    82808281/* Line 1806 of yacc.c  */
    8281 #line 2326 "parser.yy"
     8282#line 2327 "parser.yy"
    82828283    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82838284    break;
     
    82868287
    82878288/* Line 1806 of yacc.c  */
    8288 #line 2332 "parser.yy"
     8289#line 2333 "parser.yy"
    82898290    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82908291    break;
     
    82938294
    82948295/* Line 1806 of yacc.c  */
    8295 #line 2337 "parser.yy"
     8296#line 2338 "parser.yy"
    82968297    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82978298    break;
     
    83008301
    83018302/* Line 1806 of yacc.c  */
    8302 #line 2339 "parser.yy"
     8303#line 2340 "parser.yy"
    83038304    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83048305    break;
     
    83078308
    83088309/* Line 1806 of yacc.c  */
    8309 #line 2341 "parser.yy"
     8310#line 2342 "parser.yy"
    83108311    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83118312    break;
     
    83148315
    83158316/* Line 1806 of yacc.c  */
    8316 #line 2346 "parser.yy"
     8317#line 2347 "parser.yy"
    83178318    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83188319    break;
     
    83218322
    83228323/* Line 1806 of yacc.c  */
    8323 #line 2348 "parser.yy"
     8324#line 2349 "parser.yy"
    83248325    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83258326    break;
     
    83288329
    83298330/* Line 1806 of yacc.c  */
    8330 #line 2350 "parser.yy"
     8331#line 2351 "parser.yy"
    83318332    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83328333    break;
     
    83358336
    83368337/* Line 1806 of yacc.c  */
    8337 #line 2352 "parser.yy"
     8338#line 2353 "parser.yy"
    83388339    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83398340    break;
     
    83428343
    83438344/* Line 1806 of yacc.c  */
    8344 #line 2357 "parser.yy"
     8345#line 2358 "parser.yy"
    83458346    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83468347    break;
     
    83498350
    83508351/* Line 1806 of yacc.c  */
    8351 #line 2359 "parser.yy"
     8352#line 2360 "parser.yy"
    83528353    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83538354    break;
     
    83568357
    83578358/* Line 1806 of yacc.c  */
    8358 #line 2361 "parser.yy"
     8359#line 2362 "parser.yy"
    83598360    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83608361    break;
     
    83638364
    83648365/* Line 1806 of yacc.c  */
    8365 #line 2371 "parser.yy"
     8366#line 2372 "parser.yy"
    83668367    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83678368    break;
     
    83708371
    83718372/* Line 1806 of yacc.c  */
    8372 #line 2374 "parser.yy"
     8373#line 2375 "parser.yy"
    83738374    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83748375    break;
     
    83778378
    83788379/* Line 1806 of yacc.c  */
    8379 #line 2376 "parser.yy"
     8380#line 2377 "parser.yy"
    83808381    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83818382    break;
     
    83848385
    83858386/* Line 1806 of yacc.c  */
    8386 #line 2381 "parser.yy"
     8387#line 2382 "parser.yy"
    83878388    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83888389    break;
     
    83918392
    83928393/* Line 1806 of yacc.c  */
    8393 #line 2383 "parser.yy"
     8394#line 2384 "parser.yy"
    83948395    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83958396    break;
     
    83988399
    83998400/* Line 1806 of yacc.c  */
    8400 #line 2385 "parser.yy"
     8401#line 2386 "parser.yy"
    84018402    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84028403    break;
     
    84058406
    84068407/* Line 1806 of yacc.c  */
    8407 #line 2390 "parser.yy"
     8408#line 2391 "parser.yy"
    84088409    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84098410    break;
     
    84128413
    84138414/* Line 1806 of yacc.c  */
    8414 #line 2392 "parser.yy"
     8415#line 2393 "parser.yy"
    84158416    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84168417    break;
     
    84198420
    84208421/* Line 1806 of yacc.c  */
    8421 #line 2394 "parser.yy"
     8422#line 2395 "parser.yy"
    84228423    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84238424    break;
     
    84268427
    84278428/* Line 1806 of yacc.c  */
    8428 #line 2396 "parser.yy"
     8429#line 2397 "parser.yy"
    84298430    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84308431    break;
     
    84338434
    84348435/* Line 1806 of yacc.c  */
    8435 #line 2401 "parser.yy"
     8436#line 2402 "parser.yy"
    84368437    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84378438    break;
     
    84408441
    84418442/* Line 1806 of yacc.c  */
    8442 #line 2403 "parser.yy"
     8443#line 2404 "parser.yy"
    84438444    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84448445    break;
     
    84478448
    84488449/* Line 1806 of yacc.c  */
    8449 #line 2405 "parser.yy"
     8450#line 2406 "parser.yy"
    84508451    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84518452    break;
     
    84548455
    84558456/* Line 1806 of yacc.c  */
    8456 #line 2436 "parser.yy"
     8457#line 2437 "parser.yy"
    84578458    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84588459    break;
     
    84618462
    84628463/* Line 1806 of yacc.c  */
    8463 #line 2439 "parser.yy"
     8464#line 2440 "parser.yy"
    84648465    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84658466    break;
     
    84688469
    84698470/* Line 1806 of yacc.c  */
    8470 #line 2441 "parser.yy"
     8471#line 2442 "parser.yy"
    84718472    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84728473    break;
     
    84758476
    84768477/* Line 1806 of yacc.c  */
    8477 #line 2446 "parser.yy"
     8478#line 2447 "parser.yy"
    84788479    {
    84798480                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84858486
    84868487/* Line 1806 of yacc.c  */
    8487 #line 2451 "parser.yy"
     8488#line 2452 "parser.yy"
    84888489    {
    84898490                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    84958496
    84968497/* Line 1806 of yacc.c  */
    8497 #line 2459 "parser.yy"
     8498#line 2460 "parser.yy"
    84988499    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84998500    break;
     
    85028503
    85038504/* Line 1806 of yacc.c  */
    8504 #line 2461 "parser.yy"
     8505#line 2462 "parser.yy"
    85058506    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85068507    break;
     
    85098510
    85108511/* Line 1806 of yacc.c  */
    8511 #line 2463 "parser.yy"
     8512#line 2464 "parser.yy"
    85128513    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85138514    break;
     
    85168517
    85178518/* Line 1806 of yacc.c  */
    8518 #line 2468 "parser.yy"
     8519#line 2469 "parser.yy"
    85198520    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    85208521    break;
     
    85238524
    85248525/* Line 1806 of yacc.c  */
    8525 #line 2470 "parser.yy"
     8526#line 2471 "parser.yy"
    85268527    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85278528    break;
     
    85308531
    85318532/* Line 1806 of yacc.c  */
    8532 #line 2475 "parser.yy"
     8533#line 2476 "parser.yy"
    85338534    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85348535    break;
     
    85378538
    85388539/* Line 1806 of yacc.c  */
    8539 #line 2477 "parser.yy"
     8540#line 2478 "parser.yy"
    85408541    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85418542    break;
     
    85448545
    85458546/* Line 1806 of yacc.c  */
    8546 #line 2492 "parser.yy"
     8547#line 2493 "parser.yy"
    85478548    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85488549    break;
     
    85518552
    85528553/* Line 1806 of yacc.c  */
    8553 #line 2494 "parser.yy"
     8554#line 2495 "parser.yy"
    85548555    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85558556    break;
     
    85588559
    85598560/* Line 1806 of yacc.c  */
    8560 #line 2499 "parser.yy"
     8561#line 2500 "parser.yy"
    85618562    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85628563    break;
     
    85658566
    85668567/* Line 1806 of yacc.c  */
    8567 #line 2501 "parser.yy"
     8568#line 2502 "parser.yy"
    85688569    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85698570    break;
     
    85728573
    85738574/* Line 1806 of yacc.c  */
    8574 #line 2503 "parser.yy"
     8575#line 2504 "parser.yy"
    85758576    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85768577    break;
     
    85798580
    85808581/* Line 1806 of yacc.c  */
    8581 #line 2505 "parser.yy"
     8582#line 2506 "parser.yy"
    85828583    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85838584    break;
     
    85868587
    85878588/* Line 1806 of yacc.c  */
    8588 #line 2507 "parser.yy"
     8589#line 2508 "parser.yy"
    85898590    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85908591    break;
     
    85938594
    85948595/* Line 1806 of yacc.c  */
    8595 #line 2513 "parser.yy"
     8596#line 2514 "parser.yy"
    85968597    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85978598    break;
     
    86008601
    86018602/* Line 1806 of yacc.c  */
    8602 #line 2515 "parser.yy"
     8603#line 2516 "parser.yy"
    86038604    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86048605    break;
     
    86078608
    86088609/* Line 1806 of yacc.c  */
    8609 #line 2517 "parser.yy"
     8610#line 2518 "parser.yy"
    86108611    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86118612    break;
     
    86148615
    86158616/* Line 1806 of yacc.c  */
    8616 #line 2522 "parser.yy"
    8617     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8617#line 2523 "parser.yy"
     8618    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    86188619    break;
    86198620
     
    86218622
    86228623/* Line 1806 of yacc.c  */
    8623 #line 2524 "parser.yy"
     8624#line 2525 "parser.yy"
    86248625    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86258626    break;
     
    86288629
    86298630/* Line 1806 of yacc.c  */
    8630 #line 2526 "parser.yy"
     8631#line 2527 "parser.yy"
    86318632    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86328633    break;
     
    86358636
    86368637/* Line 1806 of yacc.c  */
    8637 #line 2532 "parser.yy"
     8638#line 2533 "parser.yy"
    86388639    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86398640    break;
     
    86428643
    86438644/* Line 1806 of yacc.c  */
    8644 #line 2534 "parser.yy"
     8645#line 2535 "parser.yy"
    86458646    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    86468647    break;
     
    86498650
    86508651/* Line 1806 of yacc.c  */
    8651 #line 2540 "parser.yy"
     8652#line 2541 "parser.yy"
    86528653    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    86538654    break;
     
    86568657
    86578658/* Line 1806 of yacc.c  */
    8658 #line 2542 "parser.yy"
     8659#line 2543 "parser.yy"
    86598660    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    86608661    break;
     
    86638664
    86648665/* Line 1806 of yacc.c  */
    8665 #line 2544 "parser.yy"
     8666#line 2545 "parser.yy"
    86668667    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    86678668    break;
     
    86708671
    86718672/* Line 1806 of yacc.c  */
    8672 #line 2546 "parser.yy"
     8673#line 2547 "parser.yy"
    86738674    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    86748675    break;
     
    86778678
    86788679/* Line 1806 of yacc.c  */
    8679 #line 2561 "parser.yy"
     8680#line 2562 "parser.yy"
    86808681    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86818682    break;
     
    86848685
    86858686/* Line 1806 of yacc.c  */
    8686 #line 2563 "parser.yy"
     8687#line 2564 "parser.yy"
    86878688    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    86888689    break;
     
    86918692
    86928693/* Line 1806 of yacc.c  */
    8693 #line 2568 "parser.yy"
     8694#line 2569 "parser.yy"
    86948695    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    86958696    break;
     
    86988699
    86998700/* Line 1806 of yacc.c  */
    8700 #line 2570 "parser.yy"
     8701#line 2571 "parser.yy"
    87018702    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87028703    break;
     
    87058706
    87068707/* Line 1806 of yacc.c  */
    8707 #line 2572 "parser.yy"
     8708#line 2573 "parser.yy"
    87088709    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87098710    break;
     
    87128713
    87138714/* Line 1806 of yacc.c  */
    8714 #line 2574 "parser.yy"
     8715#line 2575 "parser.yy"
    87158716    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87168717    break;
     
    87198720
    87208721/* Line 1806 of yacc.c  */
    8721 #line 2576 "parser.yy"
     8722#line 2577 "parser.yy"
    87228723    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87238724    break;
     
    87268727
    87278728/* Line 1806 of yacc.c  */
    8728 #line 2582 "parser.yy"
     8729#line 2583 "parser.yy"
    87298730    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87308731    break;
     
    87338734
    87348735/* Line 1806 of yacc.c  */
    8735 #line 2584 "parser.yy"
     8736#line 2585 "parser.yy"
    87368737    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87378738    break;
     
    87408741
    87418742/* Line 1806 of yacc.c  */
    8742 #line 2586 "parser.yy"
     8743#line 2587 "parser.yy"
    87438744    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87448745    break;
     
    87478748
    87488749/* Line 1806 of yacc.c  */
    8749 #line 2591 "parser.yy"
    8750     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     8750#line 2592 "parser.yy"
     8751    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    87518752    break;
    87528753
     
    87548755
    87558756/* Line 1806 of yacc.c  */
    8756 #line 2593 "parser.yy"
     8757#line 2594 "parser.yy"
    87578758    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87588759    break;
     
    87618762
    87628763/* Line 1806 of yacc.c  */
    8763 #line 2595 "parser.yy"
     8764#line 2596 "parser.yy"
    87648765    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87658766    break;
     
    87688769
    87698770/* Line 1806 of yacc.c  */
    8770 #line 2602 "parser.yy"
     8771#line 2603 "parser.yy"
    87718772    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87728773    break;
     
    87758776
    87768777/* Line 1806 of yacc.c  */
    8777 #line 2613 "parser.yy"
     8778#line 2614 "parser.yy"
    87788779    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    87798780    break;
     
    87828783
    87838784/* Line 1806 of yacc.c  */
    8784 #line 2616 "parser.yy"
     8785#line 2617 "parser.yy"
    87858786    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    87868787    break;
     
    87898790
    87908791/* Line 1806 of yacc.c  */
    8791 #line 2618 "parser.yy"
     8792#line 2619 "parser.yy"
    87928793    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    87938794    break;
     
    87968797
    87978798/* Line 1806 of yacc.c  */
    8798 #line 2621 "parser.yy"
     8799#line 2622 "parser.yy"
    87998800    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88008801    break;
     
    88038804
    88048805/* Line 1806 of yacc.c  */
    8805 #line 2623 "parser.yy"
     8806#line 2624 "parser.yy"
    88068807    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    88078808    break;
     
    88108811
    88118812/* Line 1806 of yacc.c  */
    8812 #line 2625 "parser.yy"
     8813#line 2626 "parser.yy"
    88138814    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    88148815    break;
     
    88178818
    88188819/* Line 1806 of yacc.c  */
    8819 #line 2639 "parser.yy"
     8820#line 2640 "parser.yy"
    88208821    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88218822    break;
     
    88248825
    88258826/* Line 1806 of yacc.c  */
    8826 #line 2641 "parser.yy"
     8827#line 2642 "parser.yy"
    88278828    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88288829    break;
     
    88318832
    88328833/* Line 1806 of yacc.c  */
    8833 #line 2646 "parser.yy"
     8834#line 2647 "parser.yy"
    88348835    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    88358836    break;
     
    88388839
    88398840/* Line 1806 of yacc.c  */
    8840 #line 2648 "parser.yy"
     8841#line 2649 "parser.yy"
    88418842    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    88428843    break;
     
    88458846
    88468847/* Line 1806 of yacc.c  */
    8847 #line 2650 "parser.yy"
     8848#line 2651 "parser.yy"
    88488849    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    88498850    break;
     
    88528853
    88538854/* Line 1806 of yacc.c  */
    8854 #line 2652 "parser.yy"
     8855#line 2653 "parser.yy"
    88558856    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    88568857    break;
     
    88598860
    88608861/* Line 1806 of yacc.c  */
    8861 #line 2654 "parser.yy"
     8862#line 2655 "parser.yy"
    88628863    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88638864    break;
     
    88668867
    88678868/* Line 1806 of yacc.c  */
    8868 #line 2660 "parser.yy"
     8869#line 2661 "parser.yy"
    88698870    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88708871    break;
     
    88738874
    88748875/* Line 1806 of yacc.c  */
    8875 #line 2662 "parser.yy"
     8876#line 2663 "parser.yy"
    88768877    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88778878    break;
     
    88808881
    88818882/* Line 1806 of yacc.c  */
    8882 #line 2664 "parser.yy"
     8883#line 2665 "parser.yy"
    88838884    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88848885    break;
     
    88878888
    88888889/* Line 1806 of yacc.c  */
    8889 #line 2669 "parser.yy"
     8890#line 2670 "parser.yy"
    88908891    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    88918892    break;
     
    88948895
    88958896/* Line 1806 of yacc.c  */
    8896 #line 2671 "parser.yy"
     8897#line 2672 "parser.yy"
    88978898    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88988899    break;
     
    89018902
    89028903/* Line 1806 of yacc.c  */
    8903 #line 2681 "parser.yy"
     8904#line 2682 "parser.yy"
    89048905    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89058906    break;
     
    89088909
    89098910/* Line 1806 of yacc.c  */
    8910 #line 2691 "parser.yy"
     8911#line 2692 "parser.yy"
    89118912    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89128913    break;
     
    89158916
    89168917/* Line 1806 of yacc.c  */
    8917 #line 2693 "parser.yy"
     8918#line 2694 "parser.yy"
    89188919    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89198920    break;
     
    89228923
    89238924/* Line 1806 of yacc.c  */
    8924 #line 2695 "parser.yy"
     8925#line 2696 "parser.yy"
    89258926    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89268927    break;
     
    89298930
    89308931/* Line 1806 of yacc.c  */
    8931 #line 2697 "parser.yy"
     8932#line 2698 "parser.yy"
    89328933    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89338934    break;
     
    89368937
    89378938/* Line 1806 of yacc.c  */
    8938 #line 2699 "parser.yy"
     8939#line 2700 "parser.yy"
    89398940    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89408941    break;
     
    89438944
    89448945/* Line 1806 of yacc.c  */
    8945 #line 2701 "parser.yy"
     8946#line 2702 "parser.yy"
    89468947    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89478948    break;
     
    89508951
    89518952/* Line 1806 of yacc.c  */
    8952 #line 2708 "parser.yy"
     8953#line 2709 "parser.yy"
    89538954    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89548955    break;
     
    89578958
    89588959/* Line 1806 of yacc.c  */
    8959 #line 2710 "parser.yy"
     8960#line 2711 "parser.yy"
    89608961    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89618962    break;
     
    89648965
    89658966/* Line 1806 of yacc.c  */
    8966 #line 2712 "parser.yy"
     8967#line 2713 "parser.yy"
    89678968    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89688969    break;
     
    89718972
    89728973/* Line 1806 of yacc.c  */
    8973 #line 2714 "parser.yy"
     8974#line 2715 "parser.yy"
    89748975    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89758976    break;
     
    89788979
    89798980/* Line 1806 of yacc.c  */
    8980 #line 2716 "parser.yy"
     8981#line 2717 "parser.yy"
    89818982    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89828983    break;
     
    89858986
    89868987/* Line 1806 of yacc.c  */
    8987 #line 2718 "parser.yy"
     8988#line 2719 "parser.yy"
    89888989    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89898990    break;
     
    89928993
    89938994/* Line 1806 of yacc.c  */
    8994 #line 2720 "parser.yy"
     8995#line 2721 "parser.yy"
    89958996    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89968997    break;
     
    89999000
    90009001/* Line 1806 of yacc.c  */
    9001 #line 2722 "parser.yy"
     9002#line 2723 "parser.yy"
    90029003    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90039004    break;
     
    90069007
    90079008/* Line 1806 of yacc.c  */
    9008 #line 2724 "parser.yy"
     9009#line 2725 "parser.yy"
    90099010    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    90109011    break;
     
    90139014
    90149015/* Line 1806 of yacc.c  */
    9015 #line 2726 "parser.yy"
     9016#line 2727 "parser.yy"
    90169017    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90179018    break;
     
    90209021
    90219022/* Line 1806 of yacc.c  */
    9022 #line 2731 "parser.yy"
     9023#line 2732 "parser.yy"
    90239024    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    90249025    break;
     
    90279028
    90289029/* Line 1806 of yacc.c  */
    9029 #line 2733 "parser.yy"
     9030#line 2734 "parser.yy"
    90309031    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    90319032    break;
     
    90349035
    90359036/* Line 1806 of yacc.c  */
    9036 #line 2738 "parser.yy"
     9037#line 2739 "parser.yy"
    90379038    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    90389039    break;
     
    90419042
    90429043/* Line 1806 of yacc.c  */
    9043 #line 2740 "parser.yy"
     9044#line 2741 "parser.yy"
    90449045    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    90459046    break;
     
    90489049
    90499050/* Line 1806 of yacc.c  */
    9050 #line 2767 "parser.yy"
     9051#line 2768 "parser.yy"
    90519052    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    90529053    break;
     
    90559056
    90569057/* Line 1806 of yacc.c  */
    9057 #line 2778 "parser.yy"
     9058#line 2779 "parser.yy"
    90589059    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90599060    break;
     
    90629063
    90639064/* Line 1806 of yacc.c  */
    9064 #line 2780 "parser.yy"
     9065#line 2781 "parser.yy"
    90659066    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90669067    break;
     
    90699070
    90709071/* Line 1806 of yacc.c  */
    9071 #line 2782 "parser.yy"
     9072#line 2783 "parser.yy"
    90729073    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90739074    break;
     
    90769077
    90779078/* Line 1806 of yacc.c  */
    9078 #line 2784 "parser.yy"
     9079#line 2785 "parser.yy"
    90799080    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90809081    break;
     
    90839084
    90849085/* Line 1806 of yacc.c  */
    9085 #line 2786 "parser.yy"
     9086#line 2787 "parser.yy"
    90869087    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90879088    break;
     
    90909091
    90919092/* Line 1806 of yacc.c  */
    9092 #line 2788 "parser.yy"
     9093#line 2789 "parser.yy"
    90939094    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90949095    break;
     
    90979098
    90989099/* Line 1806 of yacc.c  */
    9099 #line 2795 "parser.yy"
    9100     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9100#line 2796 "parser.yy"
     9101    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91019102    break;
    91029103
     
    91049105
    91059106/* Line 1806 of yacc.c  */
    9106 #line 2797 "parser.yy"
    9107     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9107#line 2798 "parser.yy"
     9108    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91089109    break;
    91099110
     
    91119112
    91129113/* Line 1806 of yacc.c  */
    9113 #line 2799 "parser.yy"
     9114#line 2800 "parser.yy"
    91149115    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91159116    break;
     
    91189119
    91199120/* Line 1806 of yacc.c  */
    9120 #line 2801 "parser.yy"
    9121     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9121#line 2802 "parser.yy"
     9122    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91229123    break;
    91239124
     
    91259126
    91269127/* Line 1806 of yacc.c  */
    9127 #line 2803 "parser.yy"
    9128     { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     9128#line 2804 "parser.yy"
     9129    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91299130    break;
    91309131
     
    91329133
    91339134/* Line 1806 of yacc.c  */
    9134 #line 2805 "parser.yy"
     9135#line 2806 "parser.yy"
    91359136    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91369137    break;
     
    91399140
    91409141/* Line 1806 of yacc.c  */
    9141 #line 2810 "parser.yy"
     9142#line 2811 "parser.yy"
    91429143    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91439144    break;
     
    91469147
    91479148/* Line 1806 of yacc.c  */
    9148 #line 2815 "parser.yy"
    9149     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
     9149#line 2816 "parser.yy"
     9150    { (yyval.decl) = DeclarationNode::newFunction( nullptr, DeclarationNode::newTuple( nullptr ), (yyvsp[(4) - (5)].decl), nullptr ); }
    91509151    break;
    91519152
     
    91539154
    91549155/* Line 1806 of yacc.c  */
    9155 #line 2817 "parser.yy"
    9156     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     9156#line 2818 "parser.yy"
     9157    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    91579158    break;
    91589159
     
    91609161
    91619162/* Line 1806 of yacc.c  */
    9162 #line 2819 "parser.yy"
    9163     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     9163#line 2820 "parser.yy"
     9164    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    91649165    break;
    91659166
     
    91679168
    91689169/* Line 1806 of yacc.c  */
    9169 #line 2843 "parser.yy"
     9170#line 2844 "parser.yy"
    91709171    { (yyval.en) = 0; }
    91719172    break;
     
    91749175
    91759176/* Line 1806 of yacc.c  */
    9176 #line 2845 "parser.yy"
     9177#line 2846 "parser.yy"
    91779178    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91789179    break;
     
    91819182
    91829183/* Line 1806 of yacc.c  */
    9183 #line 9184 "Parser/parser.cc"
     9184#line 9185 "Parser/parser.cc"
    91849185      default: break;
    91859186    }
     
    94129413
    94139414/* Line 2067 of yacc.c  */
    9414 #line 2848 "parser.yy"
     9415#line 2849 "parser.yy"
    94159416
    94169417// ----end of grammar----
     
    94199420
    94209421void yyerror( const char * ) {
    9421         std::cout << "Error ";
     9422        cout << "Error ";
    94229423        if ( yyfilename ) {
    9423                 std::cout << "in file " << yyfilename << " ";
     9424                cout << "in file " << yyfilename << " ";
    94249425        } // if
    9425         std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
     9426        cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << endl;
    94269427}
    94279428
Note: See TracChangeset for help on using the changeset viewer.