Changeset a7741435


Ignore:
Timestamp:
Dec 14, 2016, 9:43:35 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:
c7800bfc
Parents:
74e5a3aa
Message:

fix empty assignment_opt allocation

Location:
src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • src/Common/utility.h

    r74e5a3aa ra7741435  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Sep 23 11:46:47 2016
    13 // Update Count     : 28
     12// Last Modified On : Wed Dec 14 21:25:25 2016
     13// Update Count     : 31
    1414//
    1515
     
    3636}
    3737
    38 template<typename T, typename U>
     38template< typename T, typename U >
    3939struct maybeBuild_t {
    4040        static T * doit( const U *orig ) {
  • src/Parser/ParseNode.h

    r74e5a3aa ra7741435  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 13:26:56 2016
    13 // Update Count     : 642
     12// Last Modified On : Tue Dec 13 15:37:33 2016
     13// Update Count     : 643
    1414//
    1515
     
    7373        InitializerNode( InitializerNode *, bool aggrp = false, ExpressionNode * des = nullptr );
    7474        ~InitializerNode();
    75         virtual InitializerNode * clone() const { return nullptr; }
     75        virtual InitializerNode * clone() const { assert( false ); return nullptr; }
    7676
    7777        ExpressionNode * get_expression() const { return expr; }
  • src/Parser/parser.cc

    r74e5a3aa ra7741435  
    10531053     932,   934,   936,   938,   943,   955,   956,   961,   963,   968,
    10541054     972,   974,   976,   978,   980,   986,   987,   993,   994,   998,
    1055      999,  1004,  1006,  1012,  1013,  1015,  1020,  1025,  1035,  1037,
    1056     1041,  1042,  1047,  1049,  1053,  1054,  1058,  1060,  1064,  1065,
    1057     1069,  1070,  1074,  1075,  1090,  1091,  1092,  1093,  1094,  1098,
    1058     1103,  1110,  1120,  1125,  1130,  1138,  1143,  1148,  1153,  1158,
    1059     1188,  1193,  1200,  1202,  1209,  1214,  1219,  1230,  1235,  1240,
    1060     1245,  1250,  1259,  1264,  1272,  1273,  1274,  1275,  1281,  1286,
    1061     1294,  1295,  1296,  1297,  1301,  1302,  1303,  1304,  1309,  1310,
    1062     1319,  1320,  1325,  1326,  1331,  1333,  1335,  1337,  1339,  1342,
    1063     1341,  1353,  1354,  1356,  1366,  1367,  1372,  1374,  1376,  1378,
    1064     1380,  1383,  1385,  1388,  1393,  1395,  1397,  1399,  1401,  1403,
    1065     1405,  1407,  1409,  1411,  1413,  1415,  1417,  1419,  1421,  1427,
    1066     1428,  1430,  1432,  1434,  1439,  1440,  1446,  1447,  1449,  1451,
    1067     1456,  1458,  1460,  1462,  1467,  1468,  1470,  1472,  1477,  1478,
    1068     1480,  1485,  1486,  1488,  1490,  1495,  1497,  1499,  1504,  1505,
    1069     1509,  1511,  1517,  1516,  1520,  1522,  1527,  1529,  1535,  1536,
    1070     1541,  1542,  1544,  1545,  1554,  1555,  1557,  1559,  1564,  1566,
    1071     1572,  1573,  1575,  1578,  1581,  1586,  1587,  1592,  1597,  1601,
    1072     1603,  1609,  1608,  1615,  1617,  1623,  1624,  1632,  1633,  1637,
    1073     1638,  1639,  1641,  1643,  1650,  1651,  1653,  1655,  1660,  1661,
    1074     1667,  1668,  1672,  1673,  1678,  1679,  1680,  1682,  1690,  1691,
    1075     1693,  1696,  1698,  1702,  1703,  1704,  1706,  1708,  1712,  1717,
    1076     1725,  1726,  1735,  1737,  1742,  1743,  1744,  1748,  1749,  1750,
    1077     1754,  1755,  1756,  1760,  1761,  1762,  1767,  1768,  1769,  1770,
    1078     1776,  1777,  1779,  1784,  1785,  1790,  1791,  1792,  1793,  1794,
    1079     1809,  1810,  1815,  1816,  1822,  1824,  1827,  1829,  1831,  1854,
    1080     1855,  1857,  1859,  1864,  1865,  1867,  1872,  1877,  1878,  1884,
    1081     1883,  1887,  1891,  1893,  1895,  1901,  1902,  1907,  1912,  1914,
    1082     1919,  1921,  1922,  1924,  1929,  1931,  1933,  1938,  1940,  1945,
    1083     1950,  1958,  1964,  1963,  1977,  1978,  1983,  1984,  1988,  1993,
    1084     1998,  2006,  2011,  2022,  2023,  2028,  2029,  2035,  2036,  2040,
    1085     2041,  2042,  2045,  2044,  2055,  2064,  2070,  2076,  2085,  2091,
    1086     2097,  2103,  2109,  2117,  2123,  2131,  2137,  2146,  2147,  2148,
    1087     2152,  2158,  2159,  2165,  2166,  2170,  2171,  2176,  2182,  2183,
    1088     2186,  2188,  2189,  2193,  2194,  2195,  2196,  2230,  2232,  2233,
    1089     2235,  2240,  2245,  2250,  2252,  2254,  2259,  2261,  2263,  2265,
    1090     2270,  2272,  2281,  2283,  2284,  2289,  2291,  2293,  2298,  2300,
    1091     2302,  2307,  2309,  2311,  2320,  2321,  2322,  2326,  2328,  2330,
    1092     2335,  2337,  2339,  2344,  2346,  2348,  2363,  2365,  2366,  2368,
    1093     2373,  2374,  2379,  2381,  2383,  2388,  2390,  2392,  2394,  2399,
    1094     2401,  2403,  2413,  2415,  2416,  2418,  2423,  2425,  2427,  2432,
    1095     2434,  2436,  2438,  2443,  2445,  2447,  2478,  2480,  2481,  2483,
    1096     2488,  2493,  2501,  2503,  2505,  2510,  2512,  2517,  2519,  2533,
    1097     2534,  2536,  2541,  2543,  2545,  2547,  2549,  2554,  2555,  2557,
    1098     2559,  2564,  2566,  2568,  2574,  2576,  2578,  2582,  2584,  2586,
    1099     2588,  2602,  2603,  2605,  2610,  2612,  2614,  2616,  2618,  2623,
    1100     2624,  2626,  2628,  2633,  2635,  2637,  2643,  2644,  2646,  2655,
    1101     2658,  2660,  2663,  2665,  2667,  2680,  2681,  2683,  2688,  2690,
    1102     2692,  2694,  2696,  2701,  2702,  2704,  2706,  2711,  2713,  2721,
    1103     2722,  2723,  2728,  2729,  2733,  2735,  2737,  2739,  2741,  2743,
    1104     2750,  2752,  2754,  2756,  2758,  2761,  2763,  2765,  2767,  2769,
    1105     2774,  2776,  2778,  2783,  2809,  2810,  2812,  2816,  2817,  2821,
    1106     2823,  2825,  2827,  2829,  2831,  2838,  2840,  2842,  2844,  2846,
    1107     2848,  2853,  2860,  2862,  2880,  2882,  2887,  2888
     1055     999,  1004,  1006,  1012,  1013,  1015,  1021,  1026,  1036,  1038,
     1056    1042,  1043,  1048,  1050,  1054,  1055,  1059,  1061,  1065,  1066,
     1057    1070,  1071,  1075,  1076,  1091,  1092,  1093,  1094,  1095,  1099,
     1058    1104,  1111,  1121,  1126,  1131,  1139,  1144,  1149,  1154,  1159,
     1059    1189,  1194,  1201,  1203,  1210,  1215,  1220,  1231,  1236,  1241,
     1060    1246,  1251,  1260,  1265,  1273,  1274,  1275,  1276,  1282,  1287,
     1061    1295,  1296,  1297,  1298,  1302,  1303,  1304,  1305,  1310,  1311,
     1062    1320,  1321,  1326,  1327,  1332,  1334,  1336,  1338,  1340,  1343,
     1063    1342,  1354,  1355,  1357,  1367,  1368,  1373,  1375,  1377,  1379,
     1064    1381,  1384,  1386,  1389,  1394,  1396,  1398,  1400,  1402,  1404,
     1065    1406,  1408,  1410,  1412,  1414,  1416,  1418,  1420,  1422,  1428,
     1066    1429,  1431,  1433,  1435,  1440,  1441,  1447,  1448,  1450,  1452,
     1067    1457,  1459,  1461,  1463,  1468,  1469,  1471,  1473,  1478,  1479,
     1068    1481,  1486,  1487,  1489,  1491,  1496,  1498,  1500,  1505,  1506,
     1069    1510,  1512,  1518,  1517,  1521,  1523,  1528,  1530,  1536,  1537,
     1070    1542,  1543,  1545,  1546,  1555,  1556,  1558,  1560,  1565,  1567,
     1071    1573,  1574,  1576,  1579,  1582,  1587,  1588,  1593,  1598,  1602,
     1072    1604,  1610,  1609,  1616,  1618,  1624,  1625,  1633,  1634,  1638,
     1073    1639,  1640,  1642,  1644,  1651,  1652,  1654,  1656,  1661,  1662,
     1074    1668,  1669,  1673,  1674,  1679,  1680,  1681,  1683,  1691,  1692,
     1075    1694,  1697,  1699,  1703,  1704,  1705,  1707,  1709,  1713,  1718,
     1076    1726,  1727,  1736,  1738,  1743,  1744,  1745,  1749,  1750,  1751,
     1077    1755,  1756,  1757,  1761,  1762,  1763,  1768,  1769,  1770,  1771,
     1078    1777,  1778,  1780,  1785,  1786,  1791,  1792,  1793,  1794,  1795,
     1079    1810,  1811,  1816,  1817,  1823,  1825,  1828,  1830,  1832,  1855,
     1080    1856,  1858,  1860,  1865,  1866,  1868,  1873,  1878,  1879,  1885,
     1081    1884,  1888,  1892,  1894,  1896,  1902,  1903,  1908,  1913,  1915,
     1082    1920,  1922,  1923,  1925,  1930,  1932,  1934,  1939,  1941,  1946,
     1083    1951,  1959,  1965,  1964,  1978,  1979,  1984,  1985,  1989,  1994,
     1084    1999,  2007,  2012,  2023,  2024,  2029,  2030,  2036,  2037,  2041,
     1085    2042,  2043,  2046,  2045,  2056,  2065,  2071,  2077,  2086,  2092,
     1086    2098,  2104,  2110,  2118,  2124,  2132,  2138,  2147,  2148,  2149,
     1087    2153,  2159,  2160,  2166,  2167,  2171,  2172,  2177,  2183,  2184,
     1088    2187,  2189,  2190,  2194,  2195,  2196,  2197,  2231,  2233,  2234,
     1089    2236,  2241,  2246,  2251,  2253,  2255,  2260,  2262,  2264,  2266,
     1090    2271,  2273,  2282,  2284,  2285,  2290,  2292,  2294,  2299,  2301,
     1091    2303,  2308,  2310,  2312,  2321,  2322,  2323,  2327,  2329,  2331,
     1092    2336,  2338,  2340,  2345,  2347,  2349,  2364,  2366,  2367,  2369,
     1093    2374,  2375,  2380,  2382,  2384,  2389,  2391,  2393,  2395,  2400,
     1094    2402,  2404,  2414,  2416,  2417,  2419,  2424,  2426,  2428,  2433,
     1095    2435,  2437,  2439,  2444,  2446,  2448,  2479,  2481,  2482,  2484,
     1096    2489,  2494,  2502,  2504,  2506,  2511,  2513,  2518,  2520,  2534,
     1097    2535,  2537,  2542,  2544,  2546,  2548,  2550,  2555,  2556,  2558,
     1098    2560,  2565,  2567,  2569,  2575,  2577,  2579,  2583,  2585,  2587,
     1099    2589,  2603,  2604,  2606,  2611,  2613,  2615,  2617,  2619,  2624,
     1100    2625,  2627,  2629,  2634,  2636,  2638,  2644,  2645,  2647,  2656,
     1101    2659,  2661,  2664,  2666,  2668,  2681,  2682,  2684,  2689,  2691,
     1102    2693,  2695,  2697,  2702,  2703,  2705,  2707,  2712,  2714,  2722,
     1103    2723,  2724,  2729,  2730,  2734,  2736,  2738,  2740,  2742,  2744,
     1104    2751,  2753,  2755,  2757,  2759,  2762,  2764,  2766,  2768,  2770,
     1105    2775,  2777,  2779,  2784,  2810,  2811,  2813,  2817,  2818,  2822,
     1106    2824,  2826,  2828,  2830,  2832,  2839,  2841,  2843,  2845,  2847,
     1107    2849,  2854,  2861,  2863,  2881,  2883,  2888,  2889
    11081108};
    11091109#endif
     
    57725772                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    57735773                        // statement.
    5774                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
     5774                        (yyval.sn) = (yyvsp[(7) - (9)].decl) ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
    57755775                }
    57765776    break;
     
    57895789    {
    57905790                        StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
    5791                         (yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
     5791                        (yyval.sn) = (yyvsp[(7) - (9)].decl) ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
    57925792                }
    57935793    break;
     
    62386238
    62396239/* Line 1806 of yacc.c  */
    6240 #line 1016 "parser.yy"
     6240#line 1017 "parser.yy"
    62416241    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
    62426242    break;
     
    62456245
    62466246/* Line 1806 of yacc.c  */
    6247 #line 1021 "parser.yy"
     6247#line 1022 "parser.yy"
    62486248    {
    62496249                        (yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
     
    62556255
    62566256/* Line 1806 of yacc.c  */
    6257 #line 1026 "parser.yy"
     6257#line 1027 "parser.yy"
    62586258    {
    62596259                        (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
     
    62656265
    62666266/* Line 1806 of yacc.c  */
    6267 #line 1036 "parser.yy"
     6267#line 1037 "parser.yy"
    62686268    { (yyval.decl) = nullptr; }
    62696269    break;
     
    62726272
    62736273/* Line 1806 of yacc.c  */
    6274 #line 1043 "parser.yy"
     6274#line 1044 "parser.yy"
    62756275    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62766276    break;
     
    62796279
    62806280/* Line 1806 of yacc.c  */
    6281 #line 1048 "parser.yy"
     6281#line 1049 "parser.yy"
    62826282    { (yyval.decl) = nullptr; }
    62836283    break;
     
    62866286
    62876287/* Line 1806 of yacc.c  */
    6288 #line 1055 "parser.yy"
     6288#line 1056 "parser.yy"
    62896289    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62906290    break;
    62916291
    62926292  case 250:
    6293 
    6294 /* Line 1806 of yacc.c  */
    6295 #line 1069 "parser.yy"
    6296     {}
    6297     break;
    6298 
    6299   case 251:
    63006293
    63016294/* Line 1806 of yacc.c  */
     
    63046297    break;
    63056298
     6299  case 251:
     6300
     6301/* Line 1806 of yacc.c  */
     6302#line 1071 "parser.yy"
     6303    {}
     6304    break;
     6305
    63066306  case 259:
    63076307
    63086308/* Line 1806 of yacc.c  */
    6309 #line 1099 "parser.yy"
     6309#line 1100 "parser.yy"
    63106310    {
    63116311                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63176317
    63186318/* Line 1806 of yacc.c  */
    6319 #line 1106 "parser.yy"
     6319#line 1107 "parser.yy"
    63206320    {
    63216321                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63276327
    63286328/* Line 1806 of yacc.c  */
    6329 #line 1111 "parser.yy"
     6329#line 1112 "parser.yy"
    63306330    {
    63316331                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63376337
    63386338/* Line 1806 of yacc.c  */
    6339 #line 1121 "parser.yy"
     6339#line 1122 "parser.yy"
    63406340    {
    63416341                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63476347
    63486348/* Line 1806 of yacc.c  */
    6349 #line 1126 "parser.yy"
     6349#line 1127 "parser.yy"
    63506350    {
    63516351                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63576357
    63586358/* Line 1806 of yacc.c  */
    6359 #line 1131 "parser.yy"
     6359#line 1132 "parser.yy"
    63606360    {
    63616361                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63676367
    63686368/* Line 1806 of yacc.c  */
    6369 #line 1139 "parser.yy"
     6369#line 1140 "parser.yy"
    63706370    {
    63716371                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63776377
    63786378/* Line 1806 of yacc.c  */
    6379 #line 1144 "parser.yy"
     6379#line 1145 "parser.yy"
    63806380    {
    63816381                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63876387
    63886388/* Line 1806 of yacc.c  */
    6389 #line 1149 "parser.yy"
     6389#line 1150 "parser.yy"
    63906390    {
    63916391                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63976397
    63986398/* Line 1806 of yacc.c  */
    6399 #line 1154 "parser.yy"
     6399#line 1155 "parser.yy"
    64006400    {
    64016401                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64076407
    64086408/* Line 1806 of yacc.c  */
    6409 #line 1159 "parser.yy"
     6409#line 1160 "parser.yy"
    64106410    {
    64116411                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64176417
    64186418/* Line 1806 of yacc.c  */
    6419 #line 1190 "parser.yy"
     6419#line 1191 "parser.yy"
    64206420    {
    64216421                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64266426
    64276427/* Line 1806 of yacc.c  */
    6428 #line 1194 "parser.yy"
     6428#line 1195 "parser.yy"
    64296429    {
    64306430                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64356435
    64366436/* Line 1806 of yacc.c  */
    6437 #line 1201 "parser.yy"
     6437#line 1202 "parser.yy"
    64386438    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64396439    break;
     
    64426442
    64436443/* Line 1806 of yacc.c  */
    6444 #line 1205 "parser.yy"
     6444#line 1206 "parser.yy"
    64456445    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64466446    break;
     
    64496449
    64506450/* Line 1806 of yacc.c  */
    6451 #line 1210 "parser.yy"
     6451#line 1211 "parser.yy"
    64526452    {
    64536453                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64596459
    64606460/* Line 1806 of yacc.c  */
    6461 #line 1215 "parser.yy"
     6461#line 1216 "parser.yy"
    64626462    {
    64636463                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64696469
    64706470/* Line 1806 of yacc.c  */
    6471 #line 1220 "parser.yy"
     6471#line 1221 "parser.yy"
    64726472    {
    64736473                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64796479
    64806480/* Line 1806 of yacc.c  */
    6481 #line 1231 "parser.yy"
     6481#line 1232 "parser.yy"
    64826482    {
    64836483                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64896489
    64906490/* Line 1806 of yacc.c  */
    6491 #line 1236 "parser.yy"
     6491#line 1237 "parser.yy"
    64926492    {
    64936493                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64996499
    65006500/* Line 1806 of yacc.c  */
    6501 #line 1241 "parser.yy"
     6501#line 1242 "parser.yy"
    65026502    {
    65036503                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65096509
    65106510/* Line 1806 of yacc.c  */
    6511 #line 1246 "parser.yy"
     6511#line 1247 "parser.yy"
    65126512    {
    65136513                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65196519
    65206520/* Line 1806 of yacc.c  */
    6521 #line 1251 "parser.yy"
     6521#line 1252 "parser.yy"
    65226522    {
    65236523                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65296529
    65306530/* Line 1806 of yacc.c  */
    6531 #line 1260 "parser.yy"
     6531#line 1261 "parser.yy"
    65326532    {
    65336533                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65396539
    65406540/* Line 1806 of yacc.c  */
    6541 #line 1265 "parser.yy"
     6541#line 1266 "parser.yy"
    65426542    {
    65436543                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65496549
    65506550/* Line 1806 of yacc.c  */
    6551 #line 1282 "parser.yy"
     6551#line 1283 "parser.yy"
    65526552    {
    65536553                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65596559
    65606560/* Line 1806 of yacc.c  */
    6561 #line 1287 "parser.yy"
     6561#line 1288 "parser.yy"
    65626562    {
    65636563                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65696569
    65706570/* Line 1806 of yacc.c  */
    6571 #line 1309 "parser.yy"
     6571#line 1310 "parser.yy"
    65726572    { (yyval.decl) = nullptr; }
    65736573    break;
     
    65766576
    65776577/* Line 1806 of yacc.c  */
    6578 #line 1321 "parser.yy"
     6578#line 1322 "parser.yy"
    65796579    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65806580    break;
     
    65836583
    65846584/* Line 1806 of yacc.c  */
    6585 #line 1332 "parser.yy"
     6585#line 1333 "parser.yy"
    65866586    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65876587    break;
     
    65906590
    65916591/* Line 1806 of yacc.c  */
    6592 #line 1334 "parser.yy"
     6592#line 1335 "parser.yy"
    65936593    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    65946594    break;
     
    65976597
    65986598/* Line 1806 of yacc.c  */
    6599 #line 1336 "parser.yy"
     6599#line 1337 "parser.yy"
    66006600    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66016601    break;
     
    66046604
    66056605/* Line 1806 of yacc.c  */
    6606 #line 1338 "parser.yy"
     6606#line 1339 "parser.yy"
    66076607    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66086608    break;
     
    66116611
    66126612/* Line 1806 of yacc.c  */
    6613 #line 1340 "parser.yy"
     6613#line 1341 "parser.yy"
    66146614    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    66156615    break;
     
    66186618
    66196619/* Line 1806 of yacc.c  */
    6620 #line 1342 "parser.yy"
     6620#line 1343 "parser.yy"
    66216621    {
    66226622                        typedefTable.enterScope();
     
    66276627
    66286628/* Line 1806 of yacc.c  */
    6629 #line 1346 "parser.yy"
     6629#line 1347 "parser.yy"
    66306630    {
    66316631                        typedefTable.leaveScope();
     
    66376637
    66386638/* Line 1806 of yacc.c  */
    6639 #line 1355 "parser.yy"
     6639#line 1356 "parser.yy"
    66406640    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66416641    break;
     
    66446644
    66456645/* Line 1806 of yacc.c  */
    6646 #line 1357 "parser.yy"
     6646#line 1358 "parser.yy"
    66476647    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66486648    break;
     
    66516651
    66526652/* Line 1806 of yacc.c  */
    6653 #line 1368 "parser.yy"
     6653#line 1369 "parser.yy"
    66546654    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66556655    break;
     
    66586658
    66596659/* Line 1806 of yacc.c  */
    6660 #line 1373 "parser.yy"
     6660#line 1374 "parser.yy"
    66616661    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66626662    break;
     
    66656665
    66666666/* Line 1806 of yacc.c  */
    6667 #line 1375 "parser.yy"
     6667#line 1376 "parser.yy"
    66686668    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66696669    break;
     
    66726672
    66736673/* Line 1806 of yacc.c  */
    6674 #line 1377 "parser.yy"
     6674#line 1378 "parser.yy"
    66756675    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66766676    break;
     
    66796679
    66806680/* Line 1806 of yacc.c  */
    6681 #line 1379 "parser.yy"
     6681#line 1380 "parser.yy"
    66826682    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66836683    break;
     
    66866686
    66876687/* Line 1806 of yacc.c  */
    6688 #line 1382 "parser.yy"
     6688#line 1383 "parser.yy"
    66896689    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
    66906690    break;
     
    66936693
    66946694/* Line 1806 of yacc.c  */
    6695 #line 1384 "parser.yy"
     6695#line 1385 "parser.yy"
    66966696    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    66976697    break;
     
    67006700
    67016701/* Line 1806 of yacc.c  */
    6702 #line 1387 "parser.yy"
     6702#line 1388 "parser.yy"
    67036703    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
    67046704    break;
     
    67076707
    67086708/* Line 1806 of yacc.c  */
    6709 #line 1389 "parser.yy"
     6709#line 1390 "parser.yy"
    67106710    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    67116711    break;
     
    67146714
    67156715/* Line 1806 of yacc.c  */
    6716 #line 1394 "parser.yy"
     6716#line 1395 "parser.yy"
    67176717    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    67186718    break;
     
    67216721
    67226722/* Line 1806 of yacc.c  */
    6723 #line 1396 "parser.yy"
     6723#line 1397 "parser.yy"
    67246724    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    67256725    break;
     
    67286728
    67296729/* Line 1806 of yacc.c  */
    6730 #line 1398 "parser.yy"
     6730#line 1399 "parser.yy"
    67316731    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    67326732    break;
     
    67356735
    67366736/* Line 1806 of yacc.c  */
    6737 #line 1400 "parser.yy"
     6737#line 1401 "parser.yy"
    67386738    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    67396739    break;
     
    67426742
    67436743/* Line 1806 of yacc.c  */
    6744 #line 1402 "parser.yy"
     6744#line 1403 "parser.yy"
    67456745    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
    67466746    break;
     
    67496749
    67506750/* Line 1806 of yacc.c  */
    6751 #line 1404 "parser.yy"
     6751#line 1405 "parser.yy"
    67526752    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
    67536753    break;
     
    67566756
    67576757/* Line 1806 of yacc.c  */
    6758 #line 1406 "parser.yy"
     6758#line 1407 "parser.yy"
    67596759    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
    67606760    break;
     
    67636763
    67646764/* Line 1806 of yacc.c  */
    6765 #line 1408 "parser.yy"
     6765#line 1409 "parser.yy"
    67666766    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
    67676767    break;
     
    67706770
    67716771/* Line 1806 of yacc.c  */
    6772 #line 1410 "parser.yy"
     6772#line 1411 "parser.yy"
    67736773    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    67746774    break;
     
    67776777
    67786778/* Line 1806 of yacc.c  */
    6779 #line 1412 "parser.yy"
     6779#line 1413 "parser.yy"
    67806780    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    67816781    break;
     
    67846784
    67856785/* Line 1806 of yacc.c  */
    6786 #line 1414 "parser.yy"
     6786#line 1415 "parser.yy"
    67876787    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
    67886788    break;
     
    67916791
    67926792/* Line 1806 of yacc.c  */
    6793 #line 1416 "parser.yy"
     6793#line 1417 "parser.yy"
    67946794    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
    67956795    break;
     
    67986798
    67996799/* Line 1806 of yacc.c  */
    6800 #line 1418 "parser.yy"
     6800#line 1419 "parser.yy"
    68016801    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    68026802    break;
     
    68056805
    68066806/* Line 1806 of yacc.c  */
    6807 #line 1420 "parser.yy"
     6807#line 1421 "parser.yy"
    68086808    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Zero ); }
    68096809    break;
     
    68126812
    68136813/* Line 1806 of yacc.c  */
    6814 #line 1422 "parser.yy"
     6814#line 1423 "parser.yy"
    68156815    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::One ); }
    68166816    break;
     
    68196819
    68206820/* Line 1806 of yacc.c  */
    6821 #line 1429 "parser.yy"
     6821#line 1430 "parser.yy"
    68226822    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68236823    break;
     
    68266826
    68276827/* Line 1806 of yacc.c  */
    6828 #line 1431 "parser.yy"
     6828#line 1432 "parser.yy"
    68296829    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68306830    break;
     
    68336833
    68346834/* Line 1806 of yacc.c  */
    6835 #line 1433 "parser.yy"
     6835#line 1434 "parser.yy"
    68366836    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68376837    break;
     
    68406840
    68416841/* Line 1806 of yacc.c  */
    6842 #line 1435 "parser.yy"
     6842#line 1436 "parser.yy"
    68436843    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    68446844    break;
     
    68476847
    68486848/* Line 1806 of yacc.c  */
    6849 #line 1441 "parser.yy"
     6849#line 1442 "parser.yy"
    68506850    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68516851    break;
     
    68546854
    68556855/* Line 1806 of yacc.c  */
    6856 #line 1448 "parser.yy"
     6856#line 1449 "parser.yy"
    68576857    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68586858    break;
     
    68616861
    68626862/* Line 1806 of yacc.c  */
    6863 #line 1450 "parser.yy"
     6863#line 1451 "parser.yy"
    68646864    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68656865    break;
     
    68686868
    68696869/* Line 1806 of yacc.c  */
    6870 #line 1452 "parser.yy"
     6870#line 1453 "parser.yy"
    68716871    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    68726872    break;
     
    68756875
    68766876/* Line 1806 of yacc.c  */
    6877 #line 1457 "parser.yy"
     6877#line 1458 "parser.yy"
    68786878    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    68796879    break;
     
    68826882
    68836883/* Line 1806 of yacc.c  */
    6884 #line 1459 "parser.yy"
     6884#line 1460 "parser.yy"
    68856885    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    68866886    break;
     
    68896889
    68906890/* Line 1806 of yacc.c  */
    6891 #line 1461 "parser.yy"
     6891#line 1462 "parser.yy"
    68926892    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    68936893    break;
     
    68966896
    68976897/* Line 1806 of yacc.c  */
    6898 #line 1463 "parser.yy"
     6898#line 1464 "parser.yy"
    68996899    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    69006900    break;
     
    69036903
    69046904/* Line 1806 of yacc.c  */
    6905 #line 1469 "parser.yy"
     6905#line 1470 "parser.yy"
    69066906    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69076907    break;
     
    69106910
    69116911/* Line 1806 of yacc.c  */
    6912 #line 1471 "parser.yy"
     6912#line 1472 "parser.yy"
    69136913    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69146914    break;
     
    69176917
    69186918/* Line 1806 of yacc.c  */
    6919 #line 1473 "parser.yy"
     6919#line 1474 "parser.yy"
    69206920    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69216921    break;
     
    69246924
    69256925/* Line 1806 of yacc.c  */
    6926 #line 1479 "parser.yy"
     6926#line 1480 "parser.yy"
    69276927    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69286928    break;
     
    69316931
    69326932/* Line 1806 of yacc.c  */
    6933 #line 1481 "parser.yy"
     6933#line 1482 "parser.yy"
    69346934    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69356935    break;
     
    69386938
    69396939/* Line 1806 of yacc.c  */
    6940 #line 1487 "parser.yy"
     6940#line 1488 "parser.yy"
    69416941    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69426942    break;
     
    69456945
    69466946/* Line 1806 of yacc.c  */
    6947 #line 1489 "parser.yy"
     6947#line 1490 "parser.yy"
    69486948    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69496949    break;
     
    69526952
    69536953/* Line 1806 of yacc.c  */
    6954 #line 1491 "parser.yy"
     6954#line 1492 "parser.yy"
    69556955    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69566956    break;
     
    69596959
    69606960/* Line 1806 of yacc.c  */
    6961 #line 1496 "parser.yy"
     6961#line 1497 "parser.yy"
    69626962    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    69636963    break;
     
    69666966
    69676967/* Line 1806 of yacc.c  */
    6968 #line 1498 "parser.yy"
     6968#line 1499 "parser.yy"
    69696969    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69706970    break;
     
    69736973
    69746974/* Line 1806 of yacc.c  */
    6975 #line 1500 "parser.yy"
     6975#line 1501 "parser.yy"
    69766976    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69776977    break;
     
    69806980
    69816981/* Line 1806 of yacc.c  */
    6982 #line 1510 "parser.yy"
     6982#line 1511 "parser.yy"
    69836983    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), nullptr, nullptr, (yyvsp[(3) - (4)].decl), true ); }
    69846984    break;
     
    69876987
    69886988/* Line 1806 of yacc.c  */
    6989 #line 1512 "parser.yy"
     6989#line 1513 "parser.yy"
    69906990    {
    69916991                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    69976997
    69986998/* Line 1806 of yacc.c  */
    6999 #line 1517 "parser.yy"
     6999#line 1518 "parser.yy"
    70007000    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    70017001    break;
     
    70047004
    70057005/* Line 1806 of yacc.c  */
    7006 #line 1519 "parser.yy"
     7006#line 1520 "parser.yy"
    70077007    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), nullptr, (yyvsp[(5) - (6)].decl), true ); }
    70087008    break;
     
    70117011
    70127012/* Line 1806 of yacc.c  */
    7013 #line 1521 "parser.yy"
     7013#line 1522 "parser.yy"
    70147014    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), nullptr, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
    70157015    break;
     
    70187018
    70197019/* Line 1806 of yacc.c  */
    7020 #line 1523 "parser.yy"
     7020#line 1524 "parser.yy"
    70217021    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    70227022    break;
     
    70257025
    70267026/* Line 1806 of yacc.c  */
    7027 #line 1528 "parser.yy"
     7027#line 1529 "parser.yy"
    70287028    { (yyval.aggKey) = DeclarationNode::Struct; }
    70297029    break;
     
    70327032
    70337033/* Line 1806 of yacc.c  */
    7034 #line 1530 "parser.yy"
     7034#line 1531 "parser.yy"
    70357035    { (yyval.aggKey) = DeclarationNode::Union; }
    70367036    break;
     
    70397039
    70407040/* Line 1806 of yacc.c  */
    7041 #line 1535 "parser.yy"
     7041#line 1536 "parser.yy"
    70427042    { (yyval.decl) = nullptr; }
    70437043    break;
     
    70467046
    70477047/* Line 1806 of yacc.c  */
    7048 #line 1537 "parser.yy"
    7049     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     7048#line 1538 "parser.yy"
     7049    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    70507050    break;
    70517051
     
    70537053
    70547054/* Line 1806 of yacc.c  */
    7055 #line 1543 "parser.yy"
     7055#line 1544 "parser.yy"
    70567056    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
    70577057    break;
     
    70607060
    70617061/* Line 1806 of yacc.c  */
    7062 #line 1546 "parser.yy"
     7062#line 1547 "parser.yy"
    70637063    {   // mark all fields in list
    70647064                        for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    70717071
    70727072/* Line 1806 of yacc.c  */
    7073 #line 1556 "parser.yy"
     7073#line 1557 "parser.yy"
    70747074    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    70757075    break;
     
    70787078
    70797079/* Line 1806 of yacc.c  */
    7080 #line 1558 "parser.yy"
     7080#line 1559 "parser.yy"
    70817081    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    70827082    break;
     
    70857085
    70867086/* Line 1806 of yacc.c  */
    7087 #line 1560 "parser.yy"
     7087#line 1561 "parser.yy"
    70887088    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70897089    break;
     
    70927092
    70937093/* Line 1806 of yacc.c  */
    7094 #line 1565 "parser.yy"
     7094#line 1566 "parser.yy"
    70957095    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70967096    break;
     
    70997099
    71007100/* Line 1806 of yacc.c  */
    7101 #line 1567 "parser.yy"
     7101#line 1568 "parser.yy"
    71027102    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    71037103    break;
     
    71067106
    71077107/* Line 1806 of yacc.c  */
    7108 #line 1572 "parser.yy"
     7108#line 1573 "parser.yy"
    71097109    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    71107110    break;
     
    71137113
    71147114/* Line 1806 of yacc.c  */
    7115 #line 1574 "parser.yy"
     7115#line 1575 "parser.yy"
    71167116    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    71177117    break;
     
    71207120
    71217121/* Line 1806 of yacc.c  */
    7122 #line 1577 "parser.yy"
     7122#line 1578 "parser.yy"
    71237123    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71247124    break;
     
    71277127
    71287128/* Line 1806 of yacc.c  */
    7129 #line 1580 "parser.yy"
     7129#line 1581 "parser.yy"
    71307130    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71317131    break;
     
    71347134
    71357135/* Line 1806 of yacc.c  */
    7136 #line 1586 "parser.yy"
     7136#line 1587 "parser.yy"
    71377137    { (yyval.en) = nullptr; }
    71387138    break;
     
    71417141
    71427142/* Line 1806 of yacc.c  */
    7143 #line 1588 "parser.yy"
     7143#line 1589 "parser.yy"
    71447144    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71457145    break;
     
    71487148
    71497149/* Line 1806 of yacc.c  */
    7150 #line 1593 "parser.yy"
     7150#line 1594 "parser.yy"
    71517151    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71527152    break;
     
    71557155
    71567156/* Line 1806 of yacc.c  */
    7157 #line 1602 "parser.yy"
     7157#line 1603 "parser.yy"
    71587158    { (yyval.decl) = DeclarationNode::newEnum( nullptr, (yyvsp[(3) - (5)].decl) ); }
    71597159    break;
     
    71627162
    71637163/* Line 1806 of yacc.c  */
    7164 #line 1604 "parser.yy"
     7164#line 1605 "parser.yy"
    71657165    {
    71667166                        typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
     
    71727172
    71737173/* Line 1806 of yacc.c  */
    7174 #line 1609 "parser.yy"
     7174#line 1610 "parser.yy"
    71757175    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
    71767176    break;
     
    71797179
    71807180/* Line 1806 of yacc.c  */
    7181 #line 1611 "parser.yy"
     7181#line 1612 "parser.yy"
    71827182    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
    71837183    break;
     
    71867186
    71877187/* Line 1806 of yacc.c  */
    7188 #line 1616 "parser.yy"
     7188#line 1617 "parser.yy"
    71897189    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    71907190    break;
     
    71937193
    71947194/* Line 1806 of yacc.c  */
    7195 #line 1618 "parser.yy"
     7195#line 1619 "parser.yy"
    71967196    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    71977197    break;
     
    72007200
    72017201/* Line 1806 of yacc.c  */
    7202 #line 1623 "parser.yy"
     7202#line 1624 "parser.yy"
    72037203    { (yyval.en) = nullptr; }
    72047204    break;
     
    72077207
    72087208/* Line 1806 of yacc.c  */
    7209 #line 1625 "parser.yy"
     7209#line 1626 "parser.yy"
    72107210    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    72117211    break;
     
    72147214
    72157215/* Line 1806 of yacc.c  */
    7216 #line 1632 "parser.yy"
     7216#line 1633 "parser.yy"
    72177217    { (yyval.decl) = nullptr; }
    72187218    break;
     
    72217221
    72227222/* Line 1806 of yacc.c  */
    7223 #line 1640 "parser.yy"
     7223#line 1641 "parser.yy"
    72247224    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72257225    break;
     
    72287228
    72297229/* Line 1806 of yacc.c  */
    7230 #line 1642 "parser.yy"
     7230#line 1643 "parser.yy"
    72317231    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72327232    break;
     
    72357235
    72367236/* Line 1806 of yacc.c  */
    7237 #line 1644 "parser.yy"
     7237#line 1645 "parser.yy"
    72387238    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72397239    break;
     
    72427242
    72437243/* Line 1806 of yacc.c  */
    7244 #line 1652 "parser.yy"
     7244#line 1653 "parser.yy"
    72457245    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72467246    break;
     
    72497249
    72507250/* Line 1806 of yacc.c  */
    7251 #line 1654 "parser.yy"
     7251#line 1655 "parser.yy"
    72527252    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72537253    break;
     
    72567256
    72577257/* Line 1806 of yacc.c  */
    7258 #line 1656 "parser.yy"
     7258#line 1657 "parser.yy"
    72597259    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    72607260    break;
     
    72637263
    72647264/* Line 1806 of yacc.c  */
    7265 #line 1662 "parser.yy"
     7265#line 1663 "parser.yy"
    72667266    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72677267    break;
     
    72707270
    72717271/* Line 1806 of yacc.c  */
    7272 #line 1667 "parser.yy"
     7272#line 1668 "parser.yy"
    72737273    { (yyval.decl) = nullptr; }
    72747274    break;
     
    72777277
    72787278/* Line 1806 of yacc.c  */
    7279 #line 1674 "parser.yy"
     7279#line 1675 "parser.yy"
    72807280    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72817281    break;
     
    72847284
    72857285/* Line 1806 of yacc.c  */
    7286 #line 1681 "parser.yy"
     7286#line 1682 "parser.yy"
    72877287    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72887288    break;
     
    72917291
    72927292/* Line 1806 of yacc.c  */
    7293 #line 1683 "parser.yy"
     7293#line 1684 "parser.yy"
    72947294    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72957295    break;
     
    72987298
    72997299/* Line 1806 of yacc.c  */
    7300 #line 1692 "parser.yy"
     7300#line 1693 "parser.yy"
    73017301    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73027302    break;
     
    73057305
    73067306/* Line 1806 of yacc.c  */
    7307 #line 1695 "parser.yy"
     7307#line 1696 "parser.yy"
    73087308    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73097309    break;
     
    73127312
    73137313/* Line 1806 of yacc.c  */
    7314 #line 1697 "parser.yy"
     7314#line 1698 "parser.yy"
    73157315    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    73167316    break;
     
    73197319
    73207320/* Line 1806 of yacc.c  */
    7321 #line 1707 "parser.yy"
     7321#line 1708 "parser.yy"
    73227322    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73237323    break;
     
    73267326
    73277327/* Line 1806 of yacc.c  */
    7328 #line 1713 "parser.yy"
     7328#line 1714 "parser.yy"
    73297329    {
    73307330                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7331                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     7331                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].en) ? new InitializerNode( (yyvsp[(3) - (3)].en) ) : nullptr );
    73327332                }
    73337333    break;
     
    73367336
    73377337/* Line 1806 of yacc.c  */
    7338 #line 1718 "parser.yy"
     7338#line 1719 "parser.yy"
    73397339    {
    73407340                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    7341                         (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
     7341                        (yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].en) ? new InitializerNode( (yyvsp[(3) - (3)].en) ) : nullptr );
    73427342                }
    73437343    break;
     
    73467346
    73477347/* Line 1806 of yacc.c  */
    7348 #line 1727 "parser.yy"
     7348#line 1728 "parser.yy"
    73497349    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73507350    break;
     
    73537353
    73547354/* Line 1806 of yacc.c  */
    7355 #line 1736 "parser.yy"
     7355#line 1737 "parser.yy"
    73567356    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73577357    break;
     
    73607360
    73617361/* Line 1806 of yacc.c  */
    7362 #line 1738 "parser.yy"
     7362#line 1739 "parser.yy"
    73637363    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    73647364    break;
     
    73677367
    73687368/* Line 1806 of yacc.c  */
    7369 #line 1763 "parser.yy"
     7369#line 1764 "parser.yy"
    73707370    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73717371    break;
     
    73747374
    73757375/* Line 1806 of yacc.c  */
    7376 #line 1771 "parser.yy"
     7376#line 1772 "parser.yy"
    73777377    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73787378    break;
     
    73817381
    73827382/* Line 1806 of yacc.c  */
    7383 #line 1776 "parser.yy"
     7383#line 1777 "parser.yy"
    73847384    { (yyval.in) = nullptr; }
    73857385    break;
     
    73887388
    73897389/* Line 1806 of yacc.c  */
    7390 #line 1778 "parser.yy"
     7390#line 1779 "parser.yy"
    73917391    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73927392    break;
     
    73957395
    73967396/* Line 1806 of yacc.c  */
    7397 #line 1780 "parser.yy"
     7397#line 1781 "parser.yy"
    73987398    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
    73997399    break;
     
    74027402
    74037403/* Line 1806 of yacc.c  */
    7404 #line 1784 "parser.yy"
     7404#line 1785 "parser.yy"
    74057405    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    74067406    break;
     
    74097409
    74107410/* Line 1806 of yacc.c  */
    7411 #line 1785 "parser.yy"
     7411#line 1786 "parser.yy"
    74127412    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    74137413    break;
     
    74167416
    74177417/* Line 1806 of yacc.c  */
    7418 #line 1790 "parser.yy"
     7418#line 1791 "parser.yy"
    74197419    { (yyval.in) = nullptr; }
    74207420    break;
     
    74237423
    74247424/* Line 1806 of yacc.c  */
    7425 #line 1792 "parser.yy"
     7425#line 1793 "parser.yy"
    74267426    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    74277427    break;
     
    74307430
    74317431/* Line 1806 of yacc.c  */
    7432 #line 1793 "parser.yy"
     7432#line 1794 "parser.yy"
    74337433    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
    74347434    break;
     
    74377437
    74387438/* Line 1806 of yacc.c  */
    7439 #line 1795 "parser.yy"
     7439#line 1796 "parser.yy"
    74407440    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74417441    break;
     
    74447444
    74457445/* Line 1806 of yacc.c  */
    7446 #line 1811 "parser.yy"
     7446#line 1812 "parser.yy"
    74477447    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
    74487448    break;
     
    74517451
    74527452/* Line 1806 of yacc.c  */
    7453 #line 1817 "parser.yy"
     7453#line 1818 "parser.yy"
    74547454    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
    74557455    break;
     
    74587458
    74597459/* Line 1806 of yacc.c  */
    7460 #line 1823 "parser.yy"
     7460#line 1824 "parser.yy"
    74617461    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
    74627462    break;
     
    74657465
    74667466/* Line 1806 of yacc.c  */
    7467 #line 1826 "parser.yy"
     7467#line 1827 "parser.yy"
    74687468    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74697469    break;
     
    74727472
    74737473/* Line 1806 of yacc.c  */
    7474 #line 1828 "parser.yy"
     7474#line 1829 "parser.yy"
    74757475    { (yyval.en) = (yyvsp[(3) - (5)].en); }
    74767476    break;
     
    74797479
    74807480/* Line 1806 of yacc.c  */
    7481 #line 1830 "parser.yy"
     7481#line 1831 "parser.yy"
    74827482    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
    74837483    break;
     
    74867486
    74877487/* Line 1806 of yacc.c  */
    7488 #line 1832 "parser.yy"
     7488#line 1833 "parser.yy"
    74897489    { (yyval.en) = (yyvsp[(4) - (6)].en); }
    74907490    break;
     
    74937493
    74947494/* Line 1806 of yacc.c  */
    7495 #line 1856 "parser.yy"
     7495#line 1857 "parser.yy"
    74967496    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74977497    break;
     
    75007500
    75017501/* Line 1806 of yacc.c  */
    7502 #line 1858 "parser.yy"
     7502#line 1859 "parser.yy"
    75037503    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75047504    break;
     
    75077507
    75087508/* Line 1806 of yacc.c  */
    7509 #line 1860 "parser.yy"
     7509#line 1861 "parser.yy"
    75107510    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    75117511    break;
     
    75147514
    75157515/* Line 1806 of yacc.c  */
    7516 #line 1866 "parser.yy"
     7516#line 1867 "parser.yy"
    75177517    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75187518    break;
     
    75217521
    75227522/* Line 1806 of yacc.c  */
    7523 #line 1868 "parser.yy"
     7523#line 1869 "parser.yy"
    75247524    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75257525    break;
     
    75287528
    75297529/* Line 1806 of yacc.c  */
    7530 #line 1873 "parser.yy"
     7530#line 1874 "parser.yy"
    75317531    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75327532    break;
     
    75357535
    75367536/* Line 1806 of yacc.c  */
    7537 #line 1879 "parser.yy"
     7537#line 1880 "parser.yy"
    75387538    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75397539    break;
     
    75427542
    75437543/* Line 1806 of yacc.c  */
    7544 #line 1884 "parser.yy"
     7544#line 1885 "parser.yy"
    75457545    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75467546    break;
     
    75497549
    75507550/* Line 1806 of yacc.c  */
    7551 #line 1886 "parser.yy"
     7551#line 1887 "parser.yy"
    75527552    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75537553    break;
     
    75567556
    75577557/* Line 1806 of yacc.c  */
    7558 #line 1892 "parser.yy"
     7558#line 1893 "parser.yy"
    75597559    { (yyval.tclass) = DeclarationNode::Otype; }
    75607560    break;
     
    75637563
    75647564/* Line 1806 of yacc.c  */
    7565 #line 1894 "parser.yy"
     7565#line 1895 "parser.yy"
    75667566    { (yyval.tclass) = DeclarationNode::Ftype; }
    75677567    break;
     
    75707570
    75717571/* Line 1806 of yacc.c  */
    7572 #line 1896 "parser.yy"
     7572#line 1897 "parser.yy"
    75737573    { (yyval.tclass) = DeclarationNode::Dtype; }
    75747574    break;
     
    75777577
    75787578/* Line 1806 of yacc.c  */
    7579 #line 1901 "parser.yy"
     7579#line 1902 "parser.yy"
    75807580    { (yyval.decl) = nullptr; }
    75817581    break;
     
    75847584
    75857585/* Line 1806 of yacc.c  */
    7586 #line 1903 "parser.yy"
    7587     { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
     7586#line 1904 "parser.yy"
     7587    { (yyval.decl) = (yyvsp[(1) - (2)].decl) ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
    75887588    break;
    75897589
     
    75917591
    75927592/* Line 1806 of yacc.c  */
    7593 #line 1908 "parser.yy"
     7593#line 1909 "parser.yy"
    75947594    {
    75957595                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    76017601
    76027602/* Line 1806 of yacc.c  */
    7603 #line 1913 "parser.yy"
     7603#line 1914 "parser.yy"
    76047604    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    76057605    break;
     
    76087608
    76097609/* Line 1806 of yacc.c  */
    7610 #line 1915 "parser.yy"
     7610#line 1916 "parser.yy"
    76117611    { (yyval.decl) = nullptr; }
    76127612    break;
     
    76157615
    76167616/* Line 1806 of yacc.c  */
    7617 #line 1920 "parser.yy"
     7617#line 1921 "parser.yy"
    76187618    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
    76197619    break;
     
    76227622
    76237623/* Line 1806 of yacc.c  */
    7624 #line 1923 "parser.yy"
     7624#line 1924 "parser.yy"
    76257625    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
    76267626    break;
     
    76297629
    76307630/* Line 1806 of yacc.c  */
    7631 #line 1925 "parser.yy"
     7631#line 1926 "parser.yy"
    76327632    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
    76337633    break;
     
    76367636
    76377637/* Line 1806 of yacc.c  */
    7638 #line 1930 "parser.yy"
     7638#line 1931 "parser.yy"
    76397639    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76407640    break;
     
    76437643
    76447644/* Line 1806 of yacc.c  */
    7645 #line 1932 "parser.yy"
     7645#line 1933 "parser.yy"
    76467646    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76477647    break;
     
    76507650
    76517651/* Line 1806 of yacc.c  */
    7652 #line 1934 "parser.yy"
     7652#line 1935 "parser.yy"
    76537653    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76547654    break;
     
    76577657
    76587658/* Line 1806 of yacc.c  */
    7659 #line 1939 "parser.yy"
     7659#line 1940 "parser.yy"
    76607660    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76617661    break;
     
    76647664
    76657665/* Line 1806 of yacc.c  */
    7666 #line 1941 "parser.yy"
     7666#line 1942 "parser.yy"
    76677667    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76687668    break;
     
    76717671
    76727672/* Line 1806 of yacc.c  */
    7673 #line 1946 "parser.yy"
     7673#line 1947 "parser.yy"
    76747674    {
    76757675                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    76817681
    76827682/* Line 1806 of yacc.c  */
    7683 #line 1951 "parser.yy"
     7683#line 1952 "parser.yy"
    76847684    {
    76857685                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    76917691
    76927692/* Line 1806 of yacc.c  */
    7693 #line 1959 "parser.yy"
     7693#line 1960 "parser.yy"
    76947694    {
    76957695                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    77017701
    77027702/* Line 1806 of yacc.c  */
    7703 #line 1964 "parser.yy"
     7703#line 1965 "parser.yy"
    77047704    {
    77057705                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    77117711
    77127712/* Line 1806 of yacc.c  */
    7713 #line 1969 "parser.yy"
     7713#line 1970 "parser.yy"
    77147714    {
    77157715                        typedefTable.leaveTrait();
     
    77227722
    77237723/* Line 1806 of yacc.c  */
    7724 #line 1979 "parser.yy"
     7724#line 1980 "parser.yy"
    77257725    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77267726    break;
     
    77297729
    77307730/* Line 1806 of yacc.c  */
    7731 #line 1989 "parser.yy"
     7731#line 1990 "parser.yy"
    77327732    {
    77337733                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77397739
    77407740/* Line 1806 of yacc.c  */
    7741 #line 1994 "parser.yy"
     7741#line 1995 "parser.yy"
    77427742    {
    77437743                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77497749
    77507750/* Line 1806 of yacc.c  */
    7751 #line 1999 "parser.yy"
     7751#line 2000 "parser.yy"
    77527752    {
    77537753                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77597759
    77607760/* Line 1806 of yacc.c  */
    7761 #line 2007 "parser.yy"
     7761#line 2008 "parser.yy"
    77627762    {
    77637763                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77697769
    77707770/* Line 1806 of yacc.c  */
    7771 #line 2012 "parser.yy"
     7771#line 2013 "parser.yy"
    77727772    {
    77737773                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77797779
    77807780/* Line 1806 of yacc.c  */
    7781 #line 2022 "parser.yy"
     7781#line 2023 "parser.yy"
    77827782    {}
    77837783    break;
     
    77867786
    77877787/* Line 1806 of yacc.c  */
    7788 #line 2024 "parser.yy"
    7789     { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);    }
     7788#line 2025 "parser.yy"
     7789    { parseTree = parseTree ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);       }
    77907790    break;
    77917791
     
    77937793
    77947794/* Line 1806 of yacc.c  */
    7795 #line 2030 "parser.yy"
    7796     { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     7795#line 2031 "parser.yy"
     7796    { (yyval.decl) = (yyvsp[(1) - (3)].decl) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77977797    break;
    77987798
     
    78007800
    78017801/* Line 1806 of yacc.c  */
    7802 #line 2035 "parser.yy"
     7802#line 2036 "parser.yy"
    78037803    { (yyval.decl) = nullptr; }
    78047804    break;
     
    78077807
    78087808/* Line 1806 of yacc.c  */
    7809 #line 2043 "parser.yy"
     7809#line 2044 "parser.yy"
    78107810    {}
    78117811    break;
     
    78147814
    78157815/* Line 1806 of yacc.c  */
    7816 #line 2045 "parser.yy"
     7816#line 2046 "parser.yy"
    78177817    {
    78187818                        linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
     
    78247824
    78257825/* Line 1806 of yacc.c  */
    7826 #line 2050 "parser.yy"
     7826#line 2051 "parser.yy"
    78277827    {
    78287828                        linkage = linkageStack.top();
     
    78357835
    78367836/* Line 1806 of yacc.c  */
    7837 #line 2056 "parser.yy"
     7837#line 2057 "parser.yy"
    78387838    {   // mark all fields in list
    78397839                        for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
     
    78467846
    78477847/* Line 1806 of yacc.c  */
    7848 #line 2071 "parser.yy"
     7848#line 2072 "parser.yy"
    78497849    {
    78507850                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78577857
    78587858/* Line 1806 of yacc.c  */
    7859 #line 2077 "parser.yy"
     7859#line 2078 "parser.yy"
    78607860    {
    78617861                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78687868
    78697869/* Line 1806 of yacc.c  */
    7870 #line 2086 "parser.yy"
     7870#line 2087 "parser.yy"
    78717871    {
    78727872                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78797879
    78807880/* Line 1806 of yacc.c  */
    7881 #line 2092 "parser.yy"
     7881#line 2093 "parser.yy"
    78827882    {
    78837883                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78907890
    78917891/* Line 1806 of yacc.c  */
    7892 #line 2098 "parser.yy"
     7892#line 2099 "parser.yy"
    78937893    {
    78947894                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79017901
    79027902/* Line 1806 of yacc.c  */
    7903 #line 2104 "parser.yy"
     7903#line 2105 "parser.yy"
    79047904    {
    79057905                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79127912
    79137913/* Line 1806 of yacc.c  */
    7914 #line 2110 "parser.yy"
     7914#line 2111 "parser.yy"
    79157915    {
    79167916                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79237923
    79247924/* Line 1806 of yacc.c  */
    7925 #line 2118 "parser.yy"
     7925#line 2119 "parser.yy"
    79267926    {
    79277927                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79347934
    79357935/* Line 1806 of yacc.c  */
    7936 #line 2124 "parser.yy"
     7936#line 2125 "parser.yy"
    79377937    {
    79387938                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79457945
    79467946/* Line 1806 of yacc.c  */
    7947 #line 2132 "parser.yy"
     7947#line 2133 "parser.yy"
    79487948    {
    79497949                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79567956
    79577957/* Line 1806 of yacc.c  */
    7958 #line 2138 "parser.yy"
     7958#line 2139 "parser.yy"
    79597959    {
    79607960                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79677967
    79687968/* Line 1806 of yacc.c  */
    7969 #line 2153 "parser.yy"
     7969#line 2154 "parser.yy"
    79707970    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
    79717971    break;
     
    79747974
    79757975/* Line 1806 of yacc.c  */
    7976 #line 2158 "parser.yy"
     7976#line 2159 "parser.yy"
    79777977    { (yyval.constant) = nullptr; }
    79787978    break;
     
    79817981
    79827982/* Line 1806 of yacc.c  */
    7983 #line 2160 "parser.yy"
     7983#line 2161 "parser.yy"
    79847984    { (yyval.constant) = (yyvsp[(3) - (5)].constant); }
    79857985    break;
     
    79887988
    79897989/* Line 1806 of yacc.c  */
    7990 #line 2165 "parser.yy"
     7990#line 2166 "parser.yy"
    79917991    { (yyval.decl) = nullptr; }
    79927992    break;
     
    79957995
    79967996/* Line 1806 of yacc.c  */
    7997 #line 2172 "parser.yy"
     7997#line 2173 "parser.yy"
    79987998    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    79997999    break;
     
    80028002
    80038003/* Line 1806 of yacc.c  */
    8004 #line 2178 "parser.yy"
     8004#line 2179 "parser.yy"
    80058005    { (yyval.decl) = nullptr; }
    80068006    break;
     
    80098009
    80108010/* Line 1806 of yacc.c  */
    8011 #line 2189 "parser.yy"
     8011#line 2190 "parser.yy"
    80128012    { delete (yyvsp[(3) - (4)].en); }
    80138013    break;
     
    80168016
    80178017/* Line 1806 of yacc.c  */
    8018 #line 2193 "parser.yy"
     8018#line 2194 "parser.yy"
    80198019    { delete (yyvsp[(1) - (1)].tok); }
    80208020    break;
    80218021
    80228022  case 564:
    8023 
    8024 /* Line 1806 of yacc.c  */
    8025 #line 2194 "parser.yy"
    8026     { delete (yyvsp[(1) - (1)].decl); }
    8027     break;
    8028 
    8029   case 565:
    80308023
    80318024/* Line 1806 of yacc.c  */
     
    80348027    break;
    80358028
    8036   case 566:
     8029  case 565:
    80378030
    80388031/* Line 1806 of yacc.c  */
     
    80418034    break;
    80428035
     8036  case 566:
     8037
     8038/* Line 1806 of yacc.c  */
     8039#line 2197 "parser.yy"
     8040    { delete (yyvsp[(1) - (1)].decl); }
     8041    break;
     8042
    80438043  case 567:
    80448044
    80458045/* Line 1806 of yacc.c  */
    8046 #line 2231 "parser.yy"
     8046#line 2232 "parser.yy"
    80478047    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80488048    break;
     
    80518051
    80528052/* Line 1806 of yacc.c  */
    8053 #line 2234 "parser.yy"
     8053#line 2235 "parser.yy"
    80548054    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80558055    break;
     
    80588058
    80598059/* Line 1806 of yacc.c  */
    8060 #line 2236 "parser.yy"
     8060#line 2237 "parser.yy"
    80618061    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80628062    break;
     
    80658065
    80668066/* Line 1806 of yacc.c  */
    8067 #line 2241 "parser.yy"
     8067#line 2242 "parser.yy"
    80688068    {
    80698069                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80758075
    80768076/* Line 1806 of yacc.c  */
    8077 #line 2246 "parser.yy"
     8077#line 2247 "parser.yy"
    80788078    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80798079    break;
     
    80828082
    80838083/* Line 1806 of yacc.c  */
    8084 #line 2251 "parser.yy"
     8084#line 2252 "parser.yy"
    80858085    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80868086    break;
     
    80898089
    80908090/* Line 1806 of yacc.c  */
    8091 #line 2253 "parser.yy"
     8091#line 2254 "parser.yy"
    80928092    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80938093    break;
     
    80968096
    80978097/* Line 1806 of yacc.c  */
    8098 #line 2255 "parser.yy"
     8098#line 2256 "parser.yy"
    80998099    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81008100    break;
     
    81038103
    81048104/* Line 1806 of yacc.c  */
    8105 #line 2260 "parser.yy"
     8105#line 2261 "parser.yy"
    81068106    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    81078107    break;
     
    81108110
    81118111/* Line 1806 of yacc.c  */
    8112 #line 2262 "parser.yy"
     8112#line 2263 "parser.yy"
    81138113    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81148114    break;
     
    81178117
    81188118/* Line 1806 of yacc.c  */
    8119 #line 2264 "parser.yy"
     8119#line 2265 "parser.yy"
    81208120    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81218121    break;
     
    81248124
    81258125/* Line 1806 of yacc.c  */
    8126 #line 2266 "parser.yy"
     8126#line 2267 "parser.yy"
    81278127    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81288128    break;
     
    81318131
    81328132/* Line 1806 of yacc.c  */
    8133 #line 2271 "parser.yy"
     8133#line 2272 "parser.yy"
    81348134    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81358135    break;
     
    81388138
    81398139/* Line 1806 of yacc.c  */
    8140 #line 2273 "parser.yy"
     8140#line 2274 "parser.yy"
    81418141    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81428142    break;
     
    81458145
    81468146/* Line 1806 of yacc.c  */
    8147 #line 2282 "parser.yy"
     8147#line 2283 "parser.yy"
    81488148    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81498149    break;
     
    81528152
    81538153/* Line 1806 of yacc.c  */
    8154 #line 2285 "parser.yy"
     8154#line 2286 "parser.yy"
    81558155    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81568156    break;
     
    81598159
    81608160/* Line 1806 of yacc.c  */
    8161 #line 2290 "parser.yy"
     8161#line 2291 "parser.yy"
    81628162    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81638163    break;
     
    81668166
    81678167/* Line 1806 of yacc.c  */
    8168 #line 2292 "parser.yy"
     8168#line 2293 "parser.yy"
    81698169    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81708170    break;
     
    81738173
    81748174/* Line 1806 of yacc.c  */
    8175 #line 2294 "parser.yy"
     8175#line 2295 "parser.yy"
    81768176    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81778177    break;
     
    81808180
    81818181/* Line 1806 of yacc.c  */
    8182 #line 2299 "parser.yy"
     8182#line 2300 "parser.yy"
    81838183    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81848184    break;
     
    81878187
    81888188/* Line 1806 of yacc.c  */
    8189 #line 2301 "parser.yy"
     8189#line 2302 "parser.yy"
    81908190    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81918191    break;
     
    81948194
    81958195/* Line 1806 of yacc.c  */
    8196 #line 2303 "parser.yy"
     8196#line 2304 "parser.yy"
    81978197    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81988198    break;
     
    82018201
    82028202/* Line 1806 of yacc.c  */
    8203 #line 2308 "parser.yy"
     8203#line 2309 "parser.yy"
    82048204    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82058205    break;
     
    82088208
    82098209/* Line 1806 of yacc.c  */
    8210 #line 2310 "parser.yy"
     8210#line 2311 "parser.yy"
    82118211    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82128212    break;
     
    82158215
    82168216/* Line 1806 of yacc.c  */
    8217 #line 2312 "parser.yy"
     8217#line 2313 "parser.yy"
    82188218    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82198219    break;
     
    82228222
    82238223/* Line 1806 of yacc.c  */
    8224 #line 2327 "parser.yy"
     8224#line 2328 "parser.yy"
    82258225    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    82268226    break;
     
    82298229
    82308230/* Line 1806 of yacc.c  */
    8231 #line 2329 "parser.yy"
     8231#line 2330 "parser.yy"
    82328232    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    82338233    break;
     
    82368236
    82378237/* Line 1806 of yacc.c  */
    8238 #line 2331 "parser.yy"
     8238#line 2332 "parser.yy"
    82398239    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82408240    break;
     
    82438243
    82448244/* Line 1806 of yacc.c  */
    8245 #line 2336 "parser.yy"
     8245#line 2337 "parser.yy"
    82468246    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82478247    break;
     
    82508250
    82518251/* Line 1806 of yacc.c  */
    8252 #line 2338 "parser.yy"
     8252#line 2339 "parser.yy"
    82538253    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82548254    break;
     
    82578257
    82588258/* Line 1806 of yacc.c  */
    8259 #line 2340 "parser.yy"
     8259#line 2341 "parser.yy"
    82608260    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82618261    break;
     
    82648264
    82658265/* Line 1806 of yacc.c  */
    8266 #line 2345 "parser.yy"
     8266#line 2346 "parser.yy"
    82678267    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82688268    break;
     
    82718271
    82728272/* Line 1806 of yacc.c  */
    8273 #line 2347 "parser.yy"
     8273#line 2348 "parser.yy"
    82748274    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82758275    break;
     
    82788278
    82798279/* Line 1806 of yacc.c  */
    8280 #line 2349 "parser.yy"
     8280#line 2350 "parser.yy"
    82818281    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82828282    break;
     
    82858285
    82868286/* Line 1806 of yacc.c  */
    8287 #line 2364 "parser.yy"
     8287#line 2365 "parser.yy"
    82888288    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82898289    break;
     
    82928292
    82938293/* Line 1806 of yacc.c  */
    8294 #line 2367 "parser.yy"
     8294#line 2368 "parser.yy"
    82958295    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82968296    break;
     
    82998299
    83008300/* Line 1806 of yacc.c  */
    8301 #line 2369 "parser.yy"
     8301#line 2370 "parser.yy"
    83028302    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83038303    break;
     
    83068306
    83078307/* Line 1806 of yacc.c  */
    8308 #line 2375 "parser.yy"
     8308#line 2376 "parser.yy"
    83098309    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83108310    break;
     
    83138313
    83148314/* Line 1806 of yacc.c  */
    8315 #line 2380 "parser.yy"
     8315#line 2381 "parser.yy"
    83168316    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83178317    break;
     
    83208320
    83218321/* Line 1806 of yacc.c  */
    8322 #line 2382 "parser.yy"
     8322#line 2383 "parser.yy"
    83238323    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83248324    break;
     
    83278327
    83288328/* Line 1806 of yacc.c  */
    8329 #line 2384 "parser.yy"
     8329#line 2385 "parser.yy"
    83308330    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83318331    break;
     
    83348334
    83358335/* Line 1806 of yacc.c  */
    8336 #line 2389 "parser.yy"
     8336#line 2390 "parser.yy"
    83378337    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83388338    break;
     
    83418341
    83428342/* Line 1806 of yacc.c  */
    8343 #line 2391 "parser.yy"
     8343#line 2392 "parser.yy"
    83448344    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83458345    break;
     
    83488348
    83498349/* Line 1806 of yacc.c  */
    8350 #line 2393 "parser.yy"
     8350#line 2394 "parser.yy"
    83518351    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83528352    break;
     
    83558355
    83568356/* Line 1806 of yacc.c  */
    8357 #line 2395 "parser.yy"
     8357#line 2396 "parser.yy"
    83588358    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83598359    break;
     
    83628362
    83638363/* Line 1806 of yacc.c  */
    8364 #line 2400 "parser.yy"
     8364#line 2401 "parser.yy"
    83658365    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83668366    break;
     
    83698369
    83708370/* Line 1806 of yacc.c  */
    8371 #line 2402 "parser.yy"
     8371#line 2403 "parser.yy"
    83728372    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83738373    break;
     
    83768376
    83778377/* Line 1806 of yacc.c  */
    8378 #line 2404 "parser.yy"
     8378#line 2405 "parser.yy"
    83798379    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83808380    break;
     
    83838383
    83848384/* Line 1806 of yacc.c  */
    8385 #line 2414 "parser.yy"
     8385#line 2415 "parser.yy"
    83868386    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83878387    break;
     
    83908390
    83918391/* Line 1806 of yacc.c  */
    8392 #line 2417 "parser.yy"
     8392#line 2418 "parser.yy"
    83938393    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83948394    break;
     
    83978397
    83988398/* Line 1806 of yacc.c  */
    8399 #line 2419 "parser.yy"
     8399#line 2420 "parser.yy"
    84008400    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84018401    break;
     
    84048404
    84058405/* Line 1806 of yacc.c  */
    8406 #line 2424 "parser.yy"
     8406#line 2425 "parser.yy"
    84078407    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84088408    break;
     
    84118411
    84128412/* Line 1806 of yacc.c  */
    8413 #line 2426 "parser.yy"
     8413#line 2427 "parser.yy"
    84148414    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84158415    break;
     
    84188418
    84198419/* Line 1806 of yacc.c  */
    8420 #line 2428 "parser.yy"
     8420#line 2429 "parser.yy"
    84218421    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84228422    break;
     
    84258425
    84268426/* Line 1806 of yacc.c  */
    8427 #line 2433 "parser.yy"
     8427#line 2434 "parser.yy"
    84288428    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84298429    break;
     
    84328432
    84338433/* Line 1806 of yacc.c  */
    8434 #line 2435 "parser.yy"
     8434#line 2436 "parser.yy"
    84358435    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84368436    break;
     
    84398439
    84408440/* Line 1806 of yacc.c  */
    8441 #line 2437 "parser.yy"
     8441#line 2438 "parser.yy"
    84428442    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84438443    break;
     
    84468446
    84478447/* Line 1806 of yacc.c  */
    8448 #line 2439 "parser.yy"
     8448#line 2440 "parser.yy"
    84498449    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84508450    break;
     
    84538453
    84548454/* Line 1806 of yacc.c  */
    8455 #line 2444 "parser.yy"
     8455#line 2445 "parser.yy"
    84568456    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84578457    break;
     
    84608460
    84618461/* Line 1806 of yacc.c  */
    8462 #line 2446 "parser.yy"
     8462#line 2447 "parser.yy"
    84638463    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84648464    break;
     
    84678467
    84688468/* Line 1806 of yacc.c  */
    8469 #line 2448 "parser.yy"
     8469#line 2449 "parser.yy"
    84708470    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84718471    break;
     
    84748474
    84758475/* Line 1806 of yacc.c  */
    8476 #line 2479 "parser.yy"
     8476#line 2480 "parser.yy"
    84778477    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84788478    break;
     
    84818481
    84828482/* Line 1806 of yacc.c  */
    8483 #line 2482 "parser.yy"
     8483#line 2483 "parser.yy"
    84848484    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84858485    break;
     
    84888488
    84898489/* Line 1806 of yacc.c  */
    8490 #line 2484 "parser.yy"
     8490#line 2485 "parser.yy"
    84918491    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84928492    break;
     
    84958495
    84968496/* Line 1806 of yacc.c  */
    8497 #line 2489 "parser.yy"
     8497#line 2490 "parser.yy"
    84988498    {
    84998499                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85058505
    85068506/* Line 1806 of yacc.c  */
    8507 #line 2494 "parser.yy"
     8507#line 2495 "parser.yy"
    85088508    {
    85098509                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85158515
    85168516/* Line 1806 of yacc.c  */
    8517 #line 2502 "parser.yy"
     8517#line 2503 "parser.yy"
    85188518    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85198519    break;
     
    85228522
    85238523/* Line 1806 of yacc.c  */
    8524 #line 2504 "parser.yy"
     8524#line 2505 "parser.yy"
    85258525    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85268526    break;
     
    85298529
    85308530/* Line 1806 of yacc.c  */
    8531 #line 2506 "parser.yy"
     8531#line 2507 "parser.yy"
    85328532    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85338533    break;
     
    85368536
    85378537/* Line 1806 of yacc.c  */
    8538 #line 2511 "parser.yy"
     8538#line 2512 "parser.yy"
    85398539    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    85408540    break;
     
    85438543
    85448544/* Line 1806 of yacc.c  */
    8545 #line 2513 "parser.yy"
     8545#line 2514 "parser.yy"
    85468546    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85478547    break;
     
    85508550
    85518551/* Line 1806 of yacc.c  */
    8552 #line 2518 "parser.yy"
     8552#line 2519 "parser.yy"
    85538553    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85548554    break;
     
    85578557
    85588558/* Line 1806 of yacc.c  */
    8559 #line 2520 "parser.yy"
     8559#line 2521 "parser.yy"
    85608560    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85618561    break;
     
    85648564
    85658565/* Line 1806 of yacc.c  */
    8566 #line 2535 "parser.yy"
     8566#line 2536 "parser.yy"
    85678567    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85688568    break;
     
    85718571
    85728572/* Line 1806 of yacc.c  */
    8573 #line 2537 "parser.yy"
     8573#line 2538 "parser.yy"
    85748574    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85758575    break;
     
    85788578
    85798579/* Line 1806 of yacc.c  */
    8580 #line 2542 "parser.yy"
     8580#line 2543 "parser.yy"
    85818581    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85828582    break;
     
    85858585
    85868586/* Line 1806 of yacc.c  */
    8587 #line 2544 "parser.yy"
     8587#line 2545 "parser.yy"
    85888588    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85898589    break;
     
    85928592
    85938593/* Line 1806 of yacc.c  */
    8594 #line 2546 "parser.yy"
     8594#line 2547 "parser.yy"
    85958595    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85968596    break;
     
    85998599
    86008600/* Line 1806 of yacc.c  */
    8601 #line 2548 "parser.yy"
     8601#line 2549 "parser.yy"
    86028602    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86038603    break;
     
    86068606
    86078607/* Line 1806 of yacc.c  */
    8608 #line 2550 "parser.yy"
     8608#line 2551 "parser.yy"
    86098609    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86108610    break;
     
    86138613
    86148614/* Line 1806 of yacc.c  */
    8615 #line 2556 "parser.yy"
     8615#line 2557 "parser.yy"
    86168616    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86178617    break;
     
    86208620
    86218621/* Line 1806 of yacc.c  */
    8622 #line 2558 "parser.yy"
     8622#line 2559 "parser.yy"
    86238623    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86248624    break;
     
    86278627
    86288628/* Line 1806 of yacc.c  */
    8629 #line 2560 "parser.yy"
     8629#line 2561 "parser.yy"
    86308630    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86318631    break;
     
    86348634
    86358635/* Line 1806 of yacc.c  */
    8636 #line 2565 "parser.yy"
     8636#line 2566 "parser.yy"
    86378637    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    86388638    break;
     
    86418641
    86428642/* Line 1806 of yacc.c  */
    8643 #line 2567 "parser.yy"
     8643#line 2568 "parser.yy"
    86448644    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86458645    break;
     
    86488648
    86498649/* Line 1806 of yacc.c  */
    8650 #line 2569 "parser.yy"
     8650#line 2570 "parser.yy"
    86518651    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86528652    break;
     
    86558655
    86568656/* Line 1806 of yacc.c  */
    8657 #line 2575 "parser.yy"
     8657#line 2576 "parser.yy"
    86588658    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86598659    break;
     
    86628662
    86638663/* Line 1806 of yacc.c  */
    8664 #line 2577 "parser.yy"
     8664#line 2578 "parser.yy"
    86658665    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    86668666    break;
     
    86698669
    86708670/* Line 1806 of yacc.c  */
    8671 #line 2583 "parser.yy"
     8671#line 2584 "parser.yy"
    86728672    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    86738673    break;
     
    86768676
    86778677/* Line 1806 of yacc.c  */
    8678 #line 2585 "parser.yy"
     8678#line 2586 "parser.yy"
    86798679    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    86808680    break;
     
    86838683
    86848684/* Line 1806 of yacc.c  */
    8685 #line 2587 "parser.yy"
     8685#line 2588 "parser.yy"
    86868686    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    86878687    break;
     
    86908690
    86918691/* Line 1806 of yacc.c  */
    8692 #line 2589 "parser.yy"
     8692#line 2590 "parser.yy"
    86938693    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    86948694    break;
     
    86978697
    86988698/* Line 1806 of yacc.c  */
    8699 #line 2604 "parser.yy"
     8699#line 2605 "parser.yy"
    87008700    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87018701    break;
     
    87048704
    87058705/* Line 1806 of yacc.c  */
    8706 #line 2606 "parser.yy"
     8706#line 2607 "parser.yy"
    87078707    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87088708    break;
     
    87118711
    87128712/* Line 1806 of yacc.c  */
    8713 #line 2611 "parser.yy"
     8713#line 2612 "parser.yy"
    87148714    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    87158715    break;
     
    87188718
    87198719/* Line 1806 of yacc.c  */
    8720 #line 2613 "parser.yy"
     8720#line 2614 "parser.yy"
    87218721    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87228722    break;
     
    87258725
    87268726/* Line 1806 of yacc.c  */
    8727 #line 2615 "parser.yy"
     8727#line 2616 "parser.yy"
    87288728    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87298729    break;
     
    87328732
    87338733/* Line 1806 of yacc.c  */
    8734 #line 2617 "parser.yy"
     8734#line 2618 "parser.yy"
    87358735    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87368736    break;
     
    87398739
    87408740/* Line 1806 of yacc.c  */
    8741 #line 2619 "parser.yy"
     8741#line 2620 "parser.yy"
    87428742    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87438743    break;
     
    87468746
    87478747/* Line 1806 of yacc.c  */
    8748 #line 2625 "parser.yy"
     8748#line 2626 "parser.yy"
    87498749    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87508750    break;
     
    87538753
    87548754/* Line 1806 of yacc.c  */
    8755 #line 2627 "parser.yy"
     8755#line 2628 "parser.yy"
    87568756    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87578757    break;
     
    87608760
    87618761/* Line 1806 of yacc.c  */
    8762 #line 2629 "parser.yy"
     8762#line 2630 "parser.yy"
    87638763    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87648764    break;
     
    87678767
    87688768/* Line 1806 of yacc.c  */
    8769 #line 2634 "parser.yy"
     8769#line 2635 "parser.yy"
    87708770    { (yyval.decl) = DeclarationNode::newFunction( nullptr, nullptr, (yyvsp[(3) - (5)].decl), nullptr ); }
    87718771    break;
     
    87748774
    87758775/* Line 1806 of yacc.c  */
    8776 #line 2636 "parser.yy"
     8776#line 2637 "parser.yy"
    87778777    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87788778    break;
     
    87818781
    87828782/* Line 1806 of yacc.c  */
    8783 #line 2638 "parser.yy"
     8783#line 2639 "parser.yy"
    87848784    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87858785    break;
     
    87888788
    87898789/* Line 1806 of yacc.c  */
    8790 #line 2645 "parser.yy"
     8790#line 2646 "parser.yy"
    87918791    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87928792    break;
     
    87958795
    87968796/* Line 1806 of yacc.c  */
    8797 #line 2656 "parser.yy"
     8797#line 2657 "parser.yy"
    87988798    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    87998799    break;
     
    88028802
    88038803/* Line 1806 of yacc.c  */
    8804 #line 2659 "parser.yy"
     8804#line 2660 "parser.yy"
    88058805    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    88068806    break;
     
    88098809
    88108810/* Line 1806 of yacc.c  */
    8811 #line 2661 "parser.yy"
     8811#line 2662 "parser.yy"
    88128812    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    88138813    break;
     
    88168816
    88178817/* Line 1806 of yacc.c  */
    8818 #line 2664 "parser.yy"
     8818#line 2665 "parser.yy"
    88198819    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88208820    break;
     
    88238823
    88248824/* Line 1806 of yacc.c  */
    8825 #line 2666 "parser.yy"
     8825#line 2667 "parser.yy"
    88268826    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    88278827    break;
     
    88308830
    88318831/* Line 1806 of yacc.c  */
    8832 #line 2668 "parser.yy"
     8832#line 2669 "parser.yy"
    88338833    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    88348834    break;
     
    88378837
    88388838/* Line 1806 of yacc.c  */
    8839 #line 2682 "parser.yy"
     8839#line 2683 "parser.yy"
    88408840    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88418841    break;
     
    88448844
    88458845/* Line 1806 of yacc.c  */
    8846 #line 2684 "parser.yy"
     8846#line 2685 "parser.yy"
    88478847    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88488848    break;
     
    88518851
    88528852/* Line 1806 of yacc.c  */
    8853 #line 2689 "parser.yy"
     8853#line 2690 "parser.yy"
    88548854    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    88558855    break;
     
    88588858
    88598859/* Line 1806 of yacc.c  */
    8860 #line 2691 "parser.yy"
     8860#line 2692 "parser.yy"
    88618861    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    88628862    break;
     
    88658865
    88668866/* Line 1806 of yacc.c  */
    8867 #line 2693 "parser.yy"
     8867#line 2694 "parser.yy"
    88688868    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    88698869    break;
     
    88728872
    88738873/* Line 1806 of yacc.c  */
    8874 #line 2695 "parser.yy"
     8874#line 2696 "parser.yy"
    88758875    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    88768876    break;
     
    88798879
    88808880/* Line 1806 of yacc.c  */
    8881 #line 2697 "parser.yy"
     8881#line 2698 "parser.yy"
    88828882    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88838883    break;
     
    88868886
    88878887/* Line 1806 of yacc.c  */
    8888 #line 2703 "parser.yy"
     8888#line 2704 "parser.yy"
    88898889    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88908890    break;
     
    88938893
    88948894/* Line 1806 of yacc.c  */
    8895 #line 2705 "parser.yy"
     8895#line 2706 "parser.yy"
    88968896    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88978897    break;
     
    89008900
    89018901/* Line 1806 of yacc.c  */
    8902 #line 2707 "parser.yy"
     8902#line 2708 "parser.yy"
    89038903    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    89048904    break;
     
    89078907
    89088908/* Line 1806 of yacc.c  */
    8909 #line 2712 "parser.yy"
     8909#line 2713 "parser.yy"
    89108910    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    89118911    break;
     
    89148914
    89158915/* Line 1806 of yacc.c  */
    8916 #line 2714 "parser.yy"
     8916#line 2715 "parser.yy"
    89178917    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    89188918    break;
     
    89218921
    89228922/* Line 1806 of yacc.c  */
    8923 #line 2724 "parser.yy"
     8923#line 2725 "parser.yy"
    89248924    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89258925    break;
     
    89288928
    89298929/* Line 1806 of yacc.c  */
    8930 #line 2734 "parser.yy"
     8930#line 2735 "parser.yy"
    89318931    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89328932    break;
     
    89358935
    89368936/* Line 1806 of yacc.c  */
    8937 #line 2736 "parser.yy"
     8937#line 2737 "parser.yy"
    89388938    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89398939    break;
     
    89428942
    89438943/* Line 1806 of yacc.c  */
    8944 #line 2738 "parser.yy"
     8944#line 2739 "parser.yy"
    89458945    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89468946    break;
     
    89498949
    89508950/* Line 1806 of yacc.c  */
    8951 #line 2740 "parser.yy"
     8951#line 2741 "parser.yy"
    89528952    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89538953    break;
     
    89568956
    89578957/* Line 1806 of yacc.c  */
    8958 #line 2742 "parser.yy"
     8958#line 2743 "parser.yy"
    89598959    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89608960    break;
     
    89638963
    89648964/* Line 1806 of yacc.c  */
    8965 #line 2744 "parser.yy"
     8965#line 2745 "parser.yy"
    89668966    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89678967    break;
     
    89708970
    89718971/* Line 1806 of yacc.c  */
    8972 #line 2751 "parser.yy"
     8972#line 2752 "parser.yy"
    89738973    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89748974    break;
     
    89778977
    89788978/* Line 1806 of yacc.c  */
    8979 #line 2753 "parser.yy"
     8979#line 2754 "parser.yy"
    89808980    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89818981    break;
     
    89848984
    89858985/* Line 1806 of yacc.c  */
    8986 #line 2755 "parser.yy"
     8986#line 2756 "parser.yy"
    89878987    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89888988    break;
     
    89918991
    89928992/* Line 1806 of yacc.c  */
    8993 #line 2757 "parser.yy"
     8993#line 2758 "parser.yy"
    89948994    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89958995    break;
     
    89988998
    89998999/* Line 1806 of yacc.c  */
    9000 #line 2759 "parser.yy"
     9000#line 2760 "parser.yy"
    90019001    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90029002    break;
     
    90059005
    90069006/* Line 1806 of yacc.c  */
    9007 #line 2762 "parser.yy"
     9007#line 2763 "parser.yy"
    90089008    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90099009    break;
     
    90129012
    90139013/* Line 1806 of yacc.c  */
    9014 #line 2764 "parser.yy"
     9014#line 2765 "parser.yy"
    90159015    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90169016    break;
     
    90199019
    90209020/* Line 1806 of yacc.c  */
    9021 #line 2766 "parser.yy"
     9021#line 2767 "parser.yy"
    90229022    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90239023    break;
     
    90269026
    90279027/* Line 1806 of yacc.c  */
    9028 #line 2768 "parser.yy"
     9028#line 2769 "parser.yy"
    90299029    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    90309030    break;
     
    90339033
    90349034/* Line 1806 of yacc.c  */
    9035 #line 2770 "parser.yy"
     9035#line 2771 "parser.yy"
    90369036    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90379037    break;
     
    90409040
    90419041/* Line 1806 of yacc.c  */
    9042 #line 2775 "parser.yy"
     9042#line 2776 "parser.yy"
    90439043    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    90449044    break;
     
    90479047
    90489048/* Line 1806 of yacc.c  */
    9049 #line 2777 "parser.yy"
     9049#line 2778 "parser.yy"
    90509050    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    90519051    break;
     
    90549054
    90559055/* Line 1806 of yacc.c  */
    9056 #line 2782 "parser.yy"
     9056#line 2783 "parser.yy"
    90579057    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    90589058    break;
     
    90619061
    90629062/* Line 1806 of yacc.c  */
    9063 #line 2784 "parser.yy"
     9063#line 2785 "parser.yy"
    90649064    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    90659065    break;
     
    90689068
    90699069/* Line 1806 of yacc.c  */
    9070 #line 2811 "parser.yy"
     9070#line 2812 "parser.yy"
    90719071    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    90729072    break;
     
    90759075
    90769076/* Line 1806 of yacc.c  */
    9077 #line 2822 "parser.yy"
     9077#line 2823 "parser.yy"
    90789078    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90799079    break;
     
    90829082
    90839083/* Line 1806 of yacc.c  */
    9084 #line 2824 "parser.yy"
     9084#line 2825 "parser.yy"
    90859085    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90869086    break;
     
    90899089
    90909090/* Line 1806 of yacc.c  */
    9091 #line 2826 "parser.yy"
     9091#line 2827 "parser.yy"
    90929092    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90939093    break;
     
    90969096
    90979097/* Line 1806 of yacc.c  */
    9098 #line 2828 "parser.yy"
     9098#line 2829 "parser.yy"
    90999099    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91009100    break;
     
    91039103
    91049104/* Line 1806 of yacc.c  */
    9105 #line 2830 "parser.yy"
     9105#line 2831 "parser.yy"
    91069106    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91079107    break;
     
    91109110
    91119111/* Line 1806 of yacc.c  */
    9112 #line 2832 "parser.yy"
     9112#line 2833 "parser.yy"
    91139113    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91149114    break;
     
    91179117
    91189118/* Line 1806 of yacc.c  */
    9119 #line 2839 "parser.yy"
     9119#line 2840 "parser.yy"
    91209120    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91219121    break;
     
    91249124
    91259125/* Line 1806 of yacc.c  */
    9126 #line 2841 "parser.yy"
     9126#line 2842 "parser.yy"
    91279127    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91289128    break;
     
    91319131
    91329132/* Line 1806 of yacc.c  */
    9133 #line 2843 "parser.yy"
     9133#line 2844 "parser.yy"
    91349134    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91359135    break;
     
    91389138
    91399139/* Line 1806 of yacc.c  */
    9140 #line 2845 "parser.yy"
     9140#line 2846 "parser.yy"
    91419141    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91429142    break;
     
    91459145
    91469146/* Line 1806 of yacc.c  */
    9147 #line 2847 "parser.yy"
     9147#line 2848 "parser.yy"
    91489148    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( nullptr, nullptr, false ) ); }
    91499149    break;
     
    91529152
    91539153/* Line 1806 of yacc.c  */
    9154 #line 2849 "parser.yy"
     9154#line 2850 "parser.yy"
    91559155    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91569156    break;
     
    91599159
    91609160/* Line 1806 of yacc.c  */
    9161 #line 2854 "parser.yy"
     9161#line 2855 "parser.yy"
    91629162    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91639163    break;
     
    91669166
    91679167/* Line 1806 of yacc.c  */
    9168 #line 2861 "parser.yy"
     9168#line 2862 "parser.yy"
    91699169    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    91709170    break;
     
    91739173
    91749174/* Line 1806 of yacc.c  */
    9175 #line 2863 "parser.yy"
     9175#line 2864 "parser.yy"
    91769176    { (yyval.decl) = DeclarationNode::newFunction( nullptr, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), nullptr ); }
    91779177    break;
     
    91809180
    91819181/* Line 1806 of yacc.c  */
    9182 #line 2887 "parser.yy"
     9182#line 2888 "parser.yy"
    91839183    { (yyval.en) = nullptr; }
    91849184    break;
     
    91879187
    91889188/* Line 1806 of yacc.c  */
    9189 #line 2889 "parser.yy"
     9189#line 2890 "parser.yy"
    91909190    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    91919191    break;
     
    94259425
    94269426/* Line 2067 of yacc.c  */
    9427 #line 2892 "parser.yy"
     9427#line 2893 "parser.yy"
    94289428
    94299429// ----end of grammar----
  • src/Parser/parser.yy

    r74e5a3aa ra7741435  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Dec 13 14:14:52 2016
    13 // Update Count     : 2081
     12// Last Modified On : Wed Dec 14 21:28:22 2016
     13// Update Count     : 2090
    1414//
    1515
     
    775775                        // therefore, are removed from the grammar even though C allows it. The change also applies to choose
    776776                        // statement.
    777                         $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
     777                        $$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    778778                }
    779779        | CHOOSE '(' comma_expression ')' case_clause           // CFA
     
    782782                {
    783783                        StatementNode *sw = new StatementNode( build_switch( $3, $8 ) );
    784                         $$ = $7 != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
     784                        $$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    785785                }
    786786        ;
     
    10141014                { $$ = new ExpressionNode( $1 ); }
    10151015        | asm_clobbers_list_opt ',' string_literal
     1016                // set_last return ParseNode *
    10161017                { $$ = (ExpressionNode *)$1->set_last( new ExpressionNode( $3 ) ); }
    10171018        ;
     
    15351536                { $$ = nullptr; }
    15361537        | field_declaration_list field_declaration
    1537                 { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
     1538                { $$ = $1 ? $1->appendList( $2 ) : $2; }
    15381539        ;
    15391540
     
    17131714                {
    17141715                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1715                         $$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
     1716                        $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr );
    17161717                }
    17171718        | declaration_specifier type_parameter_redeclarator assignment_opt
    17181719                {
    17191720                        typedefTable.addToEnclosingScope( TypedefTable::ID );
    1720                         $$ = $2->addType( $1 )->addInitializer( new InitializerNode( $3 ) );
     1721                        $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr );
    17211722                }
    17221723        ;
     
    19011902                { $$ = nullptr; }
    19021903        | assertion_list_opt assertion
    1903                 { $$ = $1 != 0 ? $1->appendList( $2 ) : $2; }
     1904                { $$ = $1 ? $1->appendList( $2 ) : $2; }
    19041905        ;
    19051906
     
    20222023                {}                                                                                              // empty input file
    20232024        | external_definition_list
    2024                 { parseTree = parseTree != nullptr ? parseTree->appendList( $1 ) : $1;  }
     2025                { parseTree = parseTree ? parseTree->appendList( $1 ) : $1;     }
    20252026        ;
    20262027
     
    20282029        external_definition
    20292030        | external_definition_list push external_definition
    2030                 { $$ = $1 != nullptr ? $1->appendList( $3 ) : $3; }
     2031                { $$ = $1 ? $1->appendList( $3 ) : $3; }
    20312032        ;
    20322033
Note: See TracChangeset for help on using the changeset viewer.