Ignore:
Timestamp:
Mar 22, 2016, 9:57:47 PM (8 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
94980502
Parents:
a752883
Message:

only implicitly generate typedef for structures if name not in use and overwrite typedef name if explicit name appears, upate parser symbol table

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.cc

    ra752883 r984dce6  
    7777#include <cstdio>
    7878#include <stack>
     79#include "lex.h"
     80#include "parser.h"
     81#include "ParseNode.h"
    7982#include "TypedefTable.h"
    80 #include "lex.h"
    81 #include "ParseNode.h"
    8283#include "TypeData.h"
    8384#include "LinkageSpec.h"
     
    9091
    9192/* Line 268 of yacc.c  */
    92 #line 93 "Parser/parser.cc"
     93#line 94 "Parser/parser.cc"
    9394
    9495/* Enabling traces.  */
     
    341342
    342343/* Line 293 of yacc.c  */
    343 #line 111 "parser.yy"
     344#line 112 "parser.yy"
    344345
    345346        Token tok;
     
    358359
    359360/* Line 293 of yacc.c  */
    360 #line 361 "Parser/parser.cc"
     361#line 362 "Parser/parser.cc"
    361362} YYSTYPE;
    362363# define YYSTYPE_IS_TRIVIAL 1
     
    370371
    371372/* Line 343 of yacc.c  */
    372 #line 373 "Parser/parser.cc"
     373#line 374 "Parser/parser.cc"
    373374
    374375#ifdef short
     
    10151016static const yytype_uint16 yyrline[] =
    10161017{
    1017        0,   291,   291,   297,   306,   307,   308,   312,   313,   314,
    1018      318,   319,   323,   324,   328,   329,   333,   334,   340,   342,
    1019      344,   346,   351,   352,   358,   362,   364,   365,   367,   368,
    1020      370,   372,   374,   382,   383,   389,   390,   391,   396,   398,
    1021      403,   404,   408,   412,   414,   416,   418,   423,   426,   428,
    1022      430,   432,   434,   436,   438,   440,   446,   448,   450,   452,
    1023      454,   456,   458,   460,   462,   467,   468,   469,   470,   474,
    1024      475,   477,   482,   483,   485,   487,   492,   493,   495,   500,
    1025      501,   503,   508,   509,   511,   513,   515,   520,   521,   523,
    1026      528,   529,   534,   535,   540,   541,   546,   547,   552,   553,
    1027      558,   559,   561,   563,   568,   573,   574,   576,   578,   584,
    1028      585,   591,   593,   595,   597,   602,   603,   608,   609,   610,
    1029      611,   612,   613,   614,   615,   616,   617,   621,   622,   628,
    1030      629,   635,   636,   637,   638,   639,   640,   641,   642,   643,
    1031      652,   659,   661,   671,   672,   677,   679,   681,   683,   687,
    1032      688,   693,   698,   701,   703,   705,   710,   712,   720,   721,
    1033      723,   727,   728,   733,   734,   739,   740,   744,   749,   750,
    1034      754,   756,   762,   763,   767,   769,   771,   773,   779,   780,
    1035      784,   785,   789,   791,   793,   798,   800,   805,   807,   811,
    1036      814,   818,   821,   825,   827,   831,   833,   840,   842,   844,
    1037      853,   855,   857,   859,   861,   866,   868,   870,   872,   877,
    1038      890,   891,   896,   898,   903,   907,   909,   911,   913,   915,
    1039      921,   922,   928,   929,   933,   934,   939,   941,   947,   948,
    1040      950,   955,   957,   964,   966,   970,   971,   976,   978,   982,
    1041      983,   987,   989,   993,   994,   998,   999,  1003,  1004,  1019,
    1042     1020,  1021,  1022,  1023,  1027,  1032,  1039,  1049,  1054,  1059,
    1043     1067,  1072,  1077,  1082,  1087,  1095,  1117,  1122,  1129,  1131,
    1044     1138,  1143,  1148,  1159,  1164,  1169,  1174,  1179,  1188,  1193,
    1045     1201,  1202,  1203,  1204,  1210,  1215,  1223,  1224,  1225,  1226,
    1046     1230,  1231,  1232,  1233,  1238,  1239,  1248,  1249,  1254,  1255,
    1047     1260,  1262,  1264,  1266,  1268,  1271,  1270,  1282,  1283,  1285,
    1048     1295,  1296,  1301,  1305,  1307,  1309,  1311,  1313,  1315,  1317,
    1049     1319,  1324,  1326,  1328,  1330,  1332,  1334,  1336,  1338,  1340,
    1050     1342,  1344,  1346,  1348,  1354,  1355,  1357,  1359,  1361,  1366,
    1051     1367,  1373,  1374,  1376,  1378,  1383,  1385,  1387,  1389,  1394,
    1052     1395,  1397,  1399,  1404,  1405,  1407,  1412,  1413,  1415,  1417,
    1053     1422,  1424,  1426,  1431,  1432,  1436,  1438,  1440,  1442,  1444,
    1054     1449,  1451,  1456,  1458,  1463,  1464,  1466,  1467,  1472,  1473,
    1055     1475,  1477,  1482,  1484,  1490,  1491,  1493,  1496,  1499,  1504,
    1056     1505,  1510,  1515,  1519,  1521,  1523,  1528,  1530,  1536,  1537,
    1057     1545,  1546,  1550,  1551,  1552,  1554,  1556,  1563,  1564,  1566,
    1058     1568,  1573,  1574,  1580,  1581,  1585,  1586,  1591,  1592,  1593,
    1059     1595,  1603,  1604,  1606,  1609,  1611,  1615,  1616,  1617,  1619,
    1060     1621,  1625,  1630,  1638,  1639,  1648,  1650,  1655,  1656,  1657,
    1061     1661,  1662,  1663,  1667,  1668,  1669,  1673,  1674,  1675,  1680,
    1062     1681,  1682,  1683,  1689,  1690,  1692,  1697,  1698,  1703,  1704,
    1063     1705,  1706,  1707,  1722,  1723,  1728,  1729,  1737,  1739,  1741,
    1064     1744,  1746,  1748,  1771,  1772,  1774,  1776,  1781,  1782,  1784,
    1065     1789,  1794,  1795,  1801,  1800,  1804,  1808,  1810,  1812,  1818,
    1066     1819,  1824,  1829,  1831,  1836,  1838,  1839,  1841,  1846,  1848,
    1067     1850,  1855,  1857,  1862,  1867,  1875,  1881,  1880,  1894,  1895,
    1068     1900,  1901,  1905,  1910,  1915,  1923,  1928,  1939,  1940,  1951,
    1069     1952,  1958,  1959,  1963,  1964,  1965,  1968,  1967,  1978,  1983,
    1070     1988,  1994,  2003,  2009,  2015,  2021,  2027,  2035,  2041,  2049,
    1071     2055,  2064,  2065,  2066,  2070,  2074,  2076,  2081,  2082,  2086,
    1072     2087,  2092,  2098,  2099,  2102,  2104,  2105,  2109,  2110,  2111,
    1073     2112,  2146,  2148,  2149,  2151,  2156,  2161,  2166,  2168,  2170,
    1074     2175,  2177,  2179,  2181,  2186,  2188,  2198,  2200,  2201,  2206,
    1075     2208,  2210,  2215,  2217,  2219,  2224,  2226,  2228,  2237,  2238,
    1076     2239,  2243,  2245,  2247,  2252,  2254,  2256,  2261,  2263,  2265,
    1077     2280,  2282,  2283,  2285,  2290,  2291,  2296,  2298,  2300,  2305,
    1078     2307,  2309,  2311,  2316,  2318,  2320,  2330,  2332,  2333,  2335,
    1079     2340,  2342,  2344,  2349,  2351,  2353,  2355,  2360,  2362,  2364,
    1080     2395,  2397,  2398,  2400,  2405,  2410,  2418,  2420,  2422,  2427,
    1081     2429,  2434,  2436,  2450,  2451,  2453,  2458,  2460,  2462,  2464,
    1082     2466,  2471,  2472,  2474,  2476,  2481,  2483,  2485,  2491,  2493,
    1083     2495,  2499,  2501,  2503,  2505,  2519,  2520,  2522,  2527,  2529,
    1084     2531,  2533,  2535,  2540,  2541,  2543,  2545,  2550,  2552,  2554,
    1085     2560,  2561,  2563,  2572,  2575,  2577,  2580,  2582,  2584,  2597,
    1086     2598,  2600,  2605,  2607,  2609,  2611,  2613,  2618,  2619,  2621,
    1087     2623,  2628,  2630,  2638,  2639,  2640,  2645,  2646,  2650,  2652,
    1088     2654,  2656,  2658,  2660,  2667,  2669,  2671,  2673,  2675,  2677,
    1089     2679,  2681,  2683,  2685,  2690,  2692,  2694,  2699,  2725,  2726,
    1090     2728,  2732,  2733,  2737,  2739,  2741,  2743,  2745,  2747,  2754,
    1091     2756,  2758,  2760,  2762,  2764,  2769,  2774,  2776,  2778,  2796,
    1092     2798,  2803,  2804
     1018       0,   292,   292,   298,   307,   308,   309,   313,   314,   315,
     1019     319,   320,   324,   325,   329,   330,   334,   335,   341,   343,
     1020     345,   347,   352,   353,   359,   363,   365,   366,   368,   369,
     1021     371,   373,   375,   383,   384,   390,   391,   392,   397,   399,
     1022     404,   405,   409,   413,   415,   417,   419,   424,   427,   429,
     1023     431,   433,   435,   437,   439,   441,   447,   449,   451,   453,
     1024     455,   457,   459,   461,   463,   468,   469,   470,   471,   475,
     1025     476,   478,   483,   484,   486,   488,   493,   494,   496,   501,
     1026     502,   504,   509,   510,   512,   514,   516,   521,   522,   524,
     1027     529,   530,   535,   536,   541,   542,   547,   548,   553,   554,
     1028     559,   560,   562,   564,   569,   574,   575,   577,   579,   585,
     1029     586,   592,   594,   596,   598,   603,   604,   609,   610,   611,
     1030     612,   613,   614,   615,   616,   617,   618,   622,   623,   629,
     1031     630,   636,   637,   638,   639,   640,   641,   642,   643,   644,
     1032     653,   660,   662,   672,   673,   678,   680,   682,   684,   688,
     1033     689,   694,   699,   702,   704,   706,   711,   713,   721,   722,
     1034     724,   728,   729,   734,   735,   740,   741,   745,   750,   751,
     1035     755,   757,   763,   764,   768,   770,   772,   774,   780,   781,
     1036     785,   786,   790,   792,   794,   799,   801,   806,   808,   812,
     1037     815,   819,   822,   826,   828,   832,   834,   841,   843,   845,
     1038     854,   856,   858,   860,   862,   867,   869,   871,   873,   878,
     1039     891,   892,   897,   899,   904,   908,   910,   912,   914,   916,
     1040     922,   923,   929,   930,   934,   935,   940,   942,   948,   949,
     1041     951,   956,   958,   965,   967,   971,   972,   977,   979,   983,
     1042     984,   988,   990,   994,   995,   999,  1000,  1004,  1005,  1020,
     1043    1021,  1022,  1023,  1024,  1028,  1033,  1040,  1050,  1055,  1060,
     1044    1068,  1073,  1078,  1083,  1088,  1096,  1118,  1123,  1130,  1132,
     1045    1139,  1144,  1149,  1160,  1165,  1170,  1175,  1180,  1189,  1194,
     1046    1202,  1203,  1204,  1205,  1211,  1216,  1224,  1225,  1226,  1227,
     1047    1231,  1232,  1233,  1234,  1239,  1240,  1249,  1250,  1255,  1256,
     1048    1261,  1263,  1265,  1267,  1269,  1272,  1271,  1283,  1284,  1286,
     1049    1296,  1297,  1302,  1306,  1308,  1310,  1312,  1314,  1316,  1318,
     1050    1320,  1325,  1327,  1329,  1331,  1333,  1335,  1337,  1339,  1341,
     1051    1343,  1345,  1347,  1349,  1355,  1356,  1358,  1360,  1362,  1367,
     1052    1368,  1374,  1375,  1377,  1379,  1384,  1386,  1388,  1390,  1395,
     1053    1396,  1398,  1400,  1405,  1406,  1408,  1413,  1414,  1416,  1418,
     1054    1423,  1425,  1427,  1432,  1433,  1437,  1439,  1441,  1443,  1445,
     1055    1450,  1452,  1457,  1459,  1464,  1465,  1467,  1468,  1473,  1474,
     1056    1476,  1478,  1483,  1485,  1491,  1492,  1494,  1497,  1500,  1505,
     1057    1506,  1511,  1516,  1520,  1522,  1524,  1529,  1531,  1537,  1538,
     1058    1546,  1547,  1551,  1552,  1553,  1555,  1557,  1564,  1565,  1567,
     1059    1569,  1574,  1575,  1581,  1582,  1586,  1587,  1592,  1593,  1594,
     1060    1596,  1604,  1605,  1607,  1610,  1612,  1616,  1617,  1618,  1620,
     1061    1622,  1626,  1631,  1639,  1640,  1649,  1651,  1656,  1657,  1658,
     1062    1662,  1663,  1664,  1668,  1669,  1670,  1674,  1675,  1676,  1681,
     1063    1682,  1683,  1684,  1690,  1691,  1693,  1698,  1699,  1704,  1705,
     1064    1706,  1707,  1708,  1723,  1724,  1729,  1730,  1738,  1740,  1742,
     1065    1745,  1747,  1749,  1772,  1773,  1775,  1777,  1782,  1783,  1785,
     1066    1790,  1795,  1796,  1802,  1801,  1805,  1809,  1811,  1813,  1819,
     1067    1820,  1825,  1830,  1832,  1837,  1839,  1840,  1842,  1847,  1849,
     1068    1851,  1856,  1858,  1863,  1868,  1876,  1882,  1881,  1895,  1896,
     1069    1901,  1902,  1906,  1911,  1916,  1924,  1929,  1940,  1941,  1952,
     1070    1953,  1959,  1960,  1964,  1965,  1966,  1969,  1968,  1979,  1984,
     1071    1989,  1995,  2004,  2010,  2016,  2022,  2028,  2036,  2042,  2050,
     1072    2056,  2065,  2066,  2067,  2071,  2075,  2077,  2082,  2083,  2087,
     1073    2088,  2093,  2099,  2100,  2103,  2105,  2106,  2110,  2111,  2112,
     1074    2113,  2147,  2149,  2150,  2152,  2157,  2162,  2167,  2169,  2171,
     1075    2176,  2178,  2180,  2182,  2187,  2189,  2199,  2201,  2202,  2207,
     1076    2209,  2211,  2216,  2218,  2220,  2225,  2227,  2229,  2238,  2239,
     1077    2240,  2244,  2246,  2248,  2253,  2255,  2257,  2262,  2264,  2266,
     1078    2281,  2283,  2284,  2286,  2291,  2292,  2297,  2299,  2301,  2306,
     1079    2308,  2310,  2312,  2317,  2319,  2321,  2331,  2333,  2334,  2336,
     1080    2341,  2343,  2345,  2350,  2352,  2354,  2356,  2361,  2363,  2365,
     1081    2396,  2398,  2399,  2401,  2406,  2411,  2419,  2421,  2423,  2428,
     1082    2430,  2435,  2437,  2451,  2452,  2454,  2459,  2461,  2463,  2465,
     1083    2467,  2472,  2473,  2475,  2477,  2482,  2484,  2486,  2492,  2494,
     1084    2496,  2500,  2502,  2504,  2506,  2520,  2521,  2523,  2528,  2530,
     1085    2532,  2534,  2536,  2541,  2542,  2544,  2546,  2551,  2553,  2555,
     1086    2561,  2562,  2564,  2573,  2576,  2578,  2581,  2583,  2585,  2598,
     1087    2599,  2601,  2606,  2608,  2610,  2612,  2614,  2619,  2620,  2622,
     1088    2624,  2629,  2631,  2639,  2640,  2641,  2646,  2647,  2651,  2653,
     1089    2655,  2657,  2659,  2661,  2668,  2670,  2672,  2674,  2676,  2678,
     1090    2680,  2682,  2684,  2686,  2691,  2693,  2695,  2700,  2726,  2727,
     1091    2729,  2733,  2734,  2738,  2740,  2742,  2744,  2746,  2748,  2755,
     1092    2757,  2759,  2761,  2763,  2765,  2770,  2775,  2777,  2779,  2797,
     1093    2799,  2804,  2805
    10931094};
    10941095#endif
     
    50555056
    50565057/* Line 1806 of yacc.c  */
    5057 #line 291 "parser.yy"
     5058#line 292 "parser.yy"
    50585059    {
    50595060                        typedefTable.enterScope();
     
    50645065
    50655066/* Line 1806 of yacc.c  */
    5066 #line 297 "parser.yy"
     5067#line 298 "parser.yy"
    50675068    {
    50685069                        typedefTable.leaveScope();
     
    50735074
    50745075/* Line 1806 of yacc.c  */
    5075 #line 306 "parser.yy"
     5076#line 307 "parser.yy"
    50765077    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    50775078    break;
     
    50805081
    50815082/* Line 1806 of yacc.c  */
    5082 #line 307 "parser.yy"
     5083#line 308 "parser.yy"
    50835084    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    50845085    break;
     
    50875088
    50885089/* Line 1806 of yacc.c  */
    5089 #line 308 "parser.yy"
     5090#line 309 "parser.yy"
    50905091    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    50915092    break;
     
    50945095
    50955096/* Line 1806 of yacc.c  */
    5096 #line 333 "parser.yy"
     5097#line 334 "parser.yy"
    50975098    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    50985099    break;
     
    51015102
    51025103/* Line 1806 of yacc.c  */
    5103 #line 334 "parser.yy"
     5104#line 335 "parser.yy"
    51045105    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    51055106    break;
     
    51085109
    51095110/* Line 1806 of yacc.c  */
    5110 #line 341 "parser.yy"
     5111#line 342 "parser.yy"
    51115112    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    51125113    break;
     
    51155116
    51165117/* Line 1806 of yacc.c  */
    5117 #line 343 "parser.yy"
     5118#line 344 "parser.yy"
    51185119    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    51195120    break;
     
    51225123
    51235124/* Line 1806 of yacc.c  */
    5124 #line 345 "parser.yy"
     5125#line 346 "parser.yy"
    51255126    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    51265127    break;
     
    51295130
    51305131/* Line 1806 of yacc.c  */
    5131 #line 347 "parser.yy"
     5132#line 348 "parser.yy"
    51325133    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    51335134    break;
     
    51365137
    51375138/* Line 1806 of yacc.c  */
    5138 #line 357 "parser.yy"
     5139#line 358 "parser.yy"
    51395140    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
    51405141    break;
     
    51435144
    51445145/* Line 1806 of yacc.c  */
    5145 #line 359 "parser.yy"
     5146#line 360 "parser.yy"
    51465147    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    51475148    break;
     
    51505151
    51515152/* Line 1806 of yacc.c  */
    5152 #line 363 "parser.yy"
     5153#line 364 "parser.yy"
    51535154    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    51545155    break;
     
    51575158
    51585159/* Line 1806 of yacc.c  */
    5159 #line 366 "parser.yy"
     5160#line 367 "parser.yy"
    51605161    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    51615162    break;
     
    51645165
    51655166/* Line 1806 of yacc.c  */
    5166 #line 369 "parser.yy"
     5167#line 370 "parser.yy"
    51675168    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
    51685169    break;
     
    51715172
    51725173/* Line 1806 of yacc.c  */
    5173 #line 371 "parser.yy"
     5174#line 372 "parser.yy"
    51745175    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
    51755176    break;
     
    51785179
    51795180/* Line 1806 of yacc.c  */
    5180 #line 373 "parser.yy"
     5181#line 374 "parser.yy"
    51815182    { (yyval.en) = 0; }
    51825183    break;
     
    51855186
    51865187/* Line 1806 of yacc.c  */
    5187 #line 375 "parser.yy"
     5188#line 376 "parser.yy"
    51885189    {
    51895190                        Token fn; fn.str = new std::string( "?{}" ); // location undefined
     
    51955196
    51965197/* Line 1806 of yacc.c  */
    5197 #line 384 "parser.yy"
     5198#line 385 "parser.yy"
    51985199    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    51995200    break;
     
    52025203
    52035204/* Line 1806 of yacc.c  */
    5204 #line 389 "parser.yy"
     5205#line 390 "parser.yy"
    52055206    { (yyval.en) = 0; }
    52065207    break;
     
    52095210
    52105211/* Line 1806 of yacc.c  */
    5211 #line 392 "parser.yy"
     5212#line 393 "parser.yy"
    52125213    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
    52135214    break;
     
    52165217
    52175218/* Line 1806 of yacc.c  */
    5218 #line 397 "parser.yy"
     5219#line 398 "parser.yy"
    52195220    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
    52205221    break;
     
    52235224
    52245225/* Line 1806 of yacc.c  */
    5225 #line 399 "parser.yy"
     5226#line 400 "parser.yy"
    52265227    { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
    52275228    break;
     
    52305231
    52315232/* Line 1806 of yacc.c  */
    5232 #line 404 "parser.yy"
     5233#line 405 "parser.yy"
    52335234    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    52345235    break;
     
    52375238
    52385239/* Line 1806 of yacc.c  */
    5239 #line 409 "parser.yy"
     5240#line 410 "parser.yy"
    52405241    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    52415242    break;
     
    52445245
    52455246/* Line 1806 of yacc.c  */
    5246 #line 413 "parser.yy"
     5247#line 414 "parser.yy"
    52475248    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    52485249    break;
     
    52515252
    52525253/* Line 1806 of yacc.c  */
    5253 #line 415 "parser.yy"
     5254#line 416 "parser.yy"
    52545255    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    52555256    break;
     
    52585259
    52595260/* Line 1806 of yacc.c  */
    5260 #line 417 "parser.yy"
     5261#line 418 "parser.yy"
    52615262    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    52625263    break;
     
    52655266
    52665267/* Line 1806 of yacc.c  */
    5267 #line 419 "parser.yy"
     5268#line 420 "parser.yy"
    52685269    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    52695270    break;
     
    52725273
    52735274/* Line 1806 of yacc.c  */
    5274 #line 427 "parser.yy"
     5275#line 428 "parser.yy"
    52755276    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    52765277    break;
     
    52795280
    52805281/* Line 1806 of yacc.c  */
    5281 #line 429 "parser.yy"
     5282#line 430 "parser.yy"
    52825283    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    52835284    break;
     
    52865287
    52875288/* Line 1806 of yacc.c  */
    5288 #line 431 "parser.yy"
     5289#line 432 "parser.yy"
    52895290    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    52905291    break;
     
    52935294
    52945295/* Line 1806 of yacc.c  */
    5295 #line 433 "parser.yy"
     5296#line 434 "parser.yy"
    52965297    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
    52975298    break;
     
    53005301
    53015302/* Line 1806 of yacc.c  */
    5302 #line 435 "parser.yy"
     5303#line 436 "parser.yy"
    53035304    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    53045305    break;
     
    53075308
    53085309/* Line 1806 of yacc.c  */
    5309 #line 437 "parser.yy"
     5310#line 438 "parser.yy"
    53105311    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    53115312    break;
     
    53145315
    53155316/* Line 1806 of yacc.c  */
    5316 #line 439 "parser.yy"
     5317#line 440 "parser.yy"
    53175318    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
    53185319    break;
     
    53215322
    53225323/* Line 1806 of yacc.c  */
    5323 #line 441 "parser.yy"
     5324#line 442 "parser.yy"
    53245325    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
    53255326    break;
     
    53285329
    53295330/* Line 1806 of yacc.c  */
    5330 #line 447 "parser.yy"
     5331#line 448 "parser.yy"
    53315332    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
    53325333    break;
     
    53355336
    53365337/* Line 1806 of yacc.c  */
    5337 #line 449 "parser.yy"
     5338#line 450 "parser.yy"
    53385339    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    53395340    break;
     
    53425343
    53435344/* Line 1806 of yacc.c  */
    5344 #line 451 "parser.yy"
     5345#line 452 "parser.yy"
    53455346    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( (yyvsp[(3) - (6)].decl) ), new VarRefNode( (yyvsp[(5) - (6)].tok) )); }
    53465347    break;
     
    53495350
    53505351/* Line 1806 of yacc.c  */
    5351 #line 453 "parser.yy"
     5352#line 454 "parser.yy"
    53525353    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
    53535354    break;
     
    53565357
    53575358/* Line 1806 of yacc.c  */
    5358 #line 455 "parser.yy"
     5359#line 456 "parser.yy"
    53595360    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    53605361    break;
     
    53635364
    53645365/* Line 1806 of yacc.c  */
    5365 #line 457 "parser.yy"
     5366#line 458 "parser.yy"
    53665367    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    53675368    break;
     
    53705371
    53715372/* Line 1806 of yacc.c  */
    5372 #line 459 "parser.yy"
     5373#line 460 "parser.yy"
    53735374    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
    53745375    break;
     
    53775378
    53785379/* Line 1806 of yacc.c  */
    5379 #line 461 "parser.yy"
     5380#line 462 "parser.yy"
    53805381    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); }
    53815382    break;
     
    53845385
    53855386/* Line 1806 of yacc.c  */
    5386 #line 463 "parser.yy"
     5387#line 464 "parser.yy"
    53875388    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); }
    53885389    break;
     
    53915392
    53925393/* Line 1806 of yacc.c  */
    5393 #line 467 "parser.yy"
     5394#line 468 "parser.yy"
    53945395    { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    53955396    break;
     
    53985399
    53995400/* Line 1806 of yacc.c  */
    5400 #line 468 "parser.yy"
     5401#line 469 "parser.yy"
    54015402    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    54025403    break;
     
    54055406
    54065407/* Line 1806 of yacc.c  */
    5407 #line 469 "parser.yy"
     5408#line 470 "parser.yy"
    54085409    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    54095410    break;
     
    54125413
    54135414/* Line 1806 of yacc.c  */
    5414 #line 470 "parser.yy"
     5415#line 471 "parser.yy"
    54155416    { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    54165417    break;
     
    54195420
    54205421/* Line 1806 of yacc.c  */
    5421 #line 476 "parser.yy"
     5422#line 477 "parser.yy"
    54225423    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    54235424    break;
     
    54265427
    54275428/* Line 1806 of yacc.c  */
    5428 #line 478 "parser.yy"
     5429#line 479 "parser.yy"
    54295430    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    54305431    break;
     
    54335434
    54345435/* Line 1806 of yacc.c  */
    5435 #line 484 "parser.yy"
     5436#line 485 "parser.yy"
    54365437    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54375438    break;
     
    54405441
    54415442/* Line 1806 of yacc.c  */
    5442 #line 486 "parser.yy"
     5443#line 487 "parser.yy"
    54435444    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54445445    break;
     
    54475448
    54485449/* Line 1806 of yacc.c  */
    5449 #line 488 "parser.yy"
     5450#line 489 "parser.yy"
    54505451    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54515452    break;
     
    54545455
    54555456/* Line 1806 of yacc.c  */
    5456 #line 494 "parser.yy"
     5457#line 495 "parser.yy"
    54575458    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54585459    break;
     
    54615462
    54625463/* Line 1806 of yacc.c  */
    5463 #line 496 "parser.yy"
     5464#line 497 "parser.yy"
    54645465    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54655466    break;
     
    54685469
    54695470/* Line 1806 of yacc.c  */
    5470 #line 502 "parser.yy"
     5471#line 503 "parser.yy"
    54715472    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54725473    break;
     
    54755476
    54765477/* Line 1806 of yacc.c  */
    5477 #line 504 "parser.yy"
     5478#line 505 "parser.yy"
    54785479    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54795480    break;
     
    54825483
    54835484/* Line 1806 of yacc.c  */
    5484 #line 510 "parser.yy"
     5485#line 511 "parser.yy"
    54855486    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54865487    break;
     
    54895490
    54905491/* Line 1806 of yacc.c  */
    5491 #line 512 "parser.yy"
     5492#line 513 "parser.yy"
    54925493    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54935494    break;
     
    54965497
    54975498/* Line 1806 of yacc.c  */
    5498 #line 514 "parser.yy"
     5499#line 515 "parser.yy"
    54995500    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55005501    break;
     
    55035504
    55045505/* Line 1806 of yacc.c  */
    5505 #line 516 "parser.yy"
     5506#line 517 "parser.yy"
    55065507    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55075508    break;
     
    55105511
    55115512/* Line 1806 of yacc.c  */
    5512 #line 522 "parser.yy"
     5513#line 523 "parser.yy"
    55135514    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55145515    break;
     
    55175518
    55185519/* Line 1806 of yacc.c  */
    5519 #line 524 "parser.yy"
     5520#line 525 "parser.yy"
    55205521    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55215522    break;
     
    55245525
    55255526/* Line 1806 of yacc.c  */
    5526 #line 530 "parser.yy"
     5527#line 531 "parser.yy"
    55275528    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55285529    break;
     
    55315532
    55325533/* Line 1806 of yacc.c  */
    5533 #line 536 "parser.yy"
     5534#line 537 "parser.yy"
    55345535    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55355536    break;
     
    55385539
    55395540/* Line 1806 of yacc.c  */
    5540 #line 542 "parser.yy"
     5541#line 543 "parser.yy"
    55415542    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55425543    break;
     
    55455546
    55465547/* Line 1806 of yacc.c  */
    5547 #line 548 "parser.yy"
     5548#line 549 "parser.yy"
    55485549    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55495550    break;
     
    55525553
    55535554/* Line 1806 of yacc.c  */
    5554 #line 554 "parser.yy"
     5555#line 555 "parser.yy"
    55555556    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55565557    break;
     
    55595560
    55605561/* Line 1806 of yacc.c  */
    5561 #line 560 "parser.yy"
     5562#line 561 "parser.yy"
    55625563    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    55635564    break;
     
    55665567
    55675568/* Line 1806 of yacc.c  */
    5568 #line 562 "parser.yy"
     5569#line 563 "parser.yy"
    55695570    { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    55705571    break;
     
    55735574
    55745575/* Line 1806 of yacc.c  */
    5575 #line 564 "parser.yy"
     5576#line 565 "parser.yy"
    55765577    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    55775578    break;
     
    55805581
    55815582/* Line 1806 of yacc.c  */
    5582 #line 575 "parser.yy"
     5583#line 576 "parser.yy"
    55835584    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55845585    break;
     
    55875588
    55885589/* Line 1806 of yacc.c  */
    5589 #line 577 "parser.yy"
     5590#line 578 "parser.yy"
    55905591    { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55915592    break;
     
    55945595
    55955596/* Line 1806 of yacc.c  */
    5596 #line 579 "parser.yy"
     5597#line 580 "parser.yy"
    55975598    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    55985599    break;
     
    56015602
    56025603/* Line 1806 of yacc.c  */
    5603 #line 584 "parser.yy"
     5604#line 585 "parser.yy"
    56045605    { (yyval.en) = new NullExprNode; }
    56055606    break;
     
    56085609
    56095610/* Line 1806 of yacc.c  */
    5610 #line 592 "parser.yy"
     5611#line 593 "parser.yy"
    56115612    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    56125613    break;
     
    56155616
    56165617/* Line 1806 of yacc.c  */
    5617 #line 594 "parser.yy"
     5618#line 595 "parser.yy"
    56185619    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    56195620    break;
     
    56225623
    56235624/* Line 1806 of yacc.c  */
    5624 #line 596 "parser.yy"
     5625#line 597 "parser.yy"
    56255626    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    56265627    break;
     
    56295630
    56305631/* Line 1806 of yacc.c  */
    5631 #line 598 "parser.yy"
     5632#line 599 "parser.yy"
    56325633    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    56335634    break;
     
    56365637
    56375638/* Line 1806 of yacc.c  */
    5638 #line 604 "parser.yy"
     5639#line 605 "parser.yy"
    56395640    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    56405641    break;
     
    56435644
    56445645/* Line 1806 of yacc.c  */
    5645 #line 608 "parser.yy"
     5646#line 609 "parser.yy"
    56465647    { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    56475648    break;
     
    56505651
    56515652/* Line 1806 of yacc.c  */
    5652 #line 609 "parser.yy"
     5653#line 610 "parser.yy"
    56535654    { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    56545655    break;
     
    56575658
    56585659/* Line 1806 of yacc.c  */
    5659 #line 610 "parser.yy"
     5660#line 611 "parser.yy"
    56605661    { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    56615662    break;
     
    56645665
    56655666/* Line 1806 of yacc.c  */
    5666 #line 611 "parser.yy"
     5667#line 612 "parser.yy"
    56675668    { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    56685669    break;
     
    56715672
    56725673/* Line 1806 of yacc.c  */
    5673 #line 612 "parser.yy"
     5674#line 613 "parser.yy"
    56745675    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    56755676    break;
     
    56785679
    56795680/* Line 1806 of yacc.c  */
    5680 #line 613 "parser.yy"
     5681#line 614 "parser.yy"
    56815682    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    56825683    break;
     
    56855686
    56865687/* Line 1806 of yacc.c  */
    5687 #line 614 "parser.yy"
     5688#line 615 "parser.yy"
    56885689    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    56895690    break;
     
    56925693
    56935694/* Line 1806 of yacc.c  */
    5694 #line 615 "parser.yy"
     5695#line 616 "parser.yy"
    56955696    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
    56965697    break;
     
    56995700
    57005701/* Line 1806 of yacc.c  */
    5701 #line 616 "parser.yy"
     5702#line 617 "parser.yy"
    57025703    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    57035704    break;
     
    57065707
    57075708/* Line 1806 of yacc.c  */
    5708 #line 617 "parser.yy"
     5709#line 618 "parser.yy"
    57095710    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    57105711    break;
     
    57135714
    57145715/* Line 1806 of yacc.c  */
    5715 #line 623 "parser.yy"
     5716#line 624 "parser.yy"
    57165717    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57175718    break;
     
    57205721
    57215722/* Line 1806 of yacc.c  */
    5722 #line 628 "parser.yy"
     5723#line 629 "parser.yy"
    57235724    { (yyval.en) = 0; }
    57245725    break;
     
    57275728
    57285729/* Line 1806 of yacc.c  */
    5729 #line 637 "parser.yy"
     5730#line 638 "parser.yy"
    57305731    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    57315732    break;
     
    57345735
    57355736/* Line 1806 of yacc.c  */
    5736 #line 644 "parser.yy"
     5737#line 645 "parser.yy"
    57375738    {
    57385739                        Token fn; fn.str = new std::string( "^?{}" ); // location undefined
     
    57455746
    57465747/* Line 1806 of yacc.c  */
    5747 #line 653 "parser.yy"
     5748#line 654 "parser.yy"
    57485749    {
    57495750                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    57545755
    57555756/* Line 1806 of yacc.c  */
    5756 #line 660 "parser.yy"
     5757#line 661 "parser.yy"
    57575758    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    57585759    break;
     
    57615762
    57625763/* Line 1806 of yacc.c  */
    5763 #line 667 "parser.yy"
     5764#line 668 "parser.yy"
    57645765    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    57655766    break;
     
    57685769
    57695770/* Line 1806 of yacc.c  */
    5770 #line 673 "parser.yy"
     5771#line 674 "parser.yy"
    57715772    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    57725773    break;
     
    57755776
    57765777/* Line 1806 of yacc.c  */
    5777 #line 678 "parser.yy"
     5778#line 679 "parser.yy"
    57785779    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57795780    break;
     
    57825783
    57835784/* Line 1806 of yacc.c  */
    5784 #line 680 "parser.yy"
     5785#line 681 "parser.yy"
    57855786    { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
    57865787    break;
     
    57895790
    57905791/* Line 1806 of yacc.c  */
    5791 #line 682 "parser.yy"
     5792#line 683 "parser.yy"
    57925793    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57935794    break;
     
    57965797
    57975798/* Line 1806 of yacc.c  */
    5798 #line 689 "parser.yy"
     5799#line 690 "parser.yy"
    57995800    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    58005801    break;
     
    58035804
    58045805/* Line 1806 of yacc.c  */
    5805 #line 694 "parser.yy"
     5806#line 695 "parser.yy"
    58065807    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    58075808    break;
     
    58105811
    58115812/* Line 1806 of yacc.c  */
    5812 #line 700 "parser.yy"
     5813#line 701 "parser.yy"
    58135814    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    58145815    break;
     
    58175818
    58185819/* Line 1806 of yacc.c  */
    5819 #line 702 "parser.yy"
     5820#line 703 "parser.yy"
    58205821    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    58215822    break;
     
    58245825
    58255826/* Line 1806 of yacc.c  */
    5826 #line 704 "parser.yy"
     5827#line 705 "parser.yy"
    58275828    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    58285829    break;
     
    58315832
    58325833/* Line 1806 of yacc.c  */
    5833 #line 706 "parser.yy"
     5834#line 707 "parser.yy"
    58345835    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
    58355836    break;
     
    58385839
    58395840/* Line 1806 of yacc.c  */
    5840 #line 711 "parser.yy"
     5841#line 712 "parser.yy"
    58415842    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    58425843    break;
     
    58455846
    58465847/* Line 1806 of yacc.c  */
    5847 #line 713 "parser.yy"
     5848#line 714 "parser.yy"
    58485849    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    58495850    break;
     
    58525853
    58535854/* Line 1806 of yacc.c  */
    5854 #line 720 "parser.yy"
     5855#line 721 "parser.yy"
    58555856    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    58565857    break;
     
    58595860
    58605861/* Line 1806 of yacc.c  */
    5861 #line 722 "parser.yy"
     5862#line 723 "parser.yy"
    58625863    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    58635864    break;
     
    58665867
    58675868/* Line 1806 of yacc.c  */
    5868 #line 729 "parser.yy"
     5869#line 730 "parser.yy"
    58695870    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
    58705871    break;
     
    58735874
    58745875/* Line 1806 of yacc.c  */
    5875 #line 733 "parser.yy"
     5876#line 734 "parser.yy"
    58765877    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
    58775878    break;
     
    58805881
    58815882/* Line 1806 of yacc.c  */
    5882 #line 734 "parser.yy"
     5883#line 735 "parser.yy"
    58835884    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    58845885    break;
     
    58875888
    58885889/* Line 1806 of yacc.c  */
    5889 #line 740 "parser.yy"
     5890#line 741 "parser.yy"
    58905891    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    58915892    break;
     
    58945895
    58955896/* Line 1806 of yacc.c  */
    5896 #line 744 "parser.yy"
     5897#line 745 "parser.yy"
    58975898    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58985899    break;
     
    59015902
    59025903/* Line 1806 of yacc.c  */
    5903 #line 749 "parser.yy"
     5904#line 750 "parser.yy"
    59045905    { (yyval.sn) = 0; }
    59055906    break;
     
    59085909
    59095910/* Line 1806 of yacc.c  */
    5910 #line 755 "parser.yy"
     5911#line 756 "parser.yy"
    59115912    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    59125913    break;
     
    59155916
    59165917/* Line 1806 of yacc.c  */
    5917 #line 757 "parser.yy"
     5918#line 758 "parser.yy"
    59185919    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    59195920    break;
     
    59225923
    59235924/* Line 1806 of yacc.c  */
    5924 #line 762 "parser.yy"
     5925#line 763 "parser.yy"
    59255926    { (yyval.sn) = 0; }
    59265927    break;
     
    59295930
    59305931/* Line 1806 of yacc.c  */
    5931 #line 768 "parser.yy"
     5932#line 769 "parser.yy"
    59325933    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    59335934    break;
     
    59365937
    59375938/* Line 1806 of yacc.c  */
    5938 #line 770 "parser.yy"
     5939#line 771 "parser.yy"
    59395940    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
    59405941    break;
     
    59435944
    59445945/* Line 1806 of yacc.c  */
    5945 #line 772 "parser.yy"
     5946#line 773 "parser.yy"
    59465947    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    59475948    break;
     
    59505951
    59515952/* Line 1806 of yacc.c  */
    5952 #line 774 "parser.yy"
     5953#line 775 "parser.yy"
    59535954    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
    59545955    break;
     
    59575958
    59585959/* Line 1806 of yacc.c  */
    5959 #line 779 "parser.yy"
     5960#line 780 "parser.yy"
    59605961    { (yyval.sn) = 0; }
    59615962    break;
    59625963
    59635964  case 180:
    5964 
    5965 /* Line 1806 of yacc.c  */
    5966 #line 784 "parser.yy"
    5967     { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    5968     break;
    5969 
    5970   case 181:
    59715965
    59725966/* Line 1806 of yacc.c  */
     
    59755969    break;
    59765970
     5971  case 181:
     5972
     5973/* Line 1806 of yacc.c  */
     5974#line 786 "parser.yy"
     5975    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
     5976    break;
     5977
    59775978  case 182:
    59785979
    59795980/* Line 1806 of yacc.c  */
    5980 #line 790 "parser.yy"
     5981#line 791 "parser.yy"
    59815982    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    59825983    break;
     
    59855986
    59865987/* Line 1806 of yacc.c  */
    5987 #line 792 "parser.yy"
     5988#line 793 "parser.yy"
    59885989    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    59895990    break;
     
    59925993
    59935994/* Line 1806 of yacc.c  */
    5994 #line 794 "parser.yy"
     5995#line 795 "parser.yy"
    59955996    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    59965997    break;
     
    59996000
    60006001/* Line 1806 of yacc.c  */
    6001 #line 799 "parser.yy"
     6002#line 800 "parser.yy"
    60026003    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    60036004    break;
     
    60066007
    60076008/* Line 1806 of yacc.c  */
    6008 #line 801 "parser.yy"
     6009#line 802 "parser.yy"
    60096010    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    60106011    break;
     
    60136014
    60146015/* Line 1806 of yacc.c  */
    6015 #line 806 "parser.yy"
     6016#line 807 "parser.yy"
    60166017    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    60176018    break;
     
    60206021
    60216022/* Line 1806 of yacc.c  */
    6022 #line 810 "parser.yy"
     6023#line 811 "parser.yy"
    60236024    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    60246025    break;
     
    60276028
    60286029/* Line 1806 of yacc.c  */
    6029 #line 813 "parser.yy"
     6030#line 814 "parser.yy"
    60306031    { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
    60316032    break;
     
    60346035
    60356036/* Line 1806 of yacc.c  */
    6036 #line 817 "parser.yy"
     6037#line 818 "parser.yy"
    60376038    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    60386039    break;
     
    60416042
    60426043/* Line 1806 of yacc.c  */
    6043 #line 820 "parser.yy"
     6044#line 821 "parser.yy"
    60446045    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    60456046    break;
     
    60486049
    60496050/* Line 1806 of yacc.c  */
    6050 #line 824 "parser.yy"
     6051#line 825 "parser.yy"
    60516052    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    60526053    break;
     
    60556056
    60566057/* Line 1806 of yacc.c  */
    6057 #line 826 "parser.yy"
     6058#line 827 "parser.yy"
    60586059    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    60596060    break;
     
    60626063
    60636064/* Line 1806 of yacc.c  */
    6064 #line 828 "parser.yy"
     6065#line 829 "parser.yy"
    60656066    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    60666067    break;
     
    60696070
    60706071/* Line 1806 of yacc.c  */
    6071 #line 832 "parser.yy"
     6072#line 833 "parser.yy"
    60726073    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    60736074    break;
     
    60766077
    60776078/* Line 1806 of yacc.c  */
    6078 #line 834 "parser.yy"
     6079#line 835 "parser.yy"
    60796080    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
    60806081    break;
     
    60836084
    60846085/* Line 1806 of yacc.c  */
    6085 #line 841 "parser.yy"
     6086#line 842 "parser.yy"
    60866087    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60876088    break;
     
    60906091
    60916092/* Line 1806 of yacc.c  */
    6092 #line 843 "parser.yy"
     6093#line 844 "parser.yy"
    60936094    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60946095    break;
     
    60976098
    60986099/* Line 1806 of yacc.c  */
    6099 #line 845 "parser.yy"
     6100#line 846 "parser.yy"
    61006101    {
    61016102                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    61076108
    61086109/* Line 1806 of yacc.c  */
    6109 #line 856 "parser.yy"
     6110#line 857 "parser.yy"
    61106111    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    61116112    break;
     
    61146115
    61156116/* Line 1806 of yacc.c  */
    6116 #line 858 "parser.yy"
     6117#line 859 "parser.yy"
    61176118    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    61186119    break;
     
    61216122
    61226123/* Line 1806 of yacc.c  */
    6123 #line 860 "parser.yy"
     6124#line 861 "parser.yy"
    61246125    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    61256126    break;
     
    61286129
    61296130/* Line 1806 of yacc.c  */
    6130 #line 862 "parser.yy"
     6131#line 863 "parser.yy"
    61316132    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    61326133    break;
     
    61356136
    61366137/* Line 1806 of yacc.c  */
    6137 #line 867 "parser.yy"
     6138#line 868 "parser.yy"
    61386139    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    61396140    break;
     
    61426143
    61436144/* Line 1806 of yacc.c  */
    6144 #line 869 "parser.yy"
     6145#line 870 "parser.yy"
    61456146    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    61466147    break;
     
    61496150
    61506151/* Line 1806 of yacc.c  */
    6151 #line 871 "parser.yy"
     6152#line 872 "parser.yy"
    61526153    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    61536154    break;
     
    61566157
    61576158/* Line 1806 of yacc.c  */
    6158 #line 873 "parser.yy"
     6159#line 874 "parser.yy"
    61596160    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    61606161    break;
     
    61636164
    61646165/* Line 1806 of yacc.c  */
    6165 #line 878 "parser.yy"
     6166#line 879 "parser.yy"
    61666167    {
    61676168                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    61736174
    61746175/* Line 1806 of yacc.c  */
    6175 #line 892 "parser.yy"
     6176#line 893 "parser.yy"
    61766177    {
    61776178                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    61836184
    61846185/* Line 1806 of yacc.c  */
    6185 #line 897 "parser.yy"
     6186#line 898 "parser.yy"
    61866187    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    61876188    break;
     
    61906191
    61916192/* Line 1806 of yacc.c  */
    6192 #line 899 "parser.yy"
     6193#line 900 "parser.yy"
    61936194    {
    61946195                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62006201
    62016202/* Line 1806 of yacc.c  */
    6202 #line 908 "parser.yy"
     6203#line 909 "parser.yy"
    62036204    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    62046205    break;
     
    62076208
    62086209/* Line 1806 of yacc.c  */
    6209 #line 910 "parser.yy"
     6210#line 911 "parser.yy"
    62106211    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    62116212    break;
     
    62146215
    62156216/* Line 1806 of yacc.c  */
    6216 #line 912 "parser.yy"
     6217#line 913 "parser.yy"
    62176218    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    62186219    break;
     
    62216222
    62226223/* Line 1806 of yacc.c  */
    6223 #line 914 "parser.yy"
     6224#line 915 "parser.yy"
    62246225    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); }
    62256226    break;
     
    62286229
    62296230/* Line 1806 of yacc.c  */
    6230 #line 916 "parser.yy"
     6231#line 917 "parser.yy"
    62316232    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
    62326233    break;
     
    62356236
    62366237/* Line 1806 of yacc.c  */
    6237 #line 921 "parser.yy"
     6238#line 922 "parser.yy"
    62386239    { (yyval.flag) = false; }
    62396240    break;
     
    62426243
    62436244/* Line 1806 of yacc.c  */
    6244 #line 923 "parser.yy"
     6245#line 924 "parser.yy"
    62456246    { (yyval.flag) = true; }
    62466247    break;
     
    62496250
    62506251/* Line 1806 of yacc.c  */
    6251 #line 928 "parser.yy"
     6252#line 929 "parser.yy"
    62526253    { (yyval.en) = 0; }
    62536254    break;
     
    62566257
    62576258/* Line 1806 of yacc.c  */
    6258 #line 935 "parser.yy"
     6259#line 936 "parser.yy"
    62596260    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    62606261    break;
     
    62636264
    62646265/* Line 1806 of yacc.c  */
    6265 #line 940 "parser.yy"
     6266#line 941 "parser.yy"
    62666267    { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
    62676268    break;
     
    62706271
    62716272/* Line 1806 of yacc.c  */
    6272 #line 942 "parser.yy"
     6273#line 943 "parser.yy"
    62736274    { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
    62746275    break;
     
    62776278
    62786279/* Line 1806 of yacc.c  */
    6279 #line 947 "parser.yy"
     6280#line 948 "parser.yy"
    62806281    { (yyval.constant) = 0; }
    62816282    break;
     
    62846285
    62856286/* Line 1806 of yacc.c  */
    6286 #line 949 "parser.yy"
     6287#line 950 "parser.yy"
    62876288    { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
    62886289    break;
     
    62916292
    62926293/* Line 1806 of yacc.c  */
    6293 #line 951 "parser.yy"
     6294#line 952 "parser.yy"
    62946295    { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
    62956296    break;
     
    62986299
    62996300/* Line 1806 of yacc.c  */
    6300 #line 956 "parser.yy"
     6301#line 957 "parser.yy"
    63016302    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    63026303    break;
     
    63056306
    63066307/* Line 1806 of yacc.c  */
    6307 #line 958 "parser.yy"
     6308#line 959 "parser.yy"
    63086309    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    63096310    break;
     
    63126313
    63136314/* Line 1806 of yacc.c  */
    6314 #line 965 "parser.yy"
     6315#line 966 "parser.yy"
    63156316    { (yyval.decl) = 0; }
    63166317    break;
     
    63196320
    63206321/* Line 1806 of yacc.c  */
    6321 #line 972 "parser.yy"
     6322#line 973 "parser.yy"
    63226323    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    63236324    break;
     
    63266327
    63276328/* Line 1806 of yacc.c  */
    6328 #line 977 "parser.yy"
     6329#line 978 "parser.yy"
    63296330    { (yyval.decl) = 0; }
    63306331    break;
     
    63336334
    63346335/* Line 1806 of yacc.c  */
    6335 #line 984 "parser.yy"
     6336#line 985 "parser.yy"
    63366337    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    63376338    break;
    63386339
    63396340  case 245:
    6340 
    6341 /* Line 1806 of yacc.c  */
    6342 #line 998 "parser.yy"
    6343     {}
    6344     break;
    6345 
    6346   case 246:
    63476341
    63486342/* Line 1806 of yacc.c  */
     
    63516345    break;
    63526346
     6347  case 246:
     6348
     6349/* Line 1806 of yacc.c  */
     6350#line 1000 "parser.yy"
     6351    {}
     6352    break;
     6353
    63536354  case 254:
    63546355
    63556356/* Line 1806 of yacc.c  */
    6356 #line 1028 "parser.yy"
     6357#line 1029 "parser.yy"
    63576358    {
    63586359                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63646365
    63656366/* Line 1806 of yacc.c  */
    6366 #line 1035 "parser.yy"
     6367#line 1036 "parser.yy"
    63676368    {
    63686369                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63746375
    63756376/* Line 1806 of yacc.c  */
    6376 #line 1040 "parser.yy"
     6377#line 1041 "parser.yy"
    63776378    {
    63786379                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    63846385
    63856386/* Line 1806 of yacc.c  */
    6386 #line 1050 "parser.yy"
     6387#line 1051 "parser.yy"
    63876388    {
    63886389                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    63946395
    63956396/* Line 1806 of yacc.c  */
    6396 #line 1055 "parser.yy"
     6397#line 1056 "parser.yy"
    63976398    {
    63986399                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    64046405
    64056406/* Line 1806 of yacc.c  */
    6406 #line 1060 "parser.yy"
     6407#line 1061 "parser.yy"
    64076408    {
    64086409                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    64146415
    64156416/* Line 1806 of yacc.c  */
    6416 #line 1068 "parser.yy"
     6417#line 1069 "parser.yy"
    64176418    {
    64186419                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64246425
    64256426/* Line 1806 of yacc.c  */
    6426 #line 1073 "parser.yy"
     6427#line 1074 "parser.yy"
    64276428    {
    64286429                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64346435
    64356436/* Line 1806 of yacc.c  */
    6436 #line 1078 "parser.yy"
     6437#line 1079 "parser.yy"
    64376438    {
    64386439                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64446445
    64456446/* Line 1806 of yacc.c  */
    6446 #line 1083 "parser.yy"
     6447#line 1084 "parser.yy"
    64476448    {
    64486449                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    64546455
    64556456/* Line 1806 of yacc.c  */
    6456 #line 1088 "parser.yy"
     6457#line 1089 "parser.yy"
    64576458    {
    64586459                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    64646465
    64656466/* Line 1806 of yacc.c  */
    6466 #line 1096 "parser.yy"
     6467#line 1097 "parser.yy"
    64676468    {
    64686469                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    64736474
    64746475/* Line 1806 of yacc.c  */
    6475 #line 1119 "parser.yy"
     6476#line 1120 "parser.yy"
    64766477    {
    64776478                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64826483
    64836484/* Line 1806 of yacc.c  */
    6484 #line 1123 "parser.yy"
     6485#line 1124 "parser.yy"
    64856486    {
    64866487                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    64916492
    64926493/* Line 1806 of yacc.c  */
    6493 #line 1130 "parser.yy"
     6494#line 1131 "parser.yy"
    64946495    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    64956496    break;
     
    64986499
    64996500/* Line 1806 of yacc.c  */
    6500 #line 1134 "parser.yy"
     6501#line 1135 "parser.yy"
    65016502    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    65026503    break;
     
    65056506
    65066507/* Line 1806 of yacc.c  */
    6507 #line 1139 "parser.yy"
     6508#line 1140 "parser.yy"
    65086509    {
    65096510                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65156516
    65166517/* Line 1806 of yacc.c  */
    6517 #line 1144 "parser.yy"
     6518#line 1145 "parser.yy"
    65186519    {
    65196520                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65256526
    65266527/* Line 1806 of yacc.c  */
    6527 #line 1149 "parser.yy"
     6528#line 1150 "parser.yy"
    65286529    {
    65296530                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    65356536
    65366537/* Line 1806 of yacc.c  */
    6537 #line 1160 "parser.yy"
     6538#line 1161 "parser.yy"
    65386539    {
    65396540                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65456546
    65466547/* Line 1806 of yacc.c  */
    6547 #line 1165 "parser.yy"
     6548#line 1166 "parser.yy"
    65486549    {
    65496550                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65556556
    65566557/* Line 1806 of yacc.c  */
    6557 #line 1170 "parser.yy"
     6558#line 1171 "parser.yy"
    65586559    {
    65596560                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65656566
    65666567/* Line 1806 of yacc.c  */
    6567 #line 1175 "parser.yy"
     6568#line 1176 "parser.yy"
    65686569    {
    65696570                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65756576
    65766577/* Line 1806 of yacc.c  */
    6577 #line 1180 "parser.yy"
     6578#line 1181 "parser.yy"
    65786579    {
    65796580                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    65856586
    65866587/* Line 1806 of yacc.c  */
    6587 #line 1189 "parser.yy"
     6588#line 1190 "parser.yy"
    65886589    {
    65896590                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    65956596
    65966597/* Line 1806 of yacc.c  */
    6597 #line 1194 "parser.yy"
     6598#line 1195 "parser.yy"
    65986599    {
    65996600                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    66056606
    66066607/* Line 1806 of yacc.c  */
    6607 #line 1211 "parser.yy"
     6608#line 1212 "parser.yy"
    66086609    {
    66096610                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66156616
    66166617/* Line 1806 of yacc.c  */
    6617 #line 1216 "parser.yy"
     6618#line 1217 "parser.yy"
    66186619    {
    66196620                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    66256626
    66266627/* Line 1806 of yacc.c  */
    6627 #line 1238 "parser.yy"
     6628#line 1239 "parser.yy"
    66286629    { (yyval.decl) = 0; }
    66296630    break;
     
    66326633
    66336634/* Line 1806 of yacc.c  */
    6634 #line 1250 "parser.yy"
     6635#line 1251 "parser.yy"
    66356636    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66366637    break;
     
    66396640
    66406641/* Line 1806 of yacc.c  */
    6641 #line 1261 "parser.yy"
     6642#line 1262 "parser.yy"
    66426643    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    66436644    break;
     
    66466647
    66476648/* Line 1806 of yacc.c  */
    6648 #line 1263 "parser.yy"
     6649#line 1264 "parser.yy"
    66496650    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    66506651    break;
     
    66536654
    66546655/* Line 1806 of yacc.c  */
    6655 #line 1265 "parser.yy"
     6656#line 1266 "parser.yy"
    66566657    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    66576658    break;
     
    66606661
    66616662/* Line 1806 of yacc.c  */
    6662 #line 1267 "parser.yy"
     6663#line 1268 "parser.yy"
    66636664    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    66646665    break;
     
    66676668
    66686669/* Line 1806 of yacc.c  */
    6669 #line 1269 "parser.yy"
     6670#line 1270 "parser.yy"
    66706671    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    66716672    break;
     
    66746675
    66756676/* Line 1806 of yacc.c  */
    6676 #line 1271 "parser.yy"
     6677#line 1272 "parser.yy"
    66776678    {
    66786679                        typedefTable.enterScope();
     
    66836684
    66846685/* Line 1806 of yacc.c  */
    6685 #line 1275 "parser.yy"
     6686#line 1276 "parser.yy"
    66866687    {
    66876688                        typedefTable.leaveScope();
     
    66936694
    66946695/* Line 1806 of yacc.c  */
    6695 #line 1284 "parser.yy"
     6696#line 1285 "parser.yy"
    66966697    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66976698    break;
     
    67006701
    67016702/* Line 1806 of yacc.c  */
    6702 #line 1286 "parser.yy"
     6703#line 1287 "parser.yy"
    67036704    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67046705    break;
     
    67076708
    67086709/* Line 1806 of yacc.c  */
    6709 #line 1297 "parser.yy"
     6710#line 1298 "parser.yy"
    67106711    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67116712    break;
     
    67146715
    67156716/* Line 1806 of yacc.c  */
    6716 #line 1306 "parser.yy"
     6717#line 1307 "parser.yy"
    67176718    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    67186719    break;
     
    67216722
    67226723/* Line 1806 of yacc.c  */
    6723 #line 1308 "parser.yy"
     6724#line 1309 "parser.yy"
    67246725    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    67256726    break;
     
    67286729
    67296730/* Line 1806 of yacc.c  */
    6730 #line 1310 "parser.yy"
     6731#line 1311 "parser.yy"
    67316732    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    67326733    break;
     
    67356736
    67366737/* Line 1806 of yacc.c  */
    6737 #line 1312 "parser.yy"
     6738#line 1313 "parser.yy"
    67386739    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    67396740    break;
     
    67426743
    67436744/* Line 1806 of yacc.c  */
    6744 #line 1314 "parser.yy"
     6745#line 1315 "parser.yy"
    67456746    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    67466747    break;
     
    67496750
    67506751/* Line 1806 of yacc.c  */
    6751 #line 1316 "parser.yy"
     6752#line 1317 "parser.yy"
    67526753    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    67536754    break;
     
    67566757
    67576758/* Line 1806 of yacc.c  */
    6758 #line 1318 "parser.yy"
     6759#line 1319 "parser.yy"
    67596760    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    67606761    break;
     
    67636764
    67646765/* Line 1806 of yacc.c  */
    6765 #line 1320 "parser.yy"
     6766#line 1321 "parser.yy"
    67666767    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    67676768    break;
     
    67706771
    67716772/* Line 1806 of yacc.c  */
    6772 #line 1325 "parser.yy"
     6773#line 1326 "parser.yy"
    67736774    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    67746775    break;
     
    67776778
    67786779/* Line 1806 of yacc.c  */
    6779 #line 1327 "parser.yy"
     6780#line 1328 "parser.yy"
    67806781    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    67816782    break;
     
    67846785
    67856786/* Line 1806 of yacc.c  */
    6786 #line 1329 "parser.yy"
     6787#line 1330 "parser.yy"
    67876788    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    67886789    break;
     
    67916792
    67926793/* Line 1806 of yacc.c  */
    6793 #line 1331 "parser.yy"
     6794#line 1332 "parser.yy"
    67946795    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    67956796    break;
     
    67986799
    67996800/* Line 1806 of yacc.c  */
    6800 #line 1333 "parser.yy"
     6801#line 1334 "parser.yy"
    68016802    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    68026803    break;
     
    68056806
    68066807/* Line 1806 of yacc.c  */
    6807 #line 1335 "parser.yy"
     6808#line 1336 "parser.yy"
    68086809    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    68096810    break;
     
    68126813
    68136814/* Line 1806 of yacc.c  */
    6814 #line 1337 "parser.yy"
     6815#line 1338 "parser.yy"
    68156816    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    68166817    break;
     
    68196820
    68206821/* Line 1806 of yacc.c  */
    6821 #line 1339 "parser.yy"
     6822#line 1340 "parser.yy"
    68226823    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    68236824    break;
     
    68266827
    68276828/* Line 1806 of yacc.c  */
    6828 #line 1341 "parser.yy"
     6829#line 1342 "parser.yy"
    68296830    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    68306831    break;
     
    68336834
    68346835/* Line 1806 of yacc.c  */
    6835 #line 1343 "parser.yy"
     6836#line 1344 "parser.yy"
    68366837    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    68376838    break;
     
    68406841
    68416842/* Line 1806 of yacc.c  */
    6842 #line 1345 "parser.yy"
     6843#line 1346 "parser.yy"
    68436844    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    68446845    break;
     
    68476848
    68486849/* Line 1806 of yacc.c  */
    6849 #line 1347 "parser.yy"
     6850#line 1348 "parser.yy"
    68506851    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    68516852    break;
     
    68546855
    68556856/* Line 1806 of yacc.c  */
    6856 #line 1349 "parser.yy"
     6857#line 1350 "parser.yy"
    68576858    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
    68586859    break;
     
    68616862
    68626863/* Line 1806 of yacc.c  */
    6863 #line 1356 "parser.yy"
     6864#line 1357 "parser.yy"
    68646865    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68656866    break;
     
    68686869
    68696870/* Line 1806 of yacc.c  */
    6870 #line 1358 "parser.yy"
     6871#line 1359 "parser.yy"
    68716872    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68726873    break;
     
    68756876
    68766877/* Line 1806 of yacc.c  */
    6877 #line 1360 "parser.yy"
     6878#line 1361 "parser.yy"
    68786879    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68796880    break;
     
    68826883
    68836884/* Line 1806 of yacc.c  */
    6884 #line 1362 "parser.yy"
     6885#line 1363 "parser.yy"
    68856886    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    68866887    break;
     
    68896890
    68906891/* Line 1806 of yacc.c  */
    6891 #line 1368 "parser.yy"
     6892#line 1369 "parser.yy"
    68926893    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68936894    break;
     
    68966897
    68976898/* Line 1806 of yacc.c  */
    6898 #line 1375 "parser.yy"
     6899#line 1376 "parser.yy"
    68996900    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69006901    break;
     
    69036904
    69046905/* Line 1806 of yacc.c  */
    6905 #line 1377 "parser.yy"
     6906#line 1378 "parser.yy"
    69066907    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69076908    break;
     
    69106911
    69116912/* Line 1806 of yacc.c  */
    6912 #line 1379 "parser.yy"
     6913#line 1380 "parser.yy"
    69136914    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    69146915    break;
     
    69176918
    69186919/* Line 1806 of yacc.c  */
    6919 #line 1384 "parser.yy"
     6920#line 1385 "parser.yy"
    69206921    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    69216922    break;
     
    69246925
    69256926/* Line 1806 of yacc.c  */
    6926 #line 1386 "parser.yy"
     6927#line 1387 "parser.yy"
    69276928    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    69286929    break;
     
    69316932
    69326933/* Line 1806 of yacc.c  */
    6933 #line 1388 "parser.yy"
     6934#line 1389 "parser.yy"
    69346935    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    69356936    break;
     
    69386939
    69396940/* Line 1806 of yacc.c  */
    6940 #line 1390 "parser.yy"
     6941#line 1391 "parser.yy"
    69416942    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    69426943    break;
     
    69456946
    69466947/* Line 1806 of yacc.c  */
    6947 #line 1396 "parser.yy"
     6948#line 1397 "parser.yy"
    69486949    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69496950    break;
     
    69526953
    69536954/* Line 1806 of yacc.c  */
    6954 #line 1398 "parser.yy"
     6955#line 1399 "parser.yy"
    69556956    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69566957    break;
     
    69596960
    69606961/* Line 1806 of yacc.c  */
    6961 #line 1400 "parser.yy"
     6962#line 1401 "parser.yy"
    69626963    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69636964    break;
     
    69666967
    69676968/* Line 1806 of yacc.c  */
    6968 #line 1406 "parser.yy"
     6969#line 1407 "parser.yy"
    69696970    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69706971    break;
     
    69736974
    69746975/* Line 1806 of yacc.c  */
    6975 #line 1408 "parser.yy"
     6976#line 1409 "parser.yy"
    69766977    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69776978    break;
     
    69806981
    69816982/* Line 1806 of yacc.c  */
    6982 #line 1414 "parser.yy"
     6983#line 1415 "parser.yy"
    69836984    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69846985    break;
     
    69876988
    69886989/* Line 1806 of yacc.c  */
    6989 #line 1416 "parser.yy"
     6990#line 1417 "parser.yy"
    69906991    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69916992    break;
     
    69946995
    69956996/* Line 1806 of yacc.c  */
    6996 #line 1418 "parser.yy"
     6997#line 1419 "parser.yy"
    69976998    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    69986999    break;
     
    70017002
    70027003/* Line 1806 of yacc.c  */
    7003 #line 1423 "parser.yy"
     7004#line 1424 "parser.yy"
    70047005    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    70057006    break;
     
    70087009
    70097010/* Line 1806 of yacc.c  */
    7010 #line 1425 "parser.yy"
     7011#line 1426 "parser.yy"
    70117012    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    70127013    break;
     
    70157016
    70167017/* Line 1806 of yacc.c  */
    7017 #line 1427 "parser.yy"
     7018#line 1428 "parser.yy"
    70187019    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    70197020    break;
     
    70227023
    70237024/* Line 1806 of yacc.c  */
    7024 #line 1437 "parser.yy"
     7025#line 1438 "parser.yy"
    70257026    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
    70267027    break;
     
    70297030
    70307031/* Line 1806 of yacc.c  */
    7031 #line 1439 "parser.yy"
     7032#line 1440 "parser.yy"
    70327033    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }
    70337034    break;
     
    70367037
    70377038/* Line 1806 of yacc.c  */
    7038 #line 1441 "parser.yy"
     7039#line 1442 "parser.yy"
    70397040    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }
    70407041    break;
     
    70437044
    70447045/* Line 1806 of yacc.c  */
    7045 #line 1443 "parser.yy"
     7046#line 1444 "parser.yy"
    70467047    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
    70477048    break;
     
    70507051
    70517052/* Line 1806 of yacc.c  */
    7052 #line 1445 "parser.yy"
     7053#line 1446 "parser.yy"
    70537054    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    70547055    break;
     
    70577058
    70587059/* Line 1806 of yacc.c  */
    7059 #line 1450 "parser.yy"
     7060#line 1451 "parser.yy"
    70607061    { (yyval.aggKey) = DeclarationNode::Struct; }
    70617062    break;
     
    70647065
    70657066/* Line 1806 of yacc.c  */
    7066 #line 1452 "parser.yy"
     7067#line 1453 "parser.yy"
    70677068    { (yyval.aggKey) = DeclarationNode::Union; }
    70687069    break;
     
    70717072
    70727073/* Line 1806 of yacc.c  */
    7073 #line 1457 "parser.yy"
     7074#line 1458 "parser.yy"
    70747075    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    70757076    break;
     
    70787079
    70797080/* Line 1806 of yacc.c  */
    7080 #line 1459 "parser.yy"
     7081#line 1460 "parser.yy"
    70817082    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    70827083    break;
     
    70857086
    70867087/* Line 1806 of yacc.c  */
    7087 #line 1465 "parser.yy"
     7088#line 1466 "parser.yy"
    70887089    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    70897090    break;
     
    70927093
    70937094/* Line 1806 of yacc.c  */
    7094 #line 1468 "parser.yy"
     7095#line 1469 "parser.yy"
    70957096    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    70967097    break;
     
    70997100
    71007101/* Line 1806 of yacc.c  */
    7101 #line 1474 "parser.yy"
     7102#line 1475 "parser.yy"
    71027103    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    71037104    break;
     
    71067107
    71077108/* Line 1806 of yacc.c  */
    7108 #line 1476 "parser.yy"
     7109#line 1477 "parser.yy"
    71097110    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    71107111    break;
     
    71137114
    71147115/* Line 1806 of yacc.c  */
    7115 #line 1478 "parser.yy"
     7116#line 1479 "parser.yy"
    71167117    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    71177118    break;
     
    71207121
    71217122/* Line 1806 of yacc.c  */
    7122 #line 1483 "parser.yy"
     7123#line 1484 "parser.yy"
    71237124    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    71247125    break;
     
    71277128
    71287129/* Line 1806 of yacc.c  */
    7129 #line 1485 "parser.yy"
     7130#line 1486 "parser.yy"
    71307131    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    71317132    break;
     
    71347135
    71357136/* Line 1806 of yacc.c  */
    7136 #line 1490 "parser.yy"
     7137#line 1491 "parser.yy"
    71377138    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    71387139    break;
     
    71417142
    71427143/* Line 1806 of yacc.c  */
    7143 #line 1492 "parser.yy"
     7144#line 1493 "parser.yy"
    71447145    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    71457146    break;
     
    71487149
    71497150/* Line 1806 of yacc.c  */
    7150 #line 1495 "parser.yy"
     7151#line 1496 "parser.yy"
    71517152    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71527153    break;
     
    71557156
    71567157/* Line 1806 of yacc.c  */
    7157 #line 1498 "parser.yy"
     7158#line 1499 "parser.yy"
    71587159    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    71597160    break;
     
    71627163
    71637164/* Line 1806 of yacc.c  */
    7164 #line 1504 "parser.yy"
     7165#line 1505 "parser.yy"
    71657166    { (yyval.en) = 0; }
    71667167    break;
     
    71697170
    71707171/* Line 1806 of yacc.c  */
    7171 #line 1506 "parser.yy"
     7172#line 1507 "parser.yy"
    71727173    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    71737174    break;
     
    71767177
    71777178/* Line 1806 of yacc.c  */
    7178 #line 1511 "parser.yy"
     7179#line 1512 "parser.yy"
    71797180    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    71807181    break;
     
    71837184
    71847185/* Line 1806 of yacc.c  */
    7185 #line 1520 "parser.yy"
     7186#line 1521 "parser.yy"
    71867187    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    71877188    break;
     
    71907191
    71917192/* Line 1806 of yacc.c  */
    7192 #line 1522 "parser.yy"
     7193#line 1523 "parser.yy"
    71937194    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
    71947195    break;
     
    71977198
    71987199/* Line 1806 of yacc.c  */
    7199 #line 1524 "parser.yy"
     7200#line 1525 "parser.yy"
    72007201    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    72017202    break;
     
    72047205
    72057206/* Line 1806 of yacc.c  */
    7206 #line 1529 "parser.yy"
     7207#line 1530 "parser.yy"
    72077208    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    72087209    break;
     
    72117212
    72127213/* Line 1806 of yacc.c  */
    7213 #line 1531 "parser.yy"
     7214#line 1532 "parser.yy"
    72147215    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    72157216    break;
     
    72187219
    72197220/* Line 1806 of yacc.c  */
    7220 #line 1536 "parser.yy"
     7221#line 1537 "parser.yy"
    72217222    { (yyval.en) = 0; }
    72227223    break;
     
    72257226
    72267227/* Line 1806 of yacc.c  */
    7227 #line 1538 "parser.yy"
     7228#line 1539 "parser.yy"
    72287229    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    72297230    break;
     
    72327233
    72337234/* Line 1806 of yacc.c  */
    7234 #line 1545 "parser.yy"
     7235#line 1546 "parser.yy"
    72357236    { (yyval.decl) = 0; }
    72367237    break;
     
    72397240
    72407241/* Line 1806 of yacc.c  */
    7241 #line 1553 "parser.yy"
     7242#line 1554 "parser.yy"
    72427243    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72437244    break;
     
    72467247
    72477248/* Line 1806 of yacc.c  */
    7248 #line 1555 "parser.yy"
     7249#line 1556 "parser.yy"
    72497250    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72507251    break;
     
    72537254
    72547255/* Line 1806 of yacc.c  */
    7255 #line 1557 "parser.yy"
     7256#line 1558 "parser.yy"
    72567257    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72577258    break;
     
    72607261
    72617262/* Line 1806 of yacc.c  */
    7262 #line 1565 "parser.yy"
     7263#line 1566 "parser.yy"
    72637264    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72647265    break;
     
    72677268
    72687269/* Line 1806 of yacc.c  */
    7269 #line 1567 "parser.yy"
     7270#line 1568 "parser.yy"
    72707271    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72717272    break;
     
    72747275
    72757276/* Line 1806 of yacc.c  */
    7276 #line 1569 "parser.yy"
     7277#line 1570 "parser.yy"
    72777278    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    72787279    break;
     
    72817282
    72827283/* Line 1806 of yacc.c  */
    7283 #line 1575 "parser.yy"
     7284#line 1576 "parser.yy"
    72847285    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72857286    break;
     
    72887289
    72897290/* Line 1806 of yacc.c  */
    7290 #line 1580 "parser.yy"
     7291#line 1581 "parser.yy"
    72917292    { (yyval.decl) = 0; }
    72927293    break;
     
    72957296
    72967297/* Line 1806 of yacc.c  */
    7297 #line 1587 "parser.yy"
     7298#line 1588 "parser.yy"
    72987299    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    72997300    break;
     
    73027303
    73037304/* Line 1806 of yacc.c  */
    7304 #line 1594 "parser.yy"
     7305#line 1595 "parser.yy"
    73057306    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    73067307    break;
     
    73097310
    73107311/* Line 1806 of yacc.c  */
    7311 #line 1596 "parser.yy"
     7312#line 1597 "parser.yy"
    73127313    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    73137314    break;
     
    73167317
    73177318/* Line 1806 of yacc.c  */
    7318 #line 1605 "parser.yy"
     7319#line 1606 "parser.yy"
    73197320    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73207321    break;
     
    73237324
    73247325/* Line 1806 of yacc.c  */
    7325 #line 1608 "parser.yy"
     7326#line 1609 "parser.yy"
    73267327    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    73277328    break;
     
    73307331
    73317332/* Line 1806 of yacc.c  */
    7332 #line 1610 "parser.yy"
     7333#line 1611 "parser.yy"
    73337334    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    73347335    break;
     
    73377338
    73387339/* Line 1806 of yacc.c  */
    7339 #line 1620 "parser.yy"
     7340#line 1621 "parser.yy"
    73407341    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73417342    break;
     
    73447345
    73457346/* Line 1806 of yacc.c  */
    7346 #line 1626 "parser.yy"
     7347#line 1627 "parser.yy"
    73477348    {
    73487349                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73547355
    73557356/* Line 1806 of yacc.c  */
    7356 #line 1631 "parser.yy"
     7357#line 1632 "parser.yy"
    73577358    {
    73587359                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    73647365
    73657366/* Line 1806 of yacc.c  */
    7366 #line 1640 "parser.yy"
     7367#line 1641 "parser.yy"
    73677368    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73687369    break;
     
    73717372
    73727373/* Line 1806 of yacc.c  */
    7373 #line 1649 "parser.yy"
     7374#line 1650 "parser.yy"
    73747375    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    73757376    break;
     
    73787379
    73797380/* Line 1806 of yacc.c  */
    7380 #line 1651 "parser.yy"
     7381#line 1652 "parser.yy"
    73817382    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    73827383    break;
     
    73857386
    73867387/* Line 1806 of yacc.c  */
    7387 #line 1676 "parser.yy"
     7388#line 1677 "parser.yy"
    73887389    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73897390    break;
     
    73927393
    73937394/* Line 1806 of yacc.c  */
    7394 #line 1684 "parser.yy"
     7395#line 1685 "parser.yy"
    73957396    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    73967397    break;
     
    73997400
    74007401/* Line 1806 of yacc.c  */
    7401 #line 1689 "parser.yy"
     7402#line 1690 "parser.yy"
    74027403    { (yyval.in) = 0; }
    74037404    break;
     
    74067407
    74077408/* Line 1806 of yacc.c  */
    7408 #line 1691 "parser.yy"
     7409#line 1692 "parser.yy"
    74097410    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    74107411    break;
     
    74137414
    74147415/* Line 1806 of yacc.c  */
    7415 #line 1693 "parser.yy"
     7416#line 1694 "parser.yy"
    74167417    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    74177418    break;
     
    74207421
    74217422/* Line 1806 of yacc.c  */
    7422 #line 1697 "parser.yy"
     7423#line 1698 "parser.yy"
    74237424    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    74247425    break;
     
    74277428
    74287429/* Line 1806 of yacc.c  */
    7429 #line 1698 "parser.yy"
     7430#line 1699 "parser.yy"
    74307431    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    74317432    break;
     
    74347435
    74357436/* Line 1806 of yacc.c  */
    7436 #line 1703 "parser.yy"
     7437#line 1704 "parser.yy"
    74377438    { (yyval.in) = 0; }
    74387439    break;
     
    74417442
    74427443/* Line 1806 of yacc.c  */
    7443 #line 1705 "parser.yy"
     7444#line 1706 "parser.yy"
    74447445    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    74457446    break;
     
    74487449
    74497450/* Line 1806 of yacc.c  */
    7450 #line 1706 "parser.yy"
     7451#line 1707 "parser.yy"
    74517452    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    74527453    break;
     
    74557456
    74567457/* Line 1806 of yacc.c  */
    7457 #line 1708 "parser.yy"
     7458#line 1709 "parser.yy"
    74587459    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    74597460    break;
     
    74627463
    74637464/* Line 1806 of yacc.c  */
    7464 #line 1724 "parser.yy"
     7465#line 1725 "parser.yy"
    74657466    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    74667467    break;
     
    74697470
    74707471/* Line 1806 of yacc.c  */
    7471 #line 1730 "parser.yy"
     7472#line 1731 "parser.yy"
    74727473    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    74737474    break;
     
    74767477
    74777478/* Line 1806 of yacc.c  */
    7478 #line 1738 "parser.yy"
     7479#line 1739 "parser.yy"
    74797480    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
    74807481    break;
     
    74837484
    74847485/* Line 1806 of yacc.c  */
    7485 #line 1740 "parser.yy"
     7486#line 1741 "parser.yy"
    74867487    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
    74877488    break;
     
    74907491
    74917492/* Line 1806 of yacc.c  */
    7492 #line 1743 "parser.yy"
     7493#line 1744 "parser.yy"
    74937494    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    74947495    break;
     
    74977498
    74987499/* Line 1806 of yacc.c  */
    7499 #line 1745 "parser.yy"
     7500#line 1746 "parser.yy"
    75007501    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    75017502    break;
     
    75047505
    75057506/* Line 1806 of yacc.c  */
    7506 #line 1747 "parser.yy"
     7507#line 1748 "parser.yy"
    75077508    { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
    75087509    break;
     
    75117512
    75127513/* Line 1806 of yacc.c  */
    7513 #line 1749 "parser.yy"
     7514#line 1750 "parser.yy"
    75147515    { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
    75157516    break;
     
    75187519
    75197520/* Line 1806 of yacc.c  */
    7520 #line 1773 "parser.yy"
     7521#line 1774 "parser.yy"
    75217522    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75227523    break;
     
    75257526
    75267527/* Line 1806 of yacc.c  */
    7527 #line 1775 "parser.yy"
     7528#line 1776 "parser.yy"
    75287529    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75297530    break;
     
    75327533
    75337534/* Line 1806 of yacc.c  */
    7534 #line 1777 "parser.yy"
     7535#line 1778 "parser.yy"
    75357536    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    75367537    break;
     
    75397540
    75407541/* Line 1806 of yacc.c  */
    7541 #line 1783 "parser.yy"
     7542#line 1784 "parser.yy"
    75427543    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    75437544    break;
     
    75467547
    75477548/* Line 1806 of yacc.c  */
    7548 #line 1785 "parser.yy"
     7549#line 1786 "parser.yy"
    75497550    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    75507551    break;
     
    75537554
    75547555/* Line 1806 of yacc.c  */
    7555 #line 1790 "parser.yy"
     7556#line 1791 "parser.yy"
    75567557    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    75577558    break;
     
    75607561
    75617562/* Line 1806 of yacc.c  */
    7562 #line 1796 "parser.yy"
     7563#line 1797 "parser.yy"
    75637564    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    75647565    break;
     
    75677568
    75687569/* Line 1806 of yacc.c  */
    7569 #line 1801 "parser.yy"
     7570#line 1802 "parser.yy"
    75707571    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    75717572    break;
     
    75747575
    75757576/* Line 1806 of yacc.c  */
    7576 #line 1803 "parser.yy"
     7577#line 1804 "parser.yy"
    75777578    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    75787579    break;
     
    75817582
    75827583/* Line 1806 of yacc.c  */
    7583 #line 1809 "parser.yy"
     7584#line 1810 "parser.yy"
    75847585    { (yyval.tclass) = DeclarationNode::Type; }
    75857586    break;
     
    75887589
    75897590/* Line 1806 of yacc.c  */
    7590 #line 1811 "parser.yy"
     7591#line 1812 "parser.yy"
    75917592    { (yyval.tclass) = DeclarationNode::Ftype; }
    75927593    break;
     
    75957596
    75967597/* Line 1806 of yacc.c  */
    7597 #line 1813 "parser.yy"
     7598#line 1814 "parser.yy"
    75987599    { (yyval.tclass) = DeclarationNode::Dtype; }
    75997600    break;
     
    76027603
    76037604/* Line 1806 of yacc.c  */
    7604 #line 1818 "parser.yy"
     7605#line 1819 "parser.yy"
    76057606    { (yyval.decl) = 0; }
    76067607    break;
     
    76097610
    76107611/* Line 1806 of yacc.c  */
    7611 #line 1820 "parser.yy"
     7612#line 1821 "parser.yy"
    76127613    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    76137614    break;
     
    76167617
    76177618/* Line 1806 of yacc.c  */
    7618 #line 1825 "parser.yy"
     7619#line 1826 "parser.yy"
    76197620    {
    76207621                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     
    76267627
    76277628/* Line 1806 of yacc.c  */
    7628 #line 1830 "parser.yy"
     7629#line 1831 "parser.yy"
    76297630    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    76307631    break;
     
    76337634
    76347635/* Line 1806 of yacc.c  */
    7635 #line 1832 "parser.yy"
     7636#line 1833 "parser.yy"
    76367637    { (yyval.decl) = 0; }
    76377638    break;
     
    76407641
    76417642/* Line 1806 of yacc.c  */
    7642 #line 1837 "parser.yy"
     7643#line 1838 "parser.yy"
    76437644    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    76447645    break;
     
    76477648
    76487649/* Line 1806 of yacc.c  */
    7649 #line 1840 "parser.yy"
     7650#line 1841 "parser.yy"
    76507651    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    76517652    break;
     
    76547655
    76557656/* Line 1806 of yacc.c  */
    7656 #line 1842 "parser.yy"
     7657#line 1843 "parser.yy"
    76577658    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    76587659    break;
     
    76617662
    76627663/* Line 1806 of yacc.c  */
    7663 #line 1847 "parser.yy"
     7664#line 1848 "parser.yy"
    76647665    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    76657666    break;
     
    76687669
    76697670/* Line 1806 of yacc.c  */
    7670 #line 1849 "parser.yy"
     7671#line 1850 "parser.yy"
    76717672    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    76727673    break;
     
    76757676
    76767677/* Line 1806 of yacc.c  */
    7677 #line 1851 "parser.yy"
     7678#line 1852 "parser.yy"
    76787679    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    76797680    break;
     
    76827683
    76837684/* Line 1806 of yacc.c  */
    7684 #line 1856 "parser.yy"
     7685#line 1857 "parser.yy"
    76857686    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    76867687    break;
     
    76897690
    76907691/* Line 1806 of yacc.c  */
    7691 #line 1858 "parser.yy"
     7692#line 1859 "parser.yy"
    76927693    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    76937694    break;
     
    76967697
    76977698/* Line 1806 of yacc.c  */
    7698 #line 1863 "parser.yy"
     7699#line 1864 "parser.yy"
    76997700    {
    77007701                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    77067707
    77077708/* Line 1806 of yacc.c  */
    7708 #line 1868 "parser.yy"
     7709#line 1869 "parser.yy"
    77097710    {
    77107711                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    77167717
    77177718/* Line 1806 of yacc.c  */
    7718 #line 1876 "parser.yy"
     7719#line 1877 "parser.yy"
    77197720    {
    77207721                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    77267727
    77277728/* Line 1806 of yacc.c  */
    7728 #line 1881 "parser.yy"
     7729#line 1882 "parser.yy"
    77297730    {
    77307731                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
     
    77367737
    77377738/* Line 1806 of yacc.c  */
    7738 #line 1886 "parser.yy"
     7739#line 1887 "parser.yy"
    77397740    {
    77407741                        typedefTable.leaveTrait();
     
    77477748
    77487749/* Line 1806 of yacc.c  */
    7749 #line 1896 "parser.yy"
     7750#line 1897 "parser.yy"
    77507751    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    77517752    break;
     
    77547755
    77557756/* Line 1806 of yacc.c  */
    7756 #line 1906 "parser.yy"
     7757#line 1907 "parser.yy"
    77577758    {
    77587759                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77647765
    77657766/* Line 1806 of yacc.c  */
    7766 #line 1911 "parser.yy"
     7767#line 1912 "parser.yy"
    77677768    {
    77687769                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77747775
    77757776/* Line 1806 of yacc.c  */
    7776 #line 1916 "parser.yy"
     7777#line 1917 "parser.yy"
    77777778    {
    77787779                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    77847785
    77857786/* Line 1806 of yacc.c  */
    7786 #line 1924 "parser.yy"
     7787#line 1925 "parser.yy"
    77877788    {
    77887789                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    77947795
    77957796/* Line 1806 of yacc.c  */
    7796 #line 1929 "parser.yy"
     7797#line 1930 "parser.yy"
    77977798    {
    77987799                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    78047805
    78057806/* Line 1806 of yacc.c  */
    7806 #line 1939 "parser.yy"
     7807#line 1940 "parser.yy"
    78077808    {}
    78087809    break;
     
    78117812
    78127813/* Line 1806 of yacc.c  */
    7813 #line 1941 "parser.yy"
     7814#line 1942 "parser.yy"
    78147815    {
    78157816                        if ( theTree ) {
     
    78247825
    78257826/* Line 1806 of yacc.c  */
    7826 #line 1953 "parser.yy"
     7827#line 1954 "parser.yy"
    78277828    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    78287829    break;
     
    78317832
    78327833/* Line 1806 of yacc.c  */
    7833 #line 1958 "parser.yy"
     7834#line 1959 "parser.yy"
    78347835    { (yyval.decl) = 0; }
    78357836    break;
     
    78387839
    78397840/* Line 1806 of yacc.c  */
    7840 #line 1966 "parser.yy"
     7841#line 1967 "parser.yy"
    78417842    {}
    78427843    break;
     
    78457846
    78467847/* Line 1806 of yacc.c  */
    7847 #line 1968 "parser.yy"
     7848#line 1969 "parser.yy"
    78487849    {
    78497850                        linkageStack.push( linkage );
     
    78557856
    78567857/* Line 1806 of yacc.c  */
    7857 #line 1973 "parser.yy"
     7858#line 1974 "parser.yy"
    78587859    {
    78597860                        linkage = linkageStack.top();
     
    78667867
    78677868/* Line 1806 of yacc.c  */
    7868 #line 1979 "parser.yy"
     7869#line 1980 "parser.yy"
    78697870    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    78707871    break;
     
    78737874
    78747875/* Line 1806 of yacc.c  */
    7875 #line 1989 "parser.yy"
     7876#line 1990 "parser.yy"
    78767877    {
    78777878                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78847885
    78857886/* Line 1806 of yacc.c  */
    7886 #line 1995 "parser.yy"
     7887#line 1996 "parser.yy"
    78877888    {
    78887889                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78957896
    78967897/* Line 1806 of yacc.c  */
    7897 #line 2004 "parser.yy"
     7898#line 2005 "parser.yy"
    78987899    {
    78997900                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79067907
    79077908/* Line 1806 of yacc.c  */
    7908 #line 2010 "parser.yy"
     7909#line 2011 "parser.yy"
    79097910    {
    79107911                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79177918
    79187919/* Line 1806 of yacc.c  */
    7919 #line 2016 "parser.yy"
     7920#line 2017 "parser.yy"
    79207921    {
    79217922                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79287929
    79297930/* Line 1806 of yacc.c  */
    7930 #line 2022 "parser.yy"
     7931#line 2023 "parser.yy"
    79317932    {
    79327933                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79397940
    79407941/* Line 1806 of yacc.c  */
    7941 #line 2028 "parser.yy"
     7942#line 2029 "parser.yy"
    79427943    {
    79437944                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79507951
    79517952/* Line 1806 of yacc.c  */
    7952 #line 2036 "parser.yy"
     7953#line 2037 "parser.yy"
    79537954    {
    79547955                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79617962
    79627963/* Line 1806 of yacc.c  */
    7963 #line 2042 "parser.yy"
     7964#line 2043 "parser.yy"
    79647965    {
    79657966                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79727973
    79737974/* Line 1806 of yacc.c  */
    7974 #line 2050 "parser.yy"
     7975#line 2051 "parser.yy"
    79757976    {
    79767977                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79837984
    79847985/* Line 1806 of yacc.c  */
    7985 #line 2056 "parser.yy"
     7986#line 2057 "parser.yy"
    79867987    {
    79877988                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    79947995
    79957996/* Line 1806 of yacc.c  */
    7996 #line 2071 "parser.yy"
     7997#line 2072 "parser.yy"
    79977998    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    79987999    break;
     
    80018002
    80028003/* Line 1806 of yacc.c  */
    8003 #line 2081 "parser.yy"
     8004#line 2082 "parser.yy"
    80048005    { (yyval.decl) = 0; }
    80058006    break;
     
    80088009
    80098010/* Line 1806 of yacc.c  */
    8010 #line 2088 "parser.yy"
     8011#line 2089 "parser.yy"
    80118012    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    80128013    break;
     
    80158016
    80168017/* Line 1806 of yacc.c  */
    8017 #line 2094 "parser.yy"
     8018#line 2095 "parser.yy"
    80188019    { (yyval.decl) = 0; }
    80198020    break;
    80208021
    80218022  case 557:
    8022 
    8023 /* Line 1806 of yacc.c  */
    8024 #line 2109 "parser.yy"
    8025     {}
    8026     break;
    8027 
    8028   case 558:
    80298023
    80308024/* Line 1806 of yacc.c  */
     
    80338027    break;
    80348028
    8035   case 559:
     8029  case 558:
    80368030
    80378031/* Line 1806 of yacc.c  */
     
    80408034    break;
    80418035
    8042   case 560:
     8036  case 559:
    80438037
    80448038/* Line 1806 of yacc.c  */
     
    80478041    break;
    80488042
     8043  case 560:
     8044
     8045/* Line 1806 of yacc.c  */
     8046#line 2113 "parser.yy"
     8047    {}
     8048    break;
     8049
    80498050  case 561:
    80508051
    80518052/* Line 1806 of yacc.c  */
    8052 #line 2147 "parser.yy"
     8053#line 2148 "parser.yy"
    80538054    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80548055    break;
     
    80578058
    80588059/* Line 1806 of yacc.c  */
    8059 #line 2150 "parser.yy"
     8060#line 2151 "parser.yy"
    80608061    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80618062    break;
     
    80648065
    80658066/* Line 1806 of yacc.c  */
    8066 #line 2152 "parser.yy"
     8067#line 2153 "parser.yy"
    80678068    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80688069    break;
     
    80718072
    80728073/* Line 1806 of yacc.c  */
    8073 #line 2157 "parser.yy"
     8074#line 2158 "parser.yy"
    80748075    {
    80758076                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    80818082
    80828083/* Line 1806 of yacc.c  */
    8083 #line 2162 "parser.yy"
     8084#line 2163 "parser.yy"
    80848085    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80858086    break;
     
    80888089
    80898090/* Line 1806 of yacc.c  */
    8090 #line 2167 "parser.yy"
     8091#line 2168 "parser.yy"
    80918092    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80928093    break;
     
    80958096
    80968097/* Line 1806 of yacc.c  */
    8097 #line 2169 "parser.yy"
     8098#line 2170 "parser.yy"
    80988099    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80998100    break;
     
    81028103
    81038104/* Line 1806 of yacc.c  */
    8104 #line 2171 "parser.yy"
     8105#line 2172 "parser.yy"
    81058106    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81068107    break;
     
    81098110
    81108111/* Line 1806 of yacc.c  */
    8111 #line 2176 "parser.yy"
     8112#line 2177 "parser.yy"
    81128113    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    81138114    break;
     
    81168117
    81178118/* Line 1806 of yacc.c  */
    8118 #line 2178 "parser.yy"
     8119#line 2179 "parser.yy"
    81198120    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81208121    break;
     
    81238124
    81248125/* Line 1806 of yacc.c  */
    8125 #line 2180 "parser.yy"
     8126#line 2181 "parser.yy"
    81268127    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81278128    break;
     
    81308131
    81318132/* Line 1806 of yacc.c  */
    8132 #line 2182 "parser.yy"
     8133#line 2183 "parser.yy"
    81338134    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81348135    break;
     
    81378138
    81388139/* Line 1806 of yacc.c  */
    8139 #line 2187 "parser.yy"
     8140#line 2188 "parser.yy"
    81408141    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81418142    break;
     
    81448145
    81458146/* Line 1806 of yacc.c  */
    8146 #line 2189 "parser.yy"
     8147#line 2190 "parser.yy"
    81478148    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81488149    break;
     
    81518152
    81528153/* Line 1806 of yacc.c  */
    8153 #line 2199 "parser.yy"
     8154#line 2200 "parser.yy"
    81548155    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81558156    break;
     
    81588159
    81598160/* Line 1806 of yacc.c  */
    8160 #line 2202 "parser.yy"
     8161#line 2203 "parser.yy"
    81618162    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81628163    break;
     
    81658166
    81668167/* Line 1806 of yacc.c  */
    8167 #line 2207 "parser.yy"
     8168#line 2208 "parser.yy"
    81688169    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    81698170    break;
     
    81728173
    81738174/* Line 1806 of yacc.c  */
    8174 #line 2209 "parser.yy"
     8175#line 2210 "parser.yy"
    81758176    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    81768177    break;
     
    81798180
    81808181/* Line 1806 of yacc.c  */
    8181 #line 2211 "parser.yy"
     8182#line 2212 "parser.yy"
    81828183    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81838184    break;
     
    81868187
    81878188/* Line 1806 of yacc.c  */
    8188 #line 2216 "parser.yy"
     8189#line 2217 "parser.yy"
    81898190    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81908191    break;
     
    81938194
    81948195/* Line 1806 of yacc.c  */
    8195 #line 2218 "parser.yy"
     8196#line 2219 "parser.yy"
    81968197    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81978198    break;
     
    82008201
    82018202/* Line 1806 of yacc.c  */
    8202 #line 2220 "parser.yy"
     8203#line 2221 "parser.yy"
    82038204    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82048205    break;
     
    82078208
    82088209/* Line 1806 of yacc.c  */
    8209 #line 2225 "parser.yy"
     8210#line 2226 "parser.yy"
    82108211    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82118212    break;
     
    82148215
    82158216/* Line 1806 of yacc.c  */
    8216 #line 2227 "parser.yy"
     8217#line 2228 "parser.yy"
    82178218    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82188219    break;
     
    82218222
    82228223/* Line 1806 of yacc.c  */
    8223 #line 2229 "parser.yy"
     8224#line 2230 "parser.yy"
    82248225    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82258226    break;
     
    82288229
    82298230/* Line 1806 of yacc.c  */
    8230 #line 2244 "parser.yy"
     8231#line 2245 "parser.yy"
    82318232    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    82328233    break;
     
    82358236
    82368237/* Line 1806 of yacc.c  */
    8237 #line 2246 "parser.yy"
     8238#line 2247 "parser.yy"
    82388239    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    82398240    break;
     
    82428243
    82438244/* Line 1806 of yacc.c  */
    8244 #line 2248 "parser.yy"
     8245#line 2249 "parser.yy"
    82458246    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82468247    break;
     
    82498250
    82508251/* Line 1806 of yacc.c  */
    8251 #line 2253 "parser.yy"
     8252#line 2254 "parser.yy"
    82528253    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82538254    break;
     
    82568257
    82578258/* Line 1806 of yacc.c  */
    8258 #line 2255 "parser.yy"
     8259#line 2256 "parser.yy"
    82598260    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82608261    break;
     
    82638264
    82648265/* Line 1806 of yacc.c  */
    8265 #line 2257 "parser.yy"
     8266#line 2258 "parser.yy"
    82668267    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82678268    break;
     
    82708271
    82718272/* Line 1806 of yacc.c  */
    8272 #line 2262 "parser.yy"
     8273#line 2263 "parser.yy"
    82738274    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82748275    break;
     
    82778278
    82788279/* Line 1806 of yacc.c  */
    8279 #line 2264 "parser.yy"
     8280#line 2265 "parser.yy"
    82808281    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82818282    break;
     
    82848285
    82858286/* Line 1806 of yacc.c  */
    8286 #line 2266 "parser.yy"
     8287#line 2267 "parser.yy"
    82878288    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82888289    break;
     
    82918292
    82928293/* Line 1806 of yacc.c  */
    8293 #line 2281 "parser.yy"
     8294#line 2282 "parser.yy"
    82948295    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82958296    break;
     
    82988299
    82998300/* Line 1806 of yacc.c  */
    8300 #line 2284 "parser.yy"
     8301#line 2285 "parser.yy"
    83018302    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83028303    break;
     
    83058306
    83068307/* Line 1806 of yacc.c  */
    8307 #line 2286 "parser.yy"
     8308#line 2287 "parser.yy"
    83088309    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83098310    break;
     
    83128313
    83138314/* Line 1806 of yacc.c  */
    8314 #line 2292 "parser.yy"
     8315#line 2293 "parser.yy"
    83158316    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83168317    break;
     
    83198320
    83208321/* Line 1806 of yacc.c  */
    8321 #line 2297 "parser.yy"
     8322#line 2298 "parser.yy"
    83228323    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    83238324    break;
     
    83268327
    83278328/* Line 1806 of yacc.c  */
    8328 #line 2299 "parser.yy"
     8329#line 2300 "parser.yy"
    83298330    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    83308331    break;
     
    83338334
    83348335/* Line 1806 of yacc.c  */
    8335 #line 2301 "parser.yy"
     8336#line 2302 "parser.yy"
    83368337    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83378338    break;
     
    83408341
    83418342/* Line 1806 of yacc.c  */
    8342 #line 2306 "parser.yy"
     8343#line 2307 "parser.yy"
    83438344    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83448345    break;
     
    83478348
    83488349/* Line 1806 of yacc.c  */
    8349 #line 2308 "parser.yy"
     8350#line 2309 "parser.yy"
    83508351    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83518352    break;
     
    83548355
    83558356/* Line 1806 of yacc.c  */
    8356 #line 2310 "parser.yy"
     8357#line 2311 "parser.yy"
    83578358    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83588359    break;
     
    83618362
    83628363/* Line 1806 of yacc.c  */
    8363 #line 2312 "parser.yy"
     8364#line 2313 "parser.yy"
    83648365    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83658366    break;
     
    83688369
    83698370/* Line 1806 of yacc.c  */
    8370 #line 2317 "parser.yy"
     8371#line 2318 "parser.yy"
    83718372    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83728373    break;
     
    83758376
    83768377/* Line 1806 of yacc.c  */
    8377 #line 2319 "parser.yy"
     8378#line 2320 "parser.yy"
    83788379    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83798380    break;
     
    83828383
    83838384/* Line 1806 of yacc.c  */
    8384 #line 2321 "parser.yy"
     8385#line 2322 "parser.yy"
    83858386    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83868387    break;
     
    83898390
    83908391/* Line 1806 of yacc.c  */
    8391 #line 2331 "parser.yy"
     8392#line 2332 "parser.yy"
    83928393    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83938394    break;
     
    83968397
    83978398/* Line 1806 of yacc.c  */
    8398 #line 2334 "parser.yy"
     8399#line 2335 "parser.yy"
    83998400    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84008401    break;
     
    84038404
    84048405/* Line 1806 of yacc.c  */
    8405 #line 2336 "parser.yy"
     8406#line 2337 "parser.yy"
    84068407    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84078408    break;
     
    84108411
    84118412/* Line 1806 of yacc.c  */
    8412 #line 2341 "parser.yy"
     8413#line 2342 "parser.yy"
    84138414    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84148415    break;
     
    84178418
    84188419/* Line 1806 of yacc.c  */
    8419 #line 2343 "parser.yy"
     8420#line 2344 "parser.yy"
    84208421    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84218422    break;
     
    84248425
    84258426/* Line 1806 of yacc.c  */
    8426 #line 2345 "parser.yy"
     8427#line 2346 "parser.yy"
    84278428    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84288429    break;
     
    84318432
    84328433/* Line 1806 of yacc.c  */
    8433 #line 2350 "parser.yy"
     8434#line 2351 "parser.yy"
    84348435    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84358436    break;
     
    84388439
    84398440/* Line 1806 of yacc.c  */
    8440 #line 2352 "parser.yy"
     8441#line 2353 "parser.yy"
    84418442    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84428443    break;
     
    84458446
    84468447/* Line 1806 of yacc.c  */
    8447 #line 2354 "parser.yy"
     8448#line 2355 "parser.yy"
    84488449    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84498450    break;
     
    84528453
    84538454/* Line 1806 of yacc.c  */
    8454 #line 2356 "parser.yy"
     8455#line 2357 "parser.yy"
    84558456    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84568457    break;
     
    84598460
    84608461/* Line 1806 of yacc.c  */
    8461 #line 2361 "parser.yy"
     8462#line 2362 "parser.yy"
    84628463    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84638464    break;
     
    84668467
    84678468/* Line 1806 of yacc.c  */
    8468 #line 2363 "parser.yy"
     8469#line 2364 "parser.yy"
    84698470    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84708471    break;
     
    84738474
    84748475/* Line 1806 of yacc.c  */
    8475 #line 2365 "parser.yy"
     8476#line 2366 "parser.yy"
    84768477    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84778478    break;
     
    84808481
    84818482/* Line 1806 of yacc.c  */
    8482 #line 2396 "parser.yy"
     8483#line 2397 "parser.yy"
    84838484    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84848485    break;
     
    84878488
    84888489/* Line 1806 of yacc.c  */
    8489 #line 2399 "parser.yy"
     8490#line 2400 "parser.yy"
    84908491    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84918492    break;
     
    84948495
    84958496/* Line 1806 of yacc.c  */
    8496 #line 2401 "parser.yy"
     8497#line 2402 "parser.yy"
    84978498    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84988499    break;
     
    85018502
    85028503/* Line 1806 of yacc.c  */
    8503 #line 2406 "parser.yy"
     8504#line 2407 "parser.yy"
    85048505    {
    85058506                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85118512
    85128513/* Line 1806 of yacc.c  */
    8513 #line 2411 "parser.yy"
     8514#line 2412 "parser.yy"
    85148515    {
    85158516                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    85218522
    85228523/* Line 1806 of yacc.c  */
    8523 #line 2419 "parser.yy"
     8524#line 2420 "parser.yy"
    85248525    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    85258526    break;
     
    85288529
    85298530/* Line 1806 of yacc.c  */
    8530 #line 2421 "parser.yy"
     8531#line 2422 "parser.yy"
    85318532    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    85328533    break;
     
    85358536
    85368537/* Line 1806 of yacc.c  */
    8537 #line 2423 "parser.yy"
     8538#line 2424 "parser.yy"
    85388539    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85398540    break;
     
    85428543
    85438544/* Line 1806 of yacc.c  */
    8544 #line 2428 "parser.yy"
     8545#line 2429 "parser.yy"
    85458546    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    85468547    break;
     
    85498550
    85508551/* Line 1806 of yacc.c  */
    8551 #line 2430 "parser.yy"
     8552#line 2431 "parser.yy"
    85528553    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85538554    break;
     
    85568557
    85578558/* Line 1806 of yacc.c  */
    8558 #line 2435 "parser.yy"
     8559#line 2436 "parser.yy"
    85598560    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    85608561    break;
     
    85638564
    85648565/* Line 1806 of yacc.c  */
    8565 #line 2437 "parser.yy"
     8566#line 2438 "parser.yy"
    85668567    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85678568    break;
     
    85708571
    85718572/* Line 1806 of yacc.c  */
    8572 #line 2452 "parser.yy"
     8573#line 2453 "parser.yy"
    85738574    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85748575    break;
     
    85778578
    85788579/* Line 1806 of yacc.c  */
    8579 #line 2454 "parser.yy"
     8580#line 2455 "parser.yy"
    85808581    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85818582    break;
     
    85848585
    85858586/* Line 1806 of yacc.c  */
    8586 #line 2459 "parser.yy"
     8587#line 2460 "parser.yy"
    85878588    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85888589    break;
     
    85918592
    85928593/* Line 1806 of yacc.c  */
    8593 #line 2461 "parser.yy"
     8594#line 2462 "parser.yy"
    85948595    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    85958596    break;
     
    85988599
    85998600/* Line 1806 of yacc.c  */
    8600 #line 2463 "parser.yy"
     8601#line 2464 "parser.yy"
    86018602    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86028603    break;
     
    86058606
    86068607/* Line 1806 of yacc.c  */
    8607 #line 2465 "parser.yy"
     8608#line 2466 "parser.yy"
    86088609    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86098610    break;
     
    86128613
    86138614/* Line 1806 of yacc.c  */
    8614 #line 2467 "parser.yy"
     8615#line 2468 "parser.yy"
    86158616    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86168617    break;
     
    86198620
    86208621/* Line 1806 of yacc.c  */
    8621 #line 2473 "parser.yy"
     8622#line 2474 "parser.yy"
    86228623    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86238624    break;
     
    86268627
    86278628/* Line 1806 of yacc.c  */
    8628 #line 2475 "parser.yy"
     8629#line 2476 "parser.yy"
    86298630    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86308631    break;
     
    86338634
    86348635/* Line 1806 of yacc.c  */
    8635 #line 2477 "parser.yy"
     8636#line 2478 "parser.yy"
    86368637    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86378638    break;
     
    86408641
    86418642/* Line 1806 of yacc.c  */
    8642 #line 2482 "parser.yy"
     8643#line 2483 "parser.yy"
    86438644    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    86448645    break;
     
    86478648
    86488649/* Line 1806 of yacc.c  */
    8649 #line 2484 "parser.yy"
     8650#line 2485 "parser.yy"
    86508651    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86518652    break;
     
    86548655
    86558656/* Line 1806 of yacc.c  */
    8656 #line 2486 "parser.yy"
     8657#line 2487 "parser.yy"
    86578658    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86588659    break;
     
    86618662
    86628663/* Line 1806 of yacc.c  */
    8663 #line 2492 "parser.yy"
     8664#line 2493 "parser.yy"
    86648665    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86658666    break;
     
    86688669
    86698670/* Line 1806 of yacc.c  */
    8670 #line 2494 "parser.yy"
     8671#line 2495 "parser.yy"
    86718672    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    86728673    break;
     
    86758676
    86768677/* Line 1806 of yacc.c  */
    8677 #line 2500 "parser.yy"
     8678#line 2501 "parser.yy"
    86788679    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    86798680    break;
     
    86828683
    86838684/* Line 1806 of yacc.c  */
    8684 #line 2502 "parser.yy"
     8685#line 2503 "parser.yy"
    86858686    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    86868687    break;
     
    86898690
    86908691/* Line 1806 of yacc.c  */
    8691 #line 2504 "parser.yy"
     8692#line 2505 "parser.yy"
    86928693    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    86938694    break;
     
    86968697
    86978698/* Line 1806 of yacc.c  */
    8698 #line 2506 "parser.yy"
     8699#line 2507 "parser.yy"
    86998700    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    87008701    break;
     
    87038704
    87048705/* Line 1806 of yacc.c  */
    8705 #line 2521 "parser.yy"
     8706#line 2522 "parser.yy"
    87068707    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87078708    break;
     
    87108711
    87118712/* Line 1806 of yacc.c  */
    8712 #line 2523 "parser.yy"
     8713#line 2524 "parser.yy"
    87138714    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87148715    break;
     
    87178718
    87188719/* Line 1806 of yacc.c  */
    8719 #line 2528 "parser.yy"
     8720#line 2529 "parser.yy"
    87208721    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    87218722    break;
     
    87248725
    87258726/* Line 1806 of yacc.c  */
    8726 #line 2530 "parser.yy"
     8727#line 2531 "parser.yy"
    87278728    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87288729    break;
     
    87318732
    87328733/* Line 1806 of yacc.c  */
    8733 #line 2532 "parser.yy"
     8734#line 2533 "parser.yy"
    87348735    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87358736    break;
     
    87388739
    87398740/* Line 1806 of yacc.c  */
    8740 #line 2534 "parser.yy"
     8741#line 2535 "parser.yy"
    87418742    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87428743    break;
     
    87458746
    87468747/* Line 1806 of yacc.c  */
    8747 #line 2536 "parser.yy"
     8748#line 2537 "parser.yy"
    87488749    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87498750    break;
     
    87528753
    87538754/* Line 1806 of yacc.c  */
    8754 #line 2542 "parser.yy"
     8755#line 2543 "parser.yy"
    87558756    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87568757    break;
     
    87598760
    87608761/* Line 1806 of yacc.c  */
    8761 #line 2544 "parser.yy"
     8762#line 2545 "parser.yy"
    87628763    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87638764    break;
     
    87668767
    87678768/* Line 1806 of yacc.c  */
    8768 #line 2546 "parser.yy"
     8769#line 2547 "parser.yy"
    87698770    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87708771    break;
     
    87738774
    87748775/* Line 1806 of yacc.c  */
    8775 #line 2551 "parser.yy"
     8776#line 2552 "parser.yy"
    87768777    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    87778778    break;
     
    87808781
    87818782/* Line 1806 of yacc.c  */
    8782 #line 2553 "parser.yy"
     8783#line 2554 "parser.yy"
    87838784    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87848785    break;
     
    87878788
    87888789/* Line 1806 of yacc.c  */
    8789 #line 2555 "parser.yy"
     8790#line 2556 "parser.yy"
    87908791    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87918792    break;
     
    87948795
    87958796/* Line 1806 of yacc.c  */
    8796 #line 2562 "parser.yy"
     8797#line 2563 "parser.yy"
    87978798    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    87988799    break;
     
    88018802
    88028803/* Line 1806 of yacc.c  */
    8803 #line 2573 "parser.yy"
     8804#line 2574 "parser.yy"
    88048805    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    88058806    break;
     
    88088809
    88098810/* Line 1806 of yacc.c  */
    8810 #line 2576 "parser.yy"
     8811#line 2577 "parser.yy"
    88118812    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    88128813    break;
     
    88158816
    88168817/* Line 1806 of yacc.c  */
    8817 #line 2578 "parser.yy"
     8818#line 2579 "parser.yy"
    88188819    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    88198820    break;
     
    88228823
    88238824/* Line 1806 of yacc.c  */
    8824 #line 2581 "parser.yy"
     8825#line 2582 "parser.yy"
    88258826    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    88268827    break;
     
    88298830
    88308831/* Line 1806 of yacc.c  */
    8831 #line 2583 "parser.yy"
     8832#line 2584 "parser.yy"
    88328833    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    88338834    break;
     
    88368837
    88378838/* Line 1806 of yacc.c  */
    8838 #line 2585 "parser.yy"
     8839#line 2586 "parser.yy"
    88398840    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    88408841    break;
     
    88438844
    88448845/* Line 1806 of yacc.c  */
    8845 #line 2599 "parser.yy"
     8846#line 2600 "parser.yy"
    88468847    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88478848    break;
     
    88508851
    88518852/* Line 1806 of yacc.c  */
    8852 #line 2601 "parser.yy"
     8853#line 2602 "parser.yy"
    88538854    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    88548855    break;
     
    88578858
    88588859/* Line 1806 of yacc.c  */
    8859 #line 2606 "parser.yy"
     8860#line 2607 "parser.yy"
    88608861    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    88618862    break;
     
    88648865
    88658866/* Line 1806 of yacc.c  */
    8866 #line 2608 "parser.yy"
     8867#line 2609 "parser.yy"
    88678868    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    88688869    break;
     
    88718872
    88728873/* Line 1806 of yacc.c  */
    8873 #line 2610 "parser.yy"
     8874#line 2611 "parser.yy"
    88748875    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    88758876    break;
     
    88788879
    88798880/* Line 1806 of yacc.c  */
    8880 #line 2612 "parser.yy"
     8881#line 2613 "parser.yy"
    88818882    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    88828883    break;
     
    88858886
    88868887/* Line 1806 of yacc.c  */
    8887 #line 2614 "parser.yy"
     8888#line 2615 "parser.yy"
    88888889    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88898890    break;
     
    88928893
    88938894/* Line 1806 of yacc.c  */
    8894 #line 2620 "parser.yy"
     8895#line 2621 "parser.yy"
    88958896    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    88968897    break;
     
    88998900
    89008901/* Line 1806 of yacc.c  */
    8901 #line 2622 "parser.yy"
     8902#line 2623 "parser.yy"
    89028903    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    89038904    break;
     
    89068907
    89078908/* Line 1806 of yacc.c  */
    8908 #line 2624 "parser.yy"
     8909#line 2625 "parser.yy"
    89098910    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    89108911    break;
     
    89138914
    89148915/* Line 1806 of yacc.c  */
    8915 #line 2629 "parser.yy"
     8916#line 2630 "parser.yy"
    89168917    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    89178918    break;
     
    89208921
    89218922/* Line 1806 of yacc.c  */
    8922 #line 2631 "parser.yy"
     8923#line 2632 "parser.yy"
    89238924    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    89248925    break;
     
    89278928
    89288929/* Line 1806 of yacc.c  */
    8929 #line 2641 "parser.yy"
     8930#line 2642 "parser.yy"
    89308931    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89318932    break;
     
    89348935
    89358936/* Line 1806 of yacc.c  */
    8936 #line 2651 "parser.yy"
     8937#line 2652 "parser.yy"
    89378938    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89388939    break;
     
    89418942
    89428943/* Line 1806 of yacc.c  */
    8943 #line 2653 "parser.yy"
     8944#line 2654 "parser.yy"
    89448945    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89458946    break;
     
    89488949
    89498950/* Line 1806 of yacc.c  */
    8950 #line 2655 "parser.yy"
     8951#line 2656 "parser.yy"
    89518952    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89528953    break;
     
    89558956
    89568957/* Line 1806 of yacc.c  */
    8957 #line 2657 "parser.yy"
     8958#line 2658 "parser.yy"
    89588959    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89598960    break;
     
    89628963
    89638964/* Line 1806 of yacc.c  */
    8964 #line 2659 "parser.yy"
     8965#line 2660 "parser.yy"
    89658966    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89668967    break;
     
    89698970
    89708971/* Line 1806 of yacc.c  */
    8971 #line 2661 "parser.yy"
     8972#line 2662 "parser.yy"
    89728973    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89738974    break;
     
    89768977
    89778978/* Line 1806 of yacc.c  */
    8978 #line 2668 "parser.yy"
     8979#line 2669 "parser.yy"
    89798980    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89808981    break;
     
    89838984
    89848985/* Line 1806 of yacc.c  */
    8985 #line 2670 "parser.yy"
     8986#line 2671 "parser.yy"
    89868987    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89878988    break;
     
    89908991
    89918992/* Line 1806 of yacc.c  */
    8992 #line 2672 "parser.yy"
     8993#line 2673 "parser.yy"
    89938994    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89948995    break;
     
    89978998
    89988999/* Line 1806 of yacc.c  */
    8999 #line 2674 "parser.yy"
     9000#line 2675 "parser.yy"
    90009001    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    90019002    break;
     
    90049005
    90059006/* Line 1806 of yacc.c  */
    9006 #line 2676 "parser.yy"
     9007#line 2677 "parser.yy"
    90079008    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90089009    break;
     
    90119012
    90129013/* Line 1806 of yacc.c  */
    9013 #line 2678 "parser.yy"
     9014#line 2679 "parser.yy"
    90149015    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90159016    break;
     
    90189019
    90199020/* Line 1806 of yacc.c  */
    9020 #line 2680 "parser.yy"
     9021#line 2681 "parser.yy"
    90219022    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90229023    break;
     
    90259026
    90269027/* Line 1806 of yacc.c  */
    9027 #line 2682 "parser.yy"
     9028#line 2683 "parser.yy"
    90289029    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90299030    break;
     
    90329033
    90339034/* Line 1806 of yacc.c  */
    9034 #line 2684 "parser.yy"
     9035#line 2685 "parser.yy"
    90359036    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    90369037    break;
     
    90399040
    90409041/* Line 1806 of yacc.c  */
    9041 #line 2686 "parser.yy"
     9042#line 2687 "parser.yy"
    90429043    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90439044    break;
     
    90469047
    90479048/* Line 1806 of yacc.c  */
    9048 #line 2691 "parser.yy"
     9049#line 2692 "parser.yy"
    90499050    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    90509051    break;
     
    90539054
    90549055/* Line 1806 of yacc.c  */
    9055 #line 2693 "parser.yy"
     9056#line 2694 "parser.yy"
    90569057    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    90579058    break;
     
    90609061
    90619062/* Line 1806 of yacc.c  */
    9062 #line 2698 "parser.yy"
     9063#line 2699 "parser.yy"
    90639064    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    90649065    break;
     
    90679068
    90689069/* Line 1806 of yacc.c  */
    9069 #line 2700 "parser.yy"
     9070#line 2701 "parser.yy"
    90709071    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    90719072    break;
     
    90749075
    90759076/* Line 1806 of yacc.c  */
    9076 #line 2727 "parser.yy"
     9077#line 2728 "parser.yy"
    90779078    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    90789079    break;
     
    90819082
    90829083/* Line 1806 of yacc.c  */
    9083 #line 2738 "parser.yy"
     9084#line 2739 "parser.yy"
    90849085    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90859086    break;
     
    90889089
    90899090/* Line 1806 of yacc.c  */
    9090 #line 2740 "parser.yy"
     9091#line 2741 "parser.yy"
    90919092    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    90929093    break;
     
    90959096
    90969097/* Line 1806 of yacc.c  */
    9097 #line 2742 "parser.yy"
     9098#line 2743 "parser.yy"
    90989099    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    90999100    break;
     
    91029103
    91039104/* Line 1806 of yacc.c  */
    9104 #line 2744 "parser.yy"
     9105#line 2745 "parser.yy"
    91059106    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91069107    break;
     
    91099110
    91109111/* Line 1806 of yacc.c  */
    9111 #line 2746 "parser.yy"
     9112#line 2747 "parser.yy"
    91129113    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    91139114    break;
     
    91169117
    91179118/* Line 1806 of yacc.c  */
    9118 #line 2748 "parser.yy"
     9119#line 2749 "parser.yy"
    91199120    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    91209121    break;
     
    91239124
    91249125/* Line 1806 of yacc.c  */
    9125 #line 2755 "parser.yy"
     9126#line 2756 "parser.yy"
    91269127    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    91279128    break;
     
    91309131
    91319132/* Line 1806 of yacc.c  */
    9132 #line 2757 "parser.yy"
     9133#line 2758 "parser.yy"
    91339134    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    91349135    break;
     
    91379138
    91389139/* Line 1806 of yacc.c  */
    9139 #line 2759 "parser.yy"
     9140#line 2760 "parser.yy"
    91409141    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91419142    break;
     
    91449145
    91459146/* Line 1806 of yacc.c  */
    9146 #line 2761 "parser.yy"
     9147#line 2762 "parser.yy"
    91479148    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    91489149    break;
     
    91519152
    91529153/* Line 1806 of yacc.c  */
    9153 #line 2763 "parser.yy"
     9154#line 2764 "parser.yy"
    91549155    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    91559156    break;
     
    91589159
    91599160/* Line 1806 of yacc.c  */
    9160 #line 2765 "parser.yy"
     9161#line 2766 "parser.yy"
    91619162    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    91629163    break;
     
    91659166
    91669167/* Line 1806 of yacc.c  */
    9167 #line 2770 "parser.yy"
     9168#line 2771 "parser.yy"
    91689169    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    91699170    break;
     
    91729173
    91739174/* Line 1806 of yacc.c  */
    9174 #line 2775 "parser.yy"
     9175#line 2776 "parser.yy"
    91759176    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    91769177    break;
     
    91799180
    91809181/* Line 1806 of yacc.c  */
    9181 #line 2777 "parser.yy"
     9182#line 2778 "parser.yy"
    91829183    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91839184    break;
     
    91869187
    91879188/* Line 1806 of yacc.c  */
    9188 #line 2779 "parser.yy"
     9189#line 2780 "parser.yy"
    91899190    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    91909191    break;
     
    91939194
    91949195/* Line 1806 of yacc.c  */
    9195 #line 2803 "parser.yy"
     9196#line 2804 "parser.yy"
    91969197    { (yyval.en) = 0; }
    91979198    break;
     
    92009201
    92019202/* Line 1806 of yacc.c  */
    9202 #line 2805 "parser.yy"
     9203#line 2806 "parser.yy"
    92039204    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    92049205    break;
     
    92079208
    92089209/* Line 1806 of yacc.c  */
    9209 #line 9210 "Parser/parser.cc"
     9210#line 9211 "Parser/parser.cc"
    92109211      default: break;
    92119212    }
     
    94389439
    94399440/* Line 2067 of yacc.c  */
    9440 #line 2808 "parser.yy"
     9441#line 2809 "parser.yy"
    94419442
    94429443// ----end of grammar----
Note: See TracChangeset for help on using the changeset viewer.